Over the course of my career I have run across all types of developers, and people (sometimes I wonder if developers are even human! I kid, I kid.), from the expert beginner to the guru. Expert beginners are those that think they know it all and are not open to learning anything new. Gurus, of course, are those that understand that our field is huge and it is impossible to know everything, but are experts in some things and have worked with a wide range of technologies.
In no particular order, they exhibit these traits:
Calm Under Pressure
This is one I wish I was better at. How do you handle pressure? Great software developers do not let criticism, negativity, or dysfunctional behavior deter them from their goal. They handle it in stride and get things done. You will never see them sweat.
Attention to Detail
Great software developers have an uncanny attention to detail. They sometimes can come off as being a little bit OCD, but they pay so much attention to even the little things (like indentation, proper casing, intuitively named methods, fields, and classes) that their software winds up being very easy to maintain.
Asks a lot of Questions
I originally titled this section “Great Communicator” but it really all boils down to asking questions. When you are given (or gather your own) set of requirements, use cases, user stories, etc. do you jump straight into designing the solution, or do you make sure there are no more questions before you start designing the solution? Coding should the last thing you ever do. Great software developers will ask questions until it is clear to them, even if their questions seem dumb.
Does not Reinvent the Wheel
Great software developers will look to open source libraries to help them develop the solution faster. Need to export something to Excel? Chances are, someone has already done that and has made their solution freely available to the world.
Breadth of Knowledge
Depth of knowledge is very important, but great software developers have worked with a variety of technology and are not opposed to trying out new languages. Is your team going to use Ruby on Rails for the next project instead of .NET (assuming it was advantageous to develop the solution in Ruby rather than .NET)? That’s great! That just means it is an opportunity to expand your breadth of knowledge and add another tool to your tool belt.
Depth of Knowledge
Breadth of knowledge is important; it makes you more versatile, but great software developers have depth of knowledge in at least one technology and can consider themselves as an expert in that particular technology. This comes with experience, of course, but these are the guys and gals you look to for guidance when developing software in their language of expertise.
What do you think of this list? What are some other traits you have seen in great software developers?