views:

545

answers:

15

Specifically, what are the best indicators to forecast if someone will be a great developer, and also, someone that you would want to work with?

Examples:

  • education
  • breadth of technical knowledge
  • depth of knowledge in a particular domain
  • interpersonal skills
  • work on open source projects
  • choice of tools, operating systems, and languages
  • taste in music
  • etc

Please: Only one trait per response, so they can be voted up or down.


This question is intentionally similar to a question on the traits of software development managers. Since many software managers are software developers who got promoted, I think it will be interested to see if the traits line up.


Edit:

For the record, this was not an attempt to gain any reputation, badges or bonus bucks. With help from thesmallprint (that's a username, not a legal reference), I just learned about the "community wiki" feature, and happily turned it on. Now you can feel free to vote and comment with the reassurance that this question will not improve my reputation, or help me get the coveted Almighty Ruler badge, which I could then use to crush your dreams/soul.

My experiences with this site have been very promising -- the caliber of the questions and answers has been impressive. So, if you find this question too subjective, I offer my apologies. I have had this question (and the other like it) rolling around in my head for a while now, and I assumed that other developers would consider it interesting.

If you like this question...please leave a comment or vote.

On the other hand, if you still hate me and my question...please shake your fist in the air, then vote me down and leave discouraging comment. Then you can go to bed content with the knowledge that you've made the world a better place by making me feel dumb.

+9  A: 

Professional integrity: someone who can be honestly self-critical can always re-train themselves if they realize that they need a new skill. They can recognize that their design has flaws and aren't afraid to admit it. They can stand up for their design when it's the criticism that has flaws. They can remember that this is all a job and that we need to get it done so that we can get back to our lives.

On the other hand, working without integrity is horrible. You can never be sure that this guy remembers that we're all on the same team.

Bob Cross
+7  A: 

Curiosity; a desire to find out how something works, which is, I think, a desirable trait for any engineer.

Rob
+1  A: 

The best software developers to work with and have work for you are those who are passionate about software development, and are always eager and willing to improve themselves and learn new skills. These are the types of developers who can excel on just about any project.

Julie
+1  A: 

The single quality that should be same no matter what profession is that they reduce the number of existing problems at the end of the day regardless of what they do.

Giao
+2  A: 

Persistence:

Willing to keep at it until the "right" solution is found.

Lance Roberts
+1  A: 

Something I'd like to see in someone I'd be working with is patience. As slow as it may feel during planning stages, the time it takes to get things clearly laid out is remade in spades later on.

Zurahn
A: 

Someone who knows how to use Google before asking for help.

Giorgio Galante
+1  A: 

Pragmatism.

Most of the responses so far are great in moderation, but can be very difficult to work with if taken to extremes.

In cases where you're writing software in a company environment these other attributes all need to be present, but need to be tempered by a sense of pragmatism about the end goal of writing this software - to fulfill a set of requirements to meet a business need in a timely fashion.

Andrew Edgecombe
A: 

Passion and humility.

Passion means you care about your code and want to continuously improve yourself. Humility allows you to help other people improve and allow other people to help you improve.

Garry Shutler
A: 
  • lazyness, i.e. don't repeat yourself, don't reinvent the wheel
Huxi
+1  A: 
  • paranoia, i.e. defensive coding, expect the unexpected
Huxi
A: 
  • neophilia, i.e. don't stay where you are now, keep learning, try new things
Huxi
Ooh, almost there!
oxbow_lakes
A: 

The one that has jumped to the top of my list: Critical thinking ability -- how to take a problem, decompose it, ask relevant questions, suggest solutions or paths to solutions. Show me how you THINK, how you approach tasks.

Joe
A: 

Good Googling skills.

Dana Holt
A: 

Communication skills - How well can you talk and write? A few questions for what I'm thinking but not directly asking:

  • Can you translate things from technical to non-technical easily?
  • Can you articulate why something should and shouldn't be done?
  • If I don't understand what you just told me, what do you do to try to help me "get it"?
  • Do you try to use proper English or is slang quite common in your vocabulary,e.g. "Word to mother, Holmes."
  • Do you try to use very specific words or does your vocabulary tend to be rather small? Do you use big words to try to sound smart or are you really aware of the scale of the terms in your diction?
  • If you find a bug, what steps do you take so that it can be recorded in an efficient way for developers to fix it? Do you just say, "It's broken," or do you give a list of steps to reproduce the error in a verifiable manner?

This is in addition to thinking about how well does someone use their voice in terms of becoming louder for some points, softer on others, changes in tone or pitch and other things that can make talking fun.

JB King

related questions