9 Habits of Highly Successful Software Engineers

Aidan Casey
6 min readAug 14, 2017

--

Photo by Ilya Pavlov on Unsplash

I’m sure it comes as no surprise to you that software engineering is currently the most in demand profession in the world. Every business now relies on technology in some shape of form. Companies that harness and embrace software stand to gain huge competitive advantages on their rivals. Software is eating the world one bite at a time.

But be warned, not all software engineers are the same. I’ve been working in the IT industry, building products and services for the past 20 years and I’ve had the privilege of working with some truly talented individuals. The really great software engineers I’ve worked with have all share the following habits. If I could give one piece of advice to someone starting a career in software engineering I’d tell them that building a product is a team activity. Honing you technical skills is important but it will only get you so far, in order to really shine as a software engineer you also need great communication skills and an acute awareness of others.

So lets get into it, the best software engineers …

1. Don’t live with broken windows

Photo by Jilbert Ebrahimi on Unsplash

There is a theory called the “broken windows theory“. It states that if there is disorder in a neighbourhood for a substantial period of time, the mess will only get worse. If an abandoned building is left with a broken window there’s a much higher chances that the building will be vandalised and more broken windows will appear. Broken windows need to be mended to set the tone for the neighbourhood and keep thing in order.

Software programs evolves and go through many modifications over time. When a software engineer notices something that isn’t quite right in the code maybe its just a poorly named variable, or a spurious log message or an API shortcoming they should fix it up, even if it isn’t related to the task at hand. Unfixed problems get repeated and bad code smells manifest themselves and get worse. The best software engineers constantly fix broken windows and set a tone that encourages everyone else to follow suit.

2.Regularly learn new programming languages

There’s a old saying “If all you have is a hammer, everything looks like a nail” this is most definitely the case when it comes to writing code. Different programming languages solve the same problems in different ways . By learning different languages and techniques you broaden your thinking and problem solving mindset.

JavaScript is hugely popular programming language and a great first language to learn — there’s nothing to install and you can start writing code in a simple text editor and get up and running in a matter of minutes. It’s the most widely used language for building client side web applications and its making inroads on the server and the desktop. Now the dynamic and forgiving nature of JavaScript can lead to some sloppy coding practices. A JavaScript developer that takes the time to learns a pure functional language such as Erlang, Scala or Haskell will be inspired to write cleaner functional style code with no side effects that is more testable and robust in the face of change. The best software engineers learn one new programming language every year and weave their new learnings into their current projects.

3. Write code as a last resort

A friend once told me “You are not paid to write code. Every time you write a line of code you introduce another possible point of failure into the system”. When faced with a new requirement there is a great temptation to rush in, crack open your favourite IDE and start writing code straight away.

The best software engineers write code as a last resort. They have the discipline to take the time to really understand the business problem at hand and don’t blindly code whatever has been asked of them. When they are comfortable that they understand the problem at hand they will check to if they can leverage third party libraries or open source solutions rather than starting from a blank canvas.

4. Ask stupid questions

Photo by Jonathan Simcoe on Unsplash

Many people fear asking what they perceive to be stupid questions for the risk of appearing dumb. They prefer to save face and pretend to follow along with the conversation. There is nothing wrong with not knowing something, its happen often in life, so get used to it and embrace it. The world of IT has a never ending list of acronyms and jargon. The best software engineers don’t nod their heads and bluff it. If something doesn’t make sense, they’ll come straight out and say it. The truth is that is no such thing as a stupid question, it’s just plain stupid not to question what you don’t understand.

5. Are customer focussed

The best engineers are customer focussed. They begin with the end in mind, thinking through what they are working on how it will impact the user. The customer is king folks, don’t ever loose sight of them.

6. Have strong opinions weakly held

Strong opinions weakly held is the concept of being willing to let go of your opinions, while not watering them down.

When development teams get together to brain storming ideas and decide on a technical solution to a problem it is very common for different and opposing approaches to emerge. The best engineers are vocal with their ideas and opinions but pair them with a sense of humility and don’t force them on others. They are open minded to the possibility that there is always a better way to do things. Weak opinions are problematic because people aren’t inspired to develop the best arguments possible for them. It is just as important, however not be too attached to what you believe because it undermines your ability to ‘see’ and ‘hear’ evidence that clashes with your opinions.

7. Are great mentors

The best software engineers are great mentors. They have mastered their craft and take pleasure in sharing their learnings with others. Developing a culture of continuous learning within a development team benefits everyone and creates amazing teams. The best software engineers are passionate about their craft , they look out for their teammates and help them to grow.

8. Write beautiful commit messages

The log message is arguably the most important part of a code commit because it’s the only place that captures not only what has changed, but the the intent behind the change. Great software engineers pay particular attention to each and every commit message. They put just enough information into each commit message and use a consistent writing style. Software development is all about communication and your commit messages help to express the intent of your code changes and record the history of how the code has evolved over time.

9. Refactor fearlessly

Code refactoring is the process of restructuring existing code (or changing the factoring) without changing its external behaviour. As an agile team continues to add features and functionality so the codebase grows and evolves. Without ruthless refactoring the code will turn to goo. Refactoring code results in code that is easier to understand, simple to read and maintain. The best software engineers refactor ruthlessly and confidently armed with great automated tests to ensure things don’t break as a result.

Your Turn

Like this post? please give it some love ;-)

--

--

Aidan Casey

tech | leadership | lean agile product development | views are my own