The Profile of the Ideal Software Developer

18 November 2019

People live to reach goals. It's a compulsion that comes from within.

This list is not a goal though, because you can't reach an ideal. You can only get close to it. Setting this expectation means that you are happy for every step you make towards the ideal. You don't feel sad or frustrated that you haven't reached it.

This also means it's a journey you choose to take. Like with any endeavour, intrinsic motivation will give the greatest rewards. To put it another way, you learn all this because you want to, not because your boss said so.

With that disclaimer out of the way, for me the ideal software developer: 

Asks questions to clarify requirements. They know how to avoid the XY problem and ambiguity.

Understands systems. Can identify them in the real world, model them and make the changes that produce the desired outcome.

Asks for feedback often to discover misunderstandings early.

Knows how to prioritise.

_Knows how to break down tasks and how to delegate. _

Is not afraid to ask for help when (s)he gets stuck.

Keeps code complexity low. You don’t want to end up with source code no one can understand.

Keeps code as modular as needed, but not more. This makes it easy to extend the product in the future, if needed.

Uses version control.

Knows what data structures and algorithms to use.

Knows how to not to fall in the premature optimisation trap.

Knows how to profile and optimise.

Knows how to keep communication channels open. People want to talk to them.

Knows how to provide feedback. They can criticise and draw boundaries without offending.

Has a clear and concise writing style.

Remembers to give reasons for his decisions.

Automates as much as possible to make on-boarding and delivery easy. They increase the bus factor.

I know, you could write a book about each item in this list. I'm sure there are several already. You could even view this as the table of contents of a book that summarises all the others.

What would you add to the list?

What books would you recommend for each item?

Discuss on Hacker News.