I have worked with many software developers around the world during my long career in IT, but what makes a great developer?
Below I have outlined my observations of what makes certain software developers stand out from the pack.
A great developer has a personal brand. Recognised internally and externally for being an expert in their chosen technical area of passion.
A great developer has excellent communication skills and is able to discuss complex ideas and solutions with non-technical partners or users.
A great developer will recognise gender and cultural differences and adapt their own personal style to ensure they get the best from their professional relationships.
[pullquote align=”normal” cite=”Steve McConnell “]It’s better to wait for a productive programmer to become available than it is to wait for the first available programmer to become productive.[/pullquote]
A great developer will be able to manage time so that they are proactive and not reactive to everything that comes their way.
A great developer understands that more heads are better than one and will discuss and take on ideas from their peers.
They will also sacrifice they own time to ensure the team meets its goals and not just their own.
A great developer understands the full stack and architects each solution correctly front to back.
A great developer will have testing at the forefront of everything they do.
As tests are code, so they even work out how to test the tests.
A great developer I worked with pair programmed with a testing expert in that functional area to ensure he grew both his own testing skills and covered all scenarios.
They do the right thing
A great developer will recognise that software is an asset to the company they work for and will ensure they step forward when asked to do something that compromises that asset in the future.
You will see a great developer growing their skills technically and non-technically both on and off the job.
One of the developers I worked with tried to figure out how to design out if statements in his code so that he could reduce the complexity and the associated number of unit tests.
No single man dependency
A great developer will recognise that others may need to modify or fix areas of their code.
[pullquote align=”normal” cite=”Martin Fowler”]Any fool can write code that a computer can understand. Good programmers write code that humans can understand.[/pullquote]
They will use standard code design patterns whilst ensuring their code is simple, efficient and easily understood by others.
You will probably find a well-worn copy of Code Complete and/or Clean Code near them.
A great developer will offer direction, advice and guidance to help other developers grow. This grows both their skills as well as that of their mentee, see Why you should be a mentor.
A developer I worked with in London took a new starter in Singapore under his wing. The mentee became one of the best client side developers in the region and now mentors others.
Does not reinvent the wheel
A great developer will seek out other tried and tested solutions before cutting a single like of code themselves.
Tactical versus strategic
A great developer will be able to distinguish between when a tactical solution is appropriate for a given problem and whether a more strategic one is needed.
Users will constantly ask for features. A great developer will be able to challenge their users around the value of delivering these features to ensure the best return on investment.
Within any team, there is always some form of conflict.
In a software team, this generally occurs when solutions are being discussed.
The great developers I have observed are able to manage this conflict, ensuring it remains positive and focussed on the best solution for their users.
I have seen a lot of code pushed into a production environment that has been tested thoroughly, but is not what I call production ready.
A great developer will understand the production environment, the server loads, the resource contention, the access restrictions and has designed their code to ensure fault finding can occur during an issue or outage.
Above are some of my observations of what makes a software developer great.
What have I missed?
Let me know below…
Your virtual coach & mentor