I suffer from generalism..

Posted by Wesonga 6/17/2009

Last night as I was going through my email I stumbled upon a very interesting blog post courtesy of Javalobby ( I subscribed to their newsletter a while back and have never regretted it),the post titled "On breadth vs. depth of technical knowledge" talked about specialisation versus generalisation in the area of programming. I liked the post so much I dugg it and posted a tweet.

I'm a confessed generalist, in fact there is no one particular programming language I've mastered, but a while back I used to be pretty good at Microsoft ASP (the old one that only had 40 in built methods) and this happened because I worked as a web developer in a MSFT leaning outfit for almost 4 years. Once I broke in to the open source dance, I started learning as much as I can as fast I could, starting with Java then PHP then Python then Ruby,sadly I never got to master any of them.

Let's be honest it takes time and tonnes of effort to master 2-3 programming languages so most of the time we get the fundamentals,do a couple of sample projects and add the line to the CV "fluent in language X..". Is that such a bad thing? considering that technology is ever changing and that in most cases one needs to be ablt to adapt to different work environments. I have nothing against specialists, in fact I have a very good friend of mine whose a Java Specialist having developed in Java for well over 10 years, in fact his never worked with any other language except Java, but I feel as though the employment market demands developers who are diverse especially in the area of programming languages, most interviews you go for the interviewer mentions that "we use a wide range of languages in our projects.." if you are a generalist you are in luck since all you have to do is reboot that part of your brain that knows the language(s) being used.

Generalists never fear learning anything new, they look at every language as a simple set of rules that can be used to solve the problem at hand, for example Client needs a windows desktop application to manage devices locally, generalist looks at available libraries in .NET and writes the app,the app works and addresses the needs. Specialist may tell client to change to Linux so as to solve problem.

But with all good things, there is always a problem. Generalists rarely know the really complex and cool things about a language, we tend to know the basics since we essentially skim over stuff, if you think I'm wrong ask a generalist to write one of this computer science classes programs (fibonacci series,pallendrone) and you might see wonders as they almost mix the syntax of 3 languages to solve the problem, I confess I have had that problem once or twice.

In the wisdom of the blog post, I've decided to take time and intricately learn 2 languages, Java and Python and generalise in 2 others Ruby and PHP, seems that many of the projects I'll be involved in will leverage Java and Python so it only makes economic sense to get those 2 right. So I may just morph into a specialised generalist..

Comments