login
Blurts on the Art of Software Development

Today | RSS | RDF | Atom | Other Tags
Categories : All | All | CI | .NET | General | Humour | Java | Personal | Reviews | Ruby | SW Eng

Pete Goodliffe, the author of Code Craft, is promoting his book this week at the JavaRanch. During the promotion, he's answering all kinds of questions about his book and software development in general in the process forum.

In one thread, Pete is describing attitude towards programming as the differentiating factor between "adequate" and "exceptional" programmers:

My observation is that there is one thing that sets "exceptional" programmers apart from merely "adequate" (let alone "poor") programmers.

It's this: their attitude.

They *care* about programming. They *care* about programming well. [...] If a programmer has the correct attitude to the task, all other things will follow.

Think about the great programmers you've met along the way. I think you'll see what I mean.

I'm with Pete 100% on the importance of the craft attitude. And I strongly believe that a beginning programmer needs to have contact with great programmers in order to become a great programmer himself.

What bugs me about this is that I don't think too many beginning programmers have that contact and those who do don't have nearly as much of it as they should.

I started my commercial programming career working on dynamic web front-ends. As such, my world consisted of a connected network of other "web programmers" and artsy types with job titles ending with "designer". In that environment, I was somewhat exposed to a number of senior programmers who I could observe along the way. There was the usual distribution of skills and personalities, including the hardcore C/C++ programmer who had written an in-house PDF generator and the jack-of-all-trades all-round guy who had his fingers in every system, effectively keeping the systems together.

Looking back, I learned a lot during those times. I got enough space and responsibility to stretch my know-how and was constantly pushed for learning new things. And I continued pushing myself at home--the classic late night code fest wasn't exactly a rare occurrence (which didn't do good to my relationship with the girlfriend).

Frankly, however, none of the individuals I encountered during the first couple of years into my career were what I would--in hindsight--consider great programmers.

Now don't get me wrong. Some of those individuals really knew their stuff in some aspects. For example, the C/C++ guy who wrote the PDF generator did some serious magic. The problem was that nobody understood his code. In fact, looking at that particular code base today I'd probably rate it far below acceptable. Back then, however, that guy was looked up as a "great programmer". And I'm afraid the same phenomenon is taking place still today in many corporate environments.

Think about an imaginary enterprise, Big Corp Ltd. Big Corp's HR strategy for the past decade has been to hire fresh graduates straight from the university and shove them into a process-heavy production pipe. The fundamental idea being resource thinking and process-substitutes-competence.

Sound familiar?

The problem with such an environment is that the average developer in the system does not have the great programmer sitting next to him. There's nobody to learn from, other than those who've survived the environment longer than you have. Not exactly a system that cultivates learning and continuous improvement. Certainly not a system that's competitive with those of smaller, more open companies where developers are actively looking outside for help and insight. Plus, I'd claim that the developers in those smaller companies are more likely to have that great programmer sitting on the next seat. Just like I used to have in some projects at my previous employer and like I have every day here at Reaktor.

I don't have a solution to offer. I just felt like pouring out some thoughts on the topic. Maybe I'll manage to affect someone's life and career.