Know your tools

In my experience, I find that the following three statements define a professional software engineer:

  • Know the correct technology to build a software solution (build the thing right).
  • Understand the correct business problem (build the right thing).
  • Build the solution on budget and time.

In this post, I outline the first and essential part of software engineering: knowing your tools.

Continue reading Know your tools

Impact mapping for software developers – solve the right business problems

At any given time you probably have a couple of tasks that you are working on at your current job. Can you confidently say that you have a clear understanding why these tasks are important? Alternatively, can you say that you know how these tasks contribute to any of the goals of your organization?

I rarely asked these questions at the beginning of my career. I just did what dropped in my queue. However, one day the circumstances put me in a position of a team lead. Therefore, it became my responsibility to decide what tasks we pick and drop.

That is where I realized how easy it is for a developer to just grind in the routine of busy work. As you know, busy work does not make you a successful developer. You become successful by making your team or organization reach their goals.

Read on, and you will learn a powerful technique. The technique that you can use to make an impact and become more successful in your engineering career.

Continue reading Impact mapping for software developers – solve the right business problems

Eliminate constraints

In previous posts we learned that a professional software engineer has to know 3 things:

  1. Technology (how to build a solution).
  2. Business (the problem you’re trying to solve).
  3. Process (how to build and deliver the solution efficiently).

We learned that an efficient process requires continuous delivery and an agile framework. In this post, you will learn the last piece of the puzzle which is about eliminating constraints.

Continue reading Eliminate constraints

Use agile framework

You can hire best engineers. You can show them what business problems you are trying to solve. However, if they cannot deliver result efficiently, none of this will matter.

This post is an introduction to agile software development. You will learn:

  • How organizations built software before agile.
  • Why agile is better.
  • What is Scrum and how it works?
  • How your team can use Kanban to build software faster.

Continue reading Use agile framework

Create continuous delivery

Successful developers do three things well:

  1. They know the technology.
  2. They understand the business problem.
  3. They deliver the solution on budget and on time.

In previous posts, we learned about technology and business. With that, you can figure out what business problem you’re trying to solve and how to solve it. The next step is to build and deliver the product as fast as possible. Continuous delivery plays a crucial role in achieving this goal.

Continue reading Create continuous delivery

Set goals

To become a successful developer you need to consistently set goals. This includes both personal development and projects at your work.

But that’s not as easy as it seems at a first glance. I remember the first time when I had to fill out my quarterly goals at Acquia. I had no idea what to put on that list. So I came up with things such as get better at PHP or learn about Scrum. I knew something wasn’t right until I read “the 7 Habits of Highly Effective People”.

Continue reading Set goals

Understand your business domain

Business domainBuilding software without knowing the business domain is like trying to build a factory without knowing its purpose. You might built shiniest most beautiful factory. But for the most part it will be useless.

Companies hire software developers to solve their business problems. Therefore, a developer should know at least some of the business in order to build an effective solution.

Continue reading Understand your business domain

Know your technology stack

In my view, most successful developers are the ones who know their technologies, business/organizational goals and delivery process optimization. Therefore they know how to build a thing, make sure that it solves a correct problem and do it efficiently.

In this post, I’ll brush over the technology part of being a successful developer, specifically, knowing your technology stack.

Read on, and you’ll learn:

Continue reading Know your technology stack

Notes on good software architecture

software architectureUnderstanding software architecture is an essential skill. It allows creating solutions that evolve the system. Otherwise, it’s too easy to drive it into a swamp from which it never recovers.

Read on, and you will learn:

  • why it is essential to understand software architecture
  • how to improve understanding of a software architecture
  • how to design and sustain good software architecture

Continue reading Notes on good software architecture

7 essential command line skills for a professional developer

These essential command line skills will help you get more productive with the terminal by utilizing only native features. It will help you to brush up on basics if you are already familiar with command line. Note that these tips more fitted for Mac/Linux command line.

Continue reading 7 essential command line skills for a professional developer