Fog Creek Software
Discussion Board




One of the ways to spot a good programmer

One thing I noticed in spotting a good programmer is not by observing what they know but their realization of what they don't know.  The people I have worked with in the past that stood out were the ones that could realize they did not have all the answers.  It seemed like this attitude came with experience. 
Now I laugh at the "new guy" would comes in and tell me how its done until I realize that how that was me not too long ago!

Bill Rushmore
Thursday, May 06, 2004

What an apparently conflicting set of beliefs we read on JoS.  Just couple of weeks ago there was a thread in "Ask Joel" on why you don't want to hire experienced programmers.  In that thread a lot of the less experienced programmers thought that experience was a liability.

mackinac
Thursday, May 06, 2004

To contradict the above, I could say that hubris is common in good programmers as well :)

Patrik
Thursday, May 06, 2004

Impatience, Laziness, and Hubris are three of the main "virtues" of a programmer according to larry wall, founder/author/creator of perl.

Matt H.
Thursday, May 06, 2004

I agree on the laziness and not just for programmers but for all engineering types.  My dad had a kind of American protestant work ethic which told him that finding an easier way of accomplishing a task was "trying to get out of something" and a sign of laziness.

This is how I was raised, with the idea that doing things in an inefficient manner would somehow "build character".

I think my teenage rebellion against this way has inspired me to find ways to make tasks easier with software.  I further believe that people attempting to find creative ways to "get out of work" is the cause of the insane increase in prosperity we have experienced over the past two centuries.

name withheld out of cowardice
Thursday, May 06, 2004

"What an apparently conflicting set of beliefs we read on JoS."

Such is the nature of a disparate set of individuals, all looking out for their own self interests. It isn't surprizing that newer programmers will defend the position that they are "uncorrupted", while veteran programmers will deride that and declare new programmers foolish and lacking critical experience. Mid level programmers will declare that they have the perfect lack of corruption, and cumulation of experience. Managers will declare that all programmers are defective in some way or other, so suck it up and take a wage freeze or it'll all be outsourced to India. QA will declare that programmers don't really matter and are interchangeable cogs, and QA is where it's at. Where you stand depends on where you sit.

If I seem cynical, I am. The majority of opinions and "morally guided" nonsense that people spout is nothing but self-serving rhetoric dressed up as a carefully considered evaluation of the facts.

Dennis Forbes
Thursday, May 06, 2004

Excellently put Dennis, although the majority of people will likely disagree. Some will agree and believe it applies to everybody else. And a few will agree and realize it is true for them, too.

jz
Thursday, May 06, 2004

"Common" sense always the more experience someone has at something most of the time translates into more skill.  So why is programming different?  If you needed open heart surgery would you go and find a surgeon who isn't corrupted by all the other surgeries he has done? No you want the guy who has done the most successful ones.

Anyway, I never realized the "Asked Joel" was so active with discussions.  I should pay more attention to that side.

Bill Rushmore
Thursday, May 06, 2004

Does being experienced mean you stop learning new things? This is the only reason I can see why experience might be a liability. However, I don't see why experience and the inability to learn have to be connected -- only that they often are. And, I would submit, that is the kind of programmer you can have too much of.

To paraphrase eastern philosophy, your mind should always be like an empty cup, so that more can go in.

Derek
Thursday, May 06, 2004

In programming - as in most things - there is a balance of opposing forces.

A good programmer needs experience - to be able to see the wrong way of doing things, having been burned through bitter experience, and to recognise a new problem as a slightly repackaged version of an old problem, and can call upon their experience to tackle the new problem.

As well, a goog programmer needs an open mind - to question whether the old "tried and true" approaches are still vaild, whether a new technique or approach will be better, and, along with a good dose of humility - to be able to recognise when other people have better ideas than their own.

Ken Ray
Thursday, May 06, 2004

"One thing I noticed in spotting a good programmer is not by observing what they know but their realization of what they don't know... "

“Hmm. Maybe I really don’t know what it really takes to develop software.” And on that day only, and not one minute before, but on that day and from that day forward, you will have earned the right to call yourself a software developer... "

Seems like a trend on the JOS boards to state the the less a programmer knows, the more he knows (A != A).  Sounds a lot like bunch of Buddist BS. 

I think what the trend really means is that people like to work with folks who are humble about their knowledge.  Nobody likes to work around some now-it-all programmer lording their knowledge over the rest of us mere mortals.
It's a fine line to walk for programmers who have to gain the respect of their peers by how much knowledge they have, all the while be humble in their approach to others. 

Steve-o
Thursday, May 06, 2004

People who recognize their own shortcomings in knowledge also tend to be more conservative (and thus more accurate) in their estimates. They're also more willing to *admit* when they don't know something instead of waffling around and trying to cloud the issue so they can expound on something they *do* know.

Philo

Philo
Thursday, May 06, 2004

I think the real folly comes in thinking that our limited experience somehow gives us the authority to declare a generalized analysis for large groups of people.  Often times these groups of people have nothing more in common than what they do for 40-60 hours a week.  "Programmers are...", "Developers do...", etc.

Comments along the lines of:

"Young developers are a liability because they think they know everything."
"Older developers are a liability because they are set in their ways and refuse to adapt."
"Young developers are great because they are eager to learn and experiment with new technologies."
"Older developers are great because they have experience and make less mistakes."

or...

"Managers always hinder productivity more than they help it."

or...

"Idealistic opinions people give are nothing more than self-serving rhetoric dressed up as careful consideration of the situation."

Even if you throw the gratuitous "Most" or "Majority of" in front of any of those statements, I don't see how anyone is really qualified to make those statements with any smidgeon of accuracy.  Even if you have worked for 20 different companies and they all had the same things going on, that does not constitute a legitimate control group for behavioral assessments.

Bottom line is that every single person has a unique personality, and go through life with a unique set of variables influencing their environments.  Unique events and experiences that require them to make choices which in turn alter their perceptions of the universe in some way.  I tend to believe that the clearest window into a person's true character is how they react to bad things.  I may be naive, but I believe you will get the best work from people with a high quality of character combined with a high aptitude/intelligence.  Lack one of those factors and the quality of work drops significantly.

Clay Whipkey
Thursday, May 06, 2004

Given that you quoted me, I'll respond.

"Even if you throw the gratuitous "Most" or "Majority of" in front of any of those statements, I don't see how anyone is really qualified to make those statements with any smidgeon of accuracy. "

The "majority" is hardly gratuitous, and your proclamation of the same makes it pretty clear that you're just setting up a convenient straw man.

Me: "The majority of Americans voted for Gore in the last election"

Your strawman: "My god, man, not everyone voted for the democrats! I know a guy who voted republican!"

However, I'm not making my statement based upon coworkers, but rather upon the combined observation of around two decades of `online' use (originally on local BBS when I was 12), as well as general social situations. You can generally determine an individuals personal situation fairly well by observing the positions that they advocate: The _majority_ of the time, in my observations, it is self-serving positions (even when their personal situation is one not of choice, but of chance/bad-luck/whatever). Feel free to disbelieve it though.

Dennis Forbes
Saturday, May 08, 2004

> Seems like a trend on the JOS boards to state the the less a programmer knows, the more he knows (A != A).  Sounds a lot like bunch of Buddist BS.

For example, if I know something (for example, that C++ is the best programming language) then that knowledge could lead me to make a poor decision.

But if I admit that I don't know something (what are the requirements for this new product?) then my admitting ignorance can lead me towards ...

Yeah and it is pronounced boodist, but it's spelled "buddhist", by the way.

> Nobody likes to work around some now-it-all programmer lording their knowledge over the rest of us mere mortals.

The first time I designed a piece of software, after the meeting in which I explained my design to my coworkers, my manager said to me privately: "It isn't enough to be right."

Christopher Wells
Saturday, May 08, 2004

*  Recent Topics

*  Fog Creek Home