Top 2 skills that make a quality programmer

Started by
8 comments, last by Tom 16 years, 9 months ago
I've only been coding for about 2yrs but am curious to if there is a a top one or 2 qualities that really make up a skilled programmer. I'd love to hear everyones thoughts on this.
Advertisement
It's hard to come up with only two... but my primary list would be :

- resourceful
- autonomous
- curious
- pationnate

I'd also say you should keep yourself away from geekness as much as possible, but that's just my opinion. Get a life away from your monitor, good ideas will come anyway.
Laziness
Experience (is experience a quality? I dunno)

But really, these are completely arbitrary. There are no two magical things that will make you a good programmer.
-Laziness
-Charisma

There is nothing as useful for a programmer than the power to convince your boss that whatever you want is also what they want.
Being knowledgeable about what they are using. This includes becoming knowledgeable with new technologies as they appear, and being able to use them within a week on decent-sized projects.

And then, there are the obvious ones: being quick-witted, finding simple solutions to complex problems, eating their own dog food, programming defensively, and so on.
- Time management / estimation skills
- Enthusiasm and willingness to learn

The two that imho, are the most important for all programmers but only
the really skilled programmers master the top.

As for the second part, the difficult thing about programming is keeping
motivated as yougain more experience and start finding you've done almost
everything you're being told to do - a million times.

I would probably also add self-discipline to follow up on my last point.
To not be tempted and create an overly complex solution to an already
obvious problem.
Discipline.
Concentration.

Discipline: Far too many new programmers lack discipline, in that they don't want to sit and read the documentation - they want someone to just give them the answer; they don't want to sift through existing code and figure out how it works - they want to "start fresh," because, you know, code rusts, right?; they don't want to learn how to work with any set of conventions, warts, etc - they want to find the "one true brace style" and the "one true Hungarian Notation"; they don't want to learn multiple languages, with all the effort that entails - they want to know "the best language" so they only have to learn one.

Concentration: Pay attention to the details. Sustain your effort in reading a complex technical description. Notice when code begins to become repetitive or unwieldy and refactor (which requires discipline, too). Notice when what you want to do sounds like something lots of people would have wanted to do before, then have the discipline to go look for an existing solution instead of reinventing the wheel (this is what many characterize as "laziness").
intelligence
experience

I'm still working on the second
Knowing how to detach themselves from their code - There is nothing worse then a programmer who immediately gets defensive when their code is under scrutiny. They usually refuse to believe anything is wrong with the code they have written and don't bother looking into it. You might as well be talking to a brick wall.

Steven Yau
[Blog] [Portfolio]

It depends entirely on your position. Are you the lead programmer? Then leadership is probably your most important skill. Are you working by yourself out of a garage? Then perseverance is your greatest strength. Are you an assistant? Than patience and teamwork are your strengths. In all cases, it's important that you know what you're doing (language, tools, project goals and deadlines, etc.) and that you can solve problems, both general and specific. I like to say 90 percent of programming is problem solving (the fun part), and the other 90 percent is writing code (the boring but necessary part).

GDNet+. It's only $5 a month. You know you want it.

This topic is closed to new replies.

Advertisement