What Makes a Good Developer Great

A few steps towards professional growth

Dmytro Khmelenko
Life at Freeletics
4 min readOct 3, 2020

--

Photo by Ruffa Jane Reyes on Unsplash

At some point, every software developer reaches a superior level in writing code. They are able to implement any logic and deliver results to clients. This could be enough for some time. However, later each of them faces trouble with progressing further in their career. The struggle can be real and they need somebody to show them potential next steps. I gathered a few action items to take in order to boost engineering skills. I hope you can find something for you.

Following agile methodologies

The days of the Waterfall are gone. Agile methodologies are the common way of delivering projects in the software industry. No matter what you stick to (Agile, Scrum, or Kanban), you still get many advantages compared to the Waterfall approach.

Why is it like that? The point is that the software development industry grew up over time. The key to building software is to have short iterations and ship fast. It is hard to predict how much users will like and use the product you built. It makes sense to adapt it based on constant user research and feedback. In the situation of Waterfall when everything needs to be planned well in advance, then execution phase and following the integration phase. It can be already too late when you discover that clients do not really need your solution.

For developers, it could be hard to accept the fact that there is no exact timeline for implementation and for testing. Developers need to learn how to adapt quickly to the changes every iteration. That can lead to some frustration as it is not always possible to keep the code clean in such an environment. The fact is that the code will never be perfect and that the value of the delivered product has a bigger impact than the shiny code. Once you accept it and learn to be more flexible, it will be easier to build new features and satisfy users. If you want to discover more about it, search for Product Thinking. I’m sure you find something new.

Design patterns

Once a person learns how to code, the confidence level increases. All problems seem to be solvable. But it might be misleading and not enough.

I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.

- Abraham Maslow

Applying design patterns is a powerful approach in the software industry nowadays. Spend some time to master at least a few most popular patterns. For example, Observer, Factory, Singleton, Facade. In fact, there are many of them. With a proper application of design patterns, final solutions become solid and scalable. It is easier to maintain the code. As many patterns are recognizable by developers, it helps others to navigate through the code faster and extend it.

The very well-known book is Design Patterns from the “gang of four”. It describes many different patterns and situations to apply them. Every developer must read it.

Code review

Photo by John Schnobrich on Unsplash

Code review is a great approach successfully adopted in the industry. The only prerequisite is that it is teamwork. In case you are a single developer, unfortunately, this is not suitable for you.

It helps to look at the result of your work from the other side. Code reviews help to ensure that developers didn’t forget to implement all functionality details and paid attention to the details. It can happen that the reviewer had in mind a different approach to build a feature and that can initiate a productive discussion within the group of engineers. And in some cases, it can be even informative. I have an experience when I was able to learn something new from reviewing pull requests. It is a kind of knowledge sharing with your teammates.

In addition to that, code reviews teach us to accept different opinions, ask proper questions. We analyze someone's work, provide constructive feedback instead of criticizing.

Proactive communication

In my experience I saw that developers sometimes act as an executor: give me a task and I will do it without questioning. That happens sometimes in some consultancy agencies with the rule “Client is always right”.

This is the wrong direction to follow. Software engineers need to be involved in various product discussions in order to understand product needs. They should not sit and wait for orders. Raising proper concerns to the group of people how much complexity it adds, asking questions about what problem will the feature solve, what are the potential improvements? — those are only a few proactive communication examples. Everybody will benefit from it. Product managers along with designers can understand what are the costs of adding that simple button to the product. And developers will plan a better application architecture according to future needs knowing product intentions. Don’t let silence suppress your growth, remember there are no stupid questions.

Finally, there are many other ways to achieve excellence for software developers. And more importantly, not all of them are necessarily related to writing code. Stay open-minded and new opportunities will appear.

--

--

Dmytro Khmelenko
Life at Freeletics

Software Engineering | Startups | Education| Technical Leadership | Learn how to boost your career from “Unlock the Code” http://amzn.to/3j5Nm27