views:

688

answers:

11

I've been doing web dev for 10 years now, mostly the MS stack but some LAMP as well. There are so many choices these days for programmers and the job market seems to be all over the place.

Before I dive into some new technology once again I was hoping to get some perspective from others in regards to additional benefits of being a jack of all trades developer other than having a broad marketable skill set? Chime in with your experience please.

+1  A: 

I know I'm usually stuck thinking inside the box, so I like to have a very big box.

mquander
That's what SHE said(?)
harto
+3  A: 

Being able to solve a broad variety of tasks is even more important that a range of marketable skills.

The marketable skills help you find job. Solving tasks helps you retain job and have a variety of interesting tasks instead of having a couple of tasks you solve and solve again and again.

Plus whatever the problem is you at least know where to start solving it - both looks very impressive and feels great.

sharptooth
A: 

In my short experience of ~5 years in software industry, I worked on various domains and technologies (Java/J2ee, .Net, PHP, linux-shell scripts, XSLT, javascript, Endeca and many more). What I feel now is that I am good at solving logical problem in any language but my job market value is not that much.

I havent applied (read as never tried) for any new job in last 3+ years but, when I see any open job description, it says 3+ years on Java or 5+ years on .Net. I am not sure where I fit into current job market.

Ratnesh Maurya
"x+ years" thing on job descriptions are usually a "nice to have" kind of requirement from the employers side. People with "long" experience might as well have been working on the same mundane set of tasks over and over again. It is instead how adept or flexible you are that counts. So you shouldn't let that stop you from applying jobs.
Spoike
A: 

There are 2 kinds of technologies: ones I've used and ones I haven't used YET. Seriously I jump at nearly any chance to learn new skills, either via learning more in depth stuff on what I already know or completely jumping to new topics.

Hardwareguy
A: 

If you prefer smaller companies like start-ups, I think it's more important to be adaptable and being able to learn new skills. In a smaller company it's important to be able to wear many hats.

In larger companies, there is more specialization of skills, so being an expert in a certain area is more valued, IMHO.

Having exposure to a variety of disciplines and languages offers one an advantage of having different perspectives and maybe better being able to solve problems. This is more important if you're going for more of a designer/architect role.

I think it was Joel himself who wrote that he would rather hire someone who is able to adapt and change to the environment of the business.

Vladiat0r
+7  A: 

Here are some thoughts on the benefits of having diverse experience in the field of programming:

  • Each language and technology offers an opportunity to learn a different approach to problem solving. Having different problem solving techniques in your toolset is an invaluable way to stay relevant in a constantly changing field.
  • Learning a new technology or language helps keep your mind sharp - it forces you to organize different yet similar domains of knowledge in your mind and helps keep your brain active.
  • A diverse background is more appealing to employers because it implies that you are a motivated individual who pursues excellence in his or her field. If your background only demonstrates experience with one narrow technology, it can imply that you only like to work in your comfort zone, or worse, are inflexible in learning new skills.
  • Different languages and technologies fit different problems differently. 'If all you have is a hammer everything looks like a nail', is the old adage. Knowing multiple technologies allows you to select the best one for the problem at hand.
  • It broadens the group of people you can interact with and communicate with in your field - 'speaking the language', to steal a phrase, makes it easier for you to work with individuals who specialize in other technologies. For instance, a good understanding of SQL and database architecture makes it easier to interact with and understand the concerns of DBAs.
  • It's fun. Personally, I find learning new concepts in my field a fun way to improve myself as a person. I like to learn.
LBushkin
A: 

I would like to add one of my own (while I wait to get some upvotes to use for LBushkin)

There are plenty of challenges that come from learning a new technology and that lends itself to having something completely different to work on every now and then.

Marc
A: 

You have a central skill set - that's awesome. Being knowledgeable in many areas in addition to that is great too. It makes you a very valuable asset. Especially if you can pick up new skills easily. If you can prove that, then not only do you have a strong suit and a lot of other broad knowledge, but you are also not limited to the specifics on your list. That will take you far.

To those without a central set: this is very bad during an interview. If you go into an interview as a "jack of all trades, master of none" then you'll just be part of the grey haze of all the other candidates. How many decent programmers AREN'T a jack of all trades? Not many. And they are who you're being compared to. You always need to be exceptionally good in at least one area. Yes, it's scary putting so many eggs in one basket, but if you don't risk it then you'll always be just one of the masses during interviews.

Dinah
+3  A: 

I've been a developer for many years and consider myself a jack-of-all-trades, master-of-none. I've been moderately successful with this but to a certain degree wish I had the patience (and more smarts?) to really specialize and have learned the nuts and bolts of certain skills/domains.

From my experience, here are a few benefits of being a generalist over specialization:

  • It keeps me on my toes. I feel much more adaptive to my ever changing work environment. I feel less likely to turn into a dinosaur.
  • It is more fun working at a startup where one is required to do many different things.
  • A larger selection of career paths.

Benefits of specialization:

  • naturally--the greater the specialization, the higher the salary.
  • I've also worked at "large-co" where if you specialize, you are employed for life (yours or the companies life, which ever comes first).
  • I have come to regret a few of those areas where I ended up voluntarily or involuntarily specializing. E.g. I wrote our build system and forever after was labeled the 'build guy' even though I have done many other things. Build systems are a valuable underrated function - but that's not what you want to be known for.

Bottom line: balance the two by picking a few of domains in which you can be a bit more specialized than your coworkers.

static AG
+1  A: 

Have you looked at the benefit of being able to be a better employee by handling so many different kinds of positions in the past? I'm possibly taking your question in a different light, where I'm looking at all the different experiences I've had and how they benefit me. For example, do you want just be a coder or do you want to a vast array of duties while being a "developer" in title? What kinds of career progressions and working conditions bring out the best in you?

I can look back at the few different kinds of companies I worked and contrast what worked well here, what was crap over there, etc. While the marketability of this is questionable as everyone who works for x years has the same number of years of experience to use and some companies can go through enough changes that it is almost like a different company at times. Harnessing this into a way to tell an employer or perspective employer, "Could we work like this?" or "Where I used to work, we did things like this, this and some of those and it worked out awesomely. Could we try that here?" The ability to analyse the past and leverage that is my main point here as everyone's experiences are what puts them in their current spot.

JB King
A: 

Being a "jack of all trades" can be a disadvantage when you are looking for a new job, because you lack expertise in any field. Say you have some experience in Java and .NET.

Java job: Your general experience with Java doesn't make you a JSF specialist and your .NET experience is meaningless.

.NET job: Your general experience with .NET doesn't make you a WPF specialist and your Java experience is meaningless.

ammoQ