Petri Wessman's weblog

New version of Typo

Upgraded to the latest version of Typo (the blog engine I'm running), mainly because the newest stable version of Ruby (1.8.7) isn't compatible with the version of Rails the older Typo was using. Sigh.

Seems to work, more or less, and the admin interface is nicer at least (though the article writing interface seems to be a bit funky). Will have to play around with it.

Published on by Orava, tags , , ,

Good programmers and other mythical beasts

Haven’t written here for a while… had a nice Christmas & New Years, there was an interesting VTES tournament, lots of stuff to write about.

… but as it happens, I’ll get to that later, due to a weird coincidence. During lunch at work yesterday I was thinking about good programmers, and why they seem to be so rare. Then last night I ran into an article (via Slashdot) on how to recognize a good programmer – and it was spot on, and pretty much mirrored my own thoughts on the subject.

Thing is, most IT companies want to recruit good programmers. Many of them think they have them. In actual fact, what they tend to have is what Daniel in the article calls “career programmers”: the people who do it just as a job. They don’t have any real interest in programming, it’s just something they know well enough to get hired (but often no better than that). These people will never spontaneously teach themselves new tech, most of the time they are blithely unaware of what the “new tech” even is at any given moment. They code with the “least effort required” style; if they can cut+paste existing code that’s always the preferred solution, regardless of suitability. If they are forced to write something from scratch, they will take forever to do it, and produce something that only works with some very loose definition of “works”. They never produce elegant code, in fact they are somewhat confused by the very concept.

There’s nothing wrong, as such, with doing programming as “just another job”, without any real interest in it. It pays the bills, and there’s enough demand for programmers that even mediocre ones tend to find jobs. Problem is, it’s also a trap of sorts: the actually competent people in the company will come to realize that a given person isn’t all that hot, and the management will also probably realize it at some point, just by looking at how much the person actually gets done. This usually results in the person being given the simple, repetitive jobs (routine maintenance, implementing a new slightly different version of something that already exists, that sort of thing). This is natural, since you simply can’t give anything actually complicated to these people; it will either never get done or will be implemented in a way that will need a total rewrite in order to work. So people like this end up painting themselves into a corner, where all they will ever get to do is boring, routine stuff. For some people this is fine, for some it isn’t (and they eventually move to something more suited for them).

Don’t take this as complaining about newbie programmers, it’s not. The critical difference is what’s #1 in the article, too: “passion”. Good programmers are fascinated by the tech they use, and constantly look for new and better ways of doing things. They teach themselves stuff constantly. A good beginning programmer is not a problem, since he’ll be constantly improving himself; you just need to point him in the right direction sometimes. These people ask questions, and ask the right kinds of questions. Career programmers can’t be bothered; if they don’t know something, they expect their employer to get them on a training course (which of course won’t do much to help).

Naturally, things aren’t this black and white. There are good programmers who as totally stuck in a rut, and see everything through a lens of a single technology. There are mediocre programmers who are slowly crawling towards being competent; they might not have the real drive, but they don’t feel like sitting still either. In addition, technical skill is just part of the equation – some good programmers are insufferable prima donnas, some have way too much of a “my way or the highway” attitude, some have a total lack of all social skills… nothing is ever totally cut and dry. I consider myself to be a good programmer, but I’ve been known to have some of those faults at times. I’ve gotten better. Mostly.

Anyway, the truth of the matter is that good programmers are very hard to recruit. They are rare, they tend to already have jobs they are happy with, and they tend to be picky about recruitment terms. They also tend to be somewhat tricky to keep, since they usually want to work on cool stuff. And let’s be honest here, 95% of all IT business is anything but. Every single company pretends they have revolutionary new ideas and highly valuable proprietary information, but in reality their “valuable IP” can usually be written on the back on a napkin, with large font. Sure, some companies actually are creating interesting new stuff, but most aren’t. So, it’s a challenge to find something that’s interesting enough to keep your good people… interested.

The classic “Mythical Man Month” remarked that good programmers can be multiple times more productive than mediocre ones. That’s still true… but it’s not quite that simple. Good programmers (and, I suppose, all real professionals) are very productive when they are doing something they find interesting and/or challenging. Give them routine work, and chances are they they won’t be all they productive – they’ll be bored out of their minds, and thinking about other stuff.

So… I guess it boils down to “good people are hard to find”. Nothing new there. It was just funny reading that article, having thought about the subject just previously. Another facet was reading Zed’s infamous rant some days ago; though it’s a bit of a stupid and misguided rant, the part which struck true was the complaint that some consulting companies provide people who are… not very good in reality, and charge a silly price for it. At worst, I’ve seen and heard of cases where the management refuses to provide decent workstations or software for their own people, and is stupidly tight with money in all respects… but then some crisis or another crops up, and suddenly it’s ok to hire a consulting company for huge amounts of cash. The saddest thing here is that more often than not, the consultants will totally fuck everything up. Mediocre people working for a project they have no real interest in, for a limited time – it would be a surprise to see anything actually good come out of that. At best, you get a pile of “more or less works” code that’s a nightmare to maintain. And who does the maintenance? That’s right, the in-house folks.

I could comment more here on Zed’s Rails rant, but I’ll mostly pass – this has turned out long enough as is. What I will say is that I agree with Daniel’s reaction. Rails is a smart framework, and lots of smart people like it. Lots of smart people also hate it, and lots of dim people also seem to like it, perhaps thinking it’s the Visual Basic of the web world and that it will let them design web apps without understanding the technology. It isn’t and it won’t.

In case you are wondering, this post isn’t aimed at any particular company or person. It’s just a commentary of what I’ve seen, over decades in the business.

I love programming and IT, still. I’m glad to be doing it, and getting paid to do it. But oh boy, the idiocy I’ve seen at times…

Published on by Orava, tags , , ,

Powered by Publify – Thème Frédéric de Villamil | Photo Glenn