Tuesday, January 11, 2005

Smart and Gets Things Done

What does it take to be a good programmer? You have to be smart and you have to get things done. Easy, eh?

Joel On Software is a favourite project manager's site for many in the IT industry. He has a classic article called the Guerilla Guide to Interviewing. The article also says that the key part of a job interview is making a decision by the end: Hire or No Hire. No maybes, delays or disclaimers allowed.

As for being smart, this is the easiest of the two attributes to test. This article provides plenty of examples regarding programmers, but at minimum you'll need another smart programmer to develop the test questions.

As for gettings things done, that means that it's a person that understands the importance of deadlines and that is motivated to complete their work regardless of the roadblocks. They're independant enough to take personal responsibility for completing their task, asking the extra question or verifying that the update doesn't languish once they're done with it. This is the more difficult to test because it relies more on the programmer's history rather than on test cases during an interview.

The key here is that a good programmer needs both attributes. If you're incredibly smart but have a difficult time producing the final code in a timely fashion, you end up revising the design over and over. A real danger here is that the design is so thorough that it becomes impractical, creating overly complex solutions for circumstances that never actually happen. Still, the final design may be brilliant but the fact that it's four months late costs a lot of money in the real world.

If you're very fast but not particularly smart, you can get the code out on time or even early but you end up spending an extra four months fixing the sloppy solution that was created "just to get it done." Of the two extremes, this may be worse because another smart programmer is needed to clean the mess up, sucking up valuable resources. If the sloppy programmer tries to fix the mess with another merely adequate fix, that may only compound the problem. A temporary fix will expire and then you're left with rotting code.

Put both attributes together and what do you have? Dependable code that was shipped on time. A programmer like this will become the go-to programmer for both new designs and quick fixes.

P.S. Y'know, this may be the first post I've written that deals directly with programming, even though that's part of the tag line for my blog. 'S funny.

6 comments:

Amanda said...

Jamie, you had me fooled. I thought for sure this was a metaphor for some life altering message.

I suppose sometimes a cigar is just a cigar.

Cheers,

Aleah said...

...which is why I never want to work with computers

M.W.O.G. said...

Speaking of Computers....
I still can't figure out how to link every1's blog to mine! Maybe I'm blind???? HELP!

Jamie A. Grant said...

To add links on your blog, like I have on the right side of my blog, you have to edit your blog template.

Blogger -- Third tab at the top is "Template" -- "Edit Current"

You actually have to change the HTML code yourself. Search that code for the words "End #profile." I added my blog links right after that.

I'll give some sample code below. You have to change the [] symbols to <> symbols to make it work. If you have any trouble, cut-and-copy the HTML code from your template, save it in Notepad, e-mail the file to me and I'll take a look at it.

[h2 class="sidebar-title"]Blogs[/h2]
[ul id="BlogLinks"]
[BlogLinks]
[li][a href = "http://1truegod.blogspot.com">Natalie's Blog[/a][/li]
[/BlogLinks]
[/ul]

Abe said...

Don't leave us hanging, this is a journal, what kind of programmer are you?

(Hope you're doing well)

Jamie A. Grant said...

Abe, I'm not just good, I'm great.