I read an item at James Robertson’s weblog about hiring programmers that mentions that domain experience is more important than experience with a particular programming language. He also points to an item that argues that to test prospective programmers you should have them write a single page essay to gauge their ability to communicate effectively, structure things logically, and to rate their attention to detail. I’m pretty much an avowed generalist. I pride myself on my ability to learn new things, and think that the ability to learn is the most important ability for anyone to have. At the same time, the more Java programming I do, the more I think that if you took an experienced programmer in another language and threw them at Java, they’d still have a huge learning curve, and I think that’s true regardless of language. Every day I program in Java I learn more about the class library, more about frameworks I can use to save me time, and more about how Java applications should be written. It didn’t take me a long time to learn enough Java to work on other people’s programs, but my level of ability now, four years in doesn’t even compare with what it was two years ago. So the bottom line is that it’s probably OK to hire people who are smart if they don’t know the language the project is written in, but the project will probably fail unless there are some experts around to mentor them and police their work. I can see why, in these times when supply far oustrips demand when it comes to labor, companies are insisting on hiring people with specific expertise. There’s not much reason not to.