14

Every once in a while I'm asked in interviews which I like the best- low level or high level. It seems to me that the implicit message is that they are both a specialty and they want to know which direction I'm heading. The trouble is, I seem to like both. Low level is extremely challenging and often requires a great deal of esoteric knowledge. High level is where all the sexy things happen: applications that people use directly, results that can be easily demonstrated (showed off) in a way that is accessible to everybody, and you get to work with really advanced tools and interact with new technologies.

I would really love to do both, even if it means alternating between them (I doubt there are jobs that will let me do both simultaneously), but I'm guessing that the industry rewards specialists more than generalists. Will it really be problematic career wise if I never choose one over the other? Is it practical to alternate between the two in the sense that if I were to leave a job doing one of them, I should experience no "friction" trying to get a job doing the other (assuming I'm reasonably in the loop)? Are there career opportunities where you get to do both?

Do I really have to choose one over the other?

yannis
  • 39,547
  • 40
  • 183
  • 216
EpsilonVector
  • 10,763
  • 10
  • 56
  • 103
  • You might want to look at this question at SO: http://stackoverflow.com/questions/919568/application-programmer-vs-system-programmer/919825#919825 – user281377 Mar 06 '11 at 19:23

5 Answers5

13

In my experience, larger companies need specialists and smaller companies need generalists. If you want to be a generalist, search out and apply at smaller companies.

Scott Whitlock
  • 21,874
  • 5
  • 60
  • 88
  • 3
    Just to say that larger companies are the ones that can afford the higher rates that specialists demand. – Oded Mar 06 '11 at 19:10
  • 3
    It's not salary that determines the specialist/generalist distinction as much as the number of programmers your company has. With lots of programmers, it's more efficient to assign specific people to specific products. With a handful of programmers, they have to cover *all* of the company's development needs. – dan04 Mar 06 '11 at 19:24
5

First, Whichever path you choose, be aware that your surroundings might change. :)

Also, I don't think you have to choose between one or the other. Rather, your options depend more on the project and the group that you're working with.

  • It's likely that applying for a specialist job at a big corporation, you'd find it hard perform other tasks.
  • It's also likely that a generalist role won't give you time to dig deeper into a small part.
  • It's equally likely that having some generalist skills will make you more efficient at doing specialist work, since you won't have to rely on others as much to forge ahead.
  • It's also possible that a generalist role will need some specialist knowledge, and if you look for a small company or startup that works in the area where you specialize, you could have ample opportunity to shine in your specialist field.

I'm actually facing these issues at my current job..

I've specialized in C++, OpenGL, 3D-simulations, game engine architecture and such things, but last year I've been using a soldering iron quite a lot (mashing together USB boards, prototypes, servos and motors, as well as tuning and programming these servo controllers). I might also have to make some web site prototypes for a few services that we're need.

It's good fun, but I wouldn't want to do it forever, as my specialization wanes a bit, and there's probably others who are better at that anyway. Hopefully the company grows and we can hire more engineers. We're just two C++/Python guys at the moment (with me spending 60-75% of my time on hardware).

So, select your projects carefully and you don't have to abandon anything, but you need to check where your career is heading every now and then (as do everyone).

Macke
  • 2,576
  • 16
  • 16
3

I think it is good to ask this question, so they know what you are aiming for, but the explanation you posted here is also a very good answer: "I like to do both". High level and low level languages attract different kind of people, while low level languages attract people who really like to know the small details of the system, how it works, etc, high level languages attract people more interested in the business process and the organization itself. So many people really like high level languages, but can't stand low level (or the other way around).

So asking it is very important to get your profile and intentions, but your answer as you posted is completely acceptable.

JSBach
  • 1,365
  • 2
  • 14
  • 27
2

In our field I think we have to be generalists on some level while also developing a specialty or even a few specialties. It never hurts to develop our skills in many areas as some projects could require you to be versatile. As was mentioned though, the larger the company the more likely they'll need you to be able to focus in just one area. In these situations I think that the question of which you prefer is more than likely trying to sort out where they would put you if they hired you.

Kenneth
  • 2,703
  • 2
  • 21
  • 30
1

You don't have to choose, although your life would be easier (if not happier) if you do. Most companies will look for one or the other, but if you find a place where they want someone who knows both worlds, you'll hit the jackpot.

What you absolutely mustn't do is to apply the wrong approach to a problem.

And of course, sometimes things don't go as planned, I started out with a love of assembly and C and a mistrust of everything OO and became a Java developer. Now I'd find it hard to go back, because I missed out on ten years of learning and new technology. So the lesson here is that if you want to switch, make sure you keep in touch.

biziclop
  • 3,351
  • 21
  • 22