I think of myself as being a “generalist.”
For me, this means I do not limit myself to a single problem or solution domain. I do web development, but also GUI development and microcontroller development. I use JavaScript, but also Delphi and C, Python, Java and C#. I do straight-up programming, but I also do systems administration and UI design.
My goal is to be a development Homo Universalis. To quote a famous author:
A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. – Robert A. Heinlein
I’ve always considered this to be a good thing. After all, being able to perform a lot of tasks makes me versatile, able to spot good and bad efforts in areas that are related to my work, makes me more efficient at communicating with other people with different specialties, and allows for cross-breeding of ideas between different areas of expertise.
However, I’ve recently started to discover that there is a downside to being a generalist. Employers are looking for people with a T-shaped skill set (broadly orientation and deep in one area) or even an M-shaped skill set. However, my skill set currently looks like a hyphen (or maybe more like an emdash ;). And though my skill bar is fairly thick in most areas, that doesn’t change the fact that I don’t have a one single field of expertise that stands out. By basically doing “everything”, I don’t have a specialty in which I can measure myself with the best of the world.
Well, why is this is a problem? The problem is, it doesn’t sell.
This may not a problem while holding a job (depending on whether or not you need to sell yourself in that job, such as doing consultancy), but it becomes a problem while searching for a new job. Not having a specialty means there is nothing that makes you stand out from the crowd. Even being the world’s most general generalist just makes you the most average median, the fiftiest percent gray.
Being a generalist will not get you invited to speak at conferences, because your knowledge will never exceed the audience’s. It will not get you an interview if you know a lot of technologies but the company is explicitly looking for someone with N years of experience in X (which many of them are). And even if you do get the interview, it will not give you a good negotiation position, because although you know X, Y and Z, companies really only are looking for X and there are lots of people who know only X that will fit their bill quite nicely.
So, bottom line: it’s time for me to pick a specialty. I’m not yet sure what it’s going to be yet, and the though of closing off other potential paths by picking one horrifies me. But I’m feeling around, seeing what resonates, and I’m going to pour my heart and soul into whatever I decide to pick.