Sunday, February 28, 2010

Become a specialist at being a generalist

Almost always, everyone seem to fall into one of two types – the specialists and the generalists. The specialists are those who come from a strong background of fundamentals. Over years, they have honed and assimilated the details of their language or technology of choice. The generalists are the hungry scavengers. They try everything at least once, are infatuated with exploring every new technology or programming language and have built up a repertoire of buzzwords in their resumes.

The question often asked is: if you were asked to choose from two candidates – a specialist and a generalist – which would you choose? Like most things in life, it’s not a binary answer. There isn’t a right or wrong answer. There are, however, right or wrong decisions on hiring the right candidate for the right job. Each type of candidate has their strengths and weaknesses. It’s best to make the decision after careful evaluation of how closely aligned these types of candidates are to the job requirements and to the company at large.

This post is intended to be an introduction to a series of posts where I hope to give valuable tips on becoming an effective generalist. Before we begin though, I’d like to clarify a couple of things. By offering tips on becoming a better generalist, I don’t mean to suggest in any way that a generalist is better than a specialist – it’s just that I have more experience as a generalist as I have spent my career being one. And more specifically, I will tell you how to be a better generalist. How you use my tips in practice to improve yourself will be an exercise left up to your talent, dedication and passion. With that out of the way, let’s begin with the first in the series.

Become a specialist at being a generalist
This may sound almost like an oxymoron, but hear me out. Often, I’ve seen too many startup-headed, caffeine-infused, entry-level engineers who are ready to conquer the world. They dive into their projects with vigor and passion, trying to excel and outshine other members of the team. This is great and is the right attitude to have, and if you’re one of these individuals, you’re on the right track.



But commonly, what develops is this insatiable thirst for doing too much. It starts slow at first. Inconspicuously over time, you may find your behavior leading to a need for constant exploration of new fields of knowledge. In a startup company, it’s the engineers in the team who have the “i-can-do-everything” attitude. You start to not only code, but help out with tech support tickets. A marketing colleague drops by and you promise to deliver a new undocumented feature that will look good on your resume. Your geek buddies suddenly start talking about Python, and you want to learn it right away and test it out on a project. A new framework hits the web, you need to rewrite that last web application using the new framework. This weekend. Sound familiar?

What is important to note is that the above attitude isn’t bad – instead it’s possibly detrimental to your development as an outstanding generalist. In fact, the attitude is the focal point of being a great generalist. However, being caught in a never-ending spiral of exploration is the crux of someone who could have been a great generalist. That’s why it’s important to specialize in being a generalist. What does this mean? Specialization in any field means knowing the ins and outs. It means being ahead of the curve, leading rather than following innovation in the field. It also means doing what you do best, and better than the rest. And this is exactly what differentiates an effective and outstanding generalist from the rest.

It means to know what to explore. It means knowing how to keep your skills up to date. It means critically thinking about every new technology and what it means to you. It means visualizing the results before jumping into a new project.

So, I hear you say, that’s easier said than done. Actually, you’ll be amazed at how easy it is to accomplish with a little discipline and a few tips. Here are a few:

Stay up-to-date with your area of generalization. This is crucial to the art of being a generalist. You must be able to consume large amounts of information each and every day to stay current on trends in your field. Over time, get into the habit of refining your methodologies. Always adapt as tools evolve and new ones come up. Become a master at picking good information out from the bad. Try to read sources of information that you trust, and have helped you in the past. Don’t get caught in the ‘chatter’ – opinions are plenty and every blogger has more than a few, learn to separate them from the real information.
Know what to explore and what to ignore. This is the second step after you’ve found the right information. Read and learn more than what you actually explore and implement. Remember that time is very precious for every generalist. Don’t waste it by exploring a ‘cool’ website, learning a new language that all the cool geeks are talking about, etc. without knowing exactly how and why it will help you. Almost 50% of what you decide to explore will be of no use to you. The higher you manage to push this success rate, the more successful you’ll be.
Be critical of new technologies. Mankind will always continue to invent and innovate. And when there’s not enough innovation, there’s recycling. If you’ve been around long enough, you’ll be able to pick out what’s recycled and what’s innovative. Learn this skill and get better at it. Think critically of a new technology that claims to solve a problem. Can this problem be solved with what you already know? Was this ever a problem or is this a problem that’s made up just to invent a new technology that solves it?
Visualize the results of all new pursuits and endeavors. It’s easy to start every new project with an unknown factor. It’s the thought that whatever work you do will be worth it and at the end, there will be a lesson learned. Though this is a very healthy attitude to have, it only works well if you have a lot of time on your hands. But when time is short, it’s better to visualize the rewards from such a project. Is it going to increase your skill set in a particular language? Or is it going to help you gain understanding of a core technology across all languages? Spend time on it only if the rewards qualify the effort. Otherwise, be patient and spend time on something else that will give you bigger rewards.
Don’t over-generalize. No potential employer is going to look through 30 different buzzwords and be excited that you tried and explored each. In most cases, an employer has already decided and probably spent a great amount of resources on a few key technologies. They need someone that fits into one or more of the technologies they use – not the other way around. The key is to explore many technologies but concentrate and gain expertise in a select few.
These tips should help you direct yourself on the path to becoming a more effective generalist. Stay tuned for more articles on specific tips to help you along the way.

Always remember that being a generalist helps you get your resume through the door, specializing at being a generalist gets you the job.

No comments:

Post a Comment