Over at The Bleeding Edge Purumu has blogged about 5 traits of a good developer:
2. Good analysis skills
4. Abstract Thinking
He suggests that having these traits trumps knowledge of a particular technology and I heartily agree. Technologies change -- oy do they change! -- but these traits are key ingredients for valuable team-members in the software development biz.
I could add "initiative", "originality", "sense of humour", and "commitment to quality", but that might make the list a bit long!
To what extent you can "put in what God left out" is a re-hash of the eternal nature / nurture debate, but I think that it is clear that given some of these traits, and willingness to learn, it is possible to train at least some of them up further.
Now, do these traits have a role to play in hiring, reviewing and professional development?
I think so. Joel Spolsky recommends hiring "smart people who get things done", which is also sound advice, but this breaks it down a bit further.
On any team it's good to have people who are particularly strong in the various traits, making the team very strong overall. But is better to enhance one's own weak points or further develop one's strong points? Personally, I favor evenness of development, which goes towards making people into stronger generalists rather than specialists.
Why? It increases flexibility, so that the individual can tackle a greater variety of tasks and in particular complex tasks which require multiple abilities, which I believe will help keep job interest high. From a team perspective there is greater overall capability and flexibility in task assignment.
Now, it's not that I am against people have personal specialties, it's just that I think that these will emerge naturally out of personal interest, while it can take a little bravery -- and encouragement -- to develop in which one feels below par (and may have avoided working on for this reason).
Ultimately, development of traits such as these may shape roles and career paths. It all makes good food for thought.
1. What kind of activities can enhance these traits?
2. Are these traits measurable or quantifiable?