Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I was recently laid off, and although I found a new gig I'm a bit frustrated with how career tracks work in the land of software development. I really love doing a bit of everything: coding, testing, architect(ing), leadership/management, customer contact, requirements gathering, staff development, etc. Software companies, however, want me to fit into a niche: I'm either a coder, a tester, or a manager. When I try to explain to them that I'm best when I'm doing all of those at once, they seem very confused. I'm sympathetic to their interests, but at the same time frustrated that the industry works this way.

Any advice? Do I just need to get with the program, so to speak?

share|improve this question
Being a generalist is healthy for any company (large and small) if that's what the company needs and you can also claim a specialty. If you interview for a job to "fit into a niche" why would you ever "try to explain" to them that you can do that job and so much more. Get the job they interviewed you for and then show them how skilled you are. Good luck. –  GuyR Oct 24 '11 at 13:23
Isn't this sort of thing supposed to be a non-problem in agile development? A coder can also test, a tester can also be a client, etc. –  joshin4colours Oct 24 '11 at 14:13
This question would be better here: Professional Matters SE Sign up and support it. –  Chad Oct 24 '11 at 15:34
you don't you can try and do both and be doubly miserable! –  Jarrod Roberson Nov 21 '11 at 17:54

8 Answers 8

up vote 56 down vote accepted

Your best bet is to find a small company where basically everyone needs to be a jack-of-all-trades: something around 5 to 10 employees. It is very uncommon to see such small companies push their employees into rigorous categories, simply because they cannot afford to.

Of course, you need to be able with the downsides of small teams: smaller projects, fast-changing environments, more responsibility to individual team members, less formal structure (the 'chain of command' typically has no more than two nodes), and sometimes the work conditions and salary are worse.

share|improve this answer
To your list of downsides I would also add "reduced (or negligible) resources available for staff development" -- small companies are really OJL or DIY learning shops out of necessity. They don't have the resiliency or flexibility of corporations which allows for sidelining people for X months/years to build special skills. –  Andrew Heath Oct 24 '11 at 7:32
@tdammers, +1 but I actually make more money and get better benefits now at a company of < 10 and am very highly regarded and appreciated. The only complaints I have about working at a small company is difficulty getting money for hardware and software and constantly being understaffed for what we need to do. These problems pale in comparison though to every inconceivably horrible corporate experience I have had in my career. –  maple_shaft Oct 24 '11 at 11:21
Sounds good. All the downsides you list for small teams sound to me like upsides (except for the money bit)! –  Stephen Gross Oct 24 '11 at 15:28
Yes this is your answer. If the urge is to be involved in everything this is the way to go, however, as others have mentioned, you can't really have your cake and eat it too as there are tradeoffs when working for a small or large company. –  anon Oct 24 '11 at 16:27
Good answer - I've worked for big companies and I've worked for small ones, and never seen a small one that didn't like employees that were willing and able to do "whatever is needed", not just whatever their job description said. But yes there are downsides too - my least favourite was never being able to take a holiday or a sick day without getting phone calls about issues with systems that only I was familiar with. –  Carson63000 Oct 25 '11 at 2:10

As an HR goon, let me give you the perspective from the other side of the fence:


  • very, very rare is the (wo)man who can be highly skilled at many disparate functions
  • skills that make someone a great manager do not completely correlate with those that make someone a great technical expert (being very generous here)
  • what most people enjoy doing most is often not what they are best at
  • it is very difficult to train/develop a jack of all trades
  • such people, if embedded in an organization, become single points of many failures. This can be very dangerous to organizational stability

Subjectively (meaning my personal experience)

  • most people who think they are good at many things are generally good at one thing, ok at a few things, and mediocre at a lot of things -- but want to be paid like they are great at everything
  • it's easy for this sort of person to get themselves swamped with work and then hold up a lot of projects in a lot of different areas

In Conclusion

  • tdammers is correct in recommending joining a small company - there you will be FORCED to wear many hats
  • organizations do what serves the organization best with the least pain and effort - currently that means the MGMT/TECH split career path progression. Nobody has figured out a better system for large companies yet...
  • I sympathize with your dissatisfaction, and hope you can find fulfilling employment.
share|improve this answer
+1 especially for Objectively/2nd point. –  Jacek Prucia Oct 24 '11 at 8:16
"what most people enjoy doing most is often not what they are best at" I'd expect this to be false more often then not. If you really enjoy something its probably because you are good at it. Now if you said that what people WANT to do most is not necessarily what they are good at, I'd agree. I've seen plenty of technical folks who want to be managers (because of salary) and just aren't cut out for it. –  TygerKrash Oct 24 '11 at 8:27
@TygerKrash I'd say it's the other way around - if you really enjoy doing something you will most likely become very good at it –  Martin Oct 24 '11 at 10:16
-1, I disagree with nearly all of your sweeping and overgeneralized statements about those of us who are JOAT's. It has been my experience that 4 out of 5 people in SD industry suck at EVERYTHING, and 1 out of 5 would be great no matter their role. As far as holding up projects in different areas, you are falsely equating a JOAT to a perfectionist. Many times we get swamped because we are the few on a team that can actually get things done. Also in respect to your "Single Point of Many Failures" fallacy I will say that a specialist can be a "Consistent Point of a Constant Failure". –  maple_shaft Oct 24 '11 at 11:16
(cont.) This may not be the case in shops where software is the primary business, but I've yet to find an HR rep from a non-software company (or a technical recruiter) that actually understood the job requirements enough (assuming that the people that wrote them even understood them) to be able to evaluate a candidate's ability to fulfill them. This is not intended to be a sleight on HR, as SD is a very dense field and it's extraordinarily easy to be able to "fake it" to get in the door. –  Adam Robinson Oct 24 '11 at 16:10

Imagine for a moment that you worked at one of those trendy startups that provides meals in-house, and also that you really enjoy both cooking and programming. Would you expect the company to hire you as both programmer and cook? Can you see why a company might be reluctant to do that?

Cooking and programming can both be rewarding activities, and they're obviously both valuable to the company. But to do either one well, you really need to commit to it. You can't feed the rest of the company very well if you're spending half your day programming, and you can't program very well if you spend half your time cooking. Even if you happen to be both the world's greatest cook and the world's greatest programmer, your work in both areas will necessarily suffer if you try to do both things at the same time, or nearly the same time.

Now, substitute "managing" for "cooking" and perhaps it'll start to make some sense to you.

share|improve this answer
I think this analogy stretches things a bit. Requirements gathering,architecture,coding,customer contact,staff management are all parts of the same 'chain'. Knowing in depth what happens in each link ulimately helps you deliver better outputs from each 'link'. whereas the cooking process has no direct link to the coding process (barring serving spoiled food to make all your developers ill!) –  TygerKrash Oct 24 '11 at 8:40
@TygerKrash - The point is that programming and managing are different activities, and it's hard to do both well at the same time. The OP asks why many companies don't mix the roles, and the reason is the same reason that you don't usually find someone conducting and playing first violin simultaneously. Can it be done? Probably. Is it the most effective way to conduct or play? Probably not. –  Caleb Oct 24 '11 at 12:21
Don't get me wrong I agree with your basic point, but I don't think its quite as black and white as all that. I agree a Project Manager is unlikely to be the best person to fix problems with your application's Messaging architecture, his time is better spend maintaining the budget and managing scope. But, I think it's perfectly reasonable for a Team lead to spend time writing code AND time discussing scope with the client. –  TygerKrash Oct 24 '11 at 12:56
I understand your analogy, but I don't think it's quite so simple as saying that these different activities are so clearly distinct from each other. For me, I really function best when I have a wide variety of activities. –  Stephen Gross Oct 24 '11 at 15:15
@StephenGross It's not usually a separate position, but something that you end up doing as you gain seniority and experience. If you work in teams at your current job, talk to your manager about ways you can work toward that sort of role. –  Caleb Oct 24 '11 at 16:22

The reason why you'd have to choose between management and technical skills is one of people skills and politics versus technology. As @Andrew Heath pointed out, it very rare for someone to become proficient in all these areas.

Being in the situation where you wear many hats, you will not be able to make the right decision, or worse, you are unable to decide anything beacause you are laden with all this knowledge. Making the right business decisions requires a clear view of the objectives, same goes for making technical decisions (having all the facts in one mind doesn't make it clearer). Thus in a business you'll have to find compromises between the two. And that's where politics come in to play. People with lots of technical skill (the ones I've seen) do not like politics because logic cannot be applied to the outcome of such a process. On the other hand, people that like politics don't like the technical skill because A always results in B and that's boring.

Working at a smaller company will allow you to gain skills in may of the roles you've mentioned but the leadership skills will be hard to gain. Therefore you might even be encouraged to create your own startup. That way you are responsible for everything that goes on within your company.

share|improve this answer
Very interesting. I happen to be good at both, but clearly that is a not a common combination. I appreciate the advice; the consensus seems to be that smaller companies can better leveraging folks like me. –  Stephen Gross Oct 24 '11 at 15:16

I believe that it depends on what kind of company you are in. From my experience, those doing coding and testing, usually move into architecture and leadership/management roles as their career progresses.

As their time is more valuable, low level things such as coding and testing can be handled by less experienced people. Design, architecture, leadership, management, etc. requires more experience and is a better use of your time and better use of the company or client's money.

You'll also notice in many companies that architecture is usually a leadership role as well - though a more technical one than that of management.

Of course, all this is just my opinion. Hope it helps some how.

share|improve this answer
Coding is design. Period. You really don't want less experienced people there than in any other part of the process. –  Cwan Oct 24 '11 at 6:28
Management and coding both require some degree of experience, but the exact experience called for is quite different. Management and design is not and should not be the same thing. –  Michael Kjörling Oct 24 '11 at 8:23
@MichaelKjörling I've found that design roles are also leadership roles, but from a technical perspective. –  Lionel Oct 24 '11 at 9:51
@Cwan Coding is design on a very low level. Many companies would have architects and designers working out the strategy, direction, and high level designs of solutions. Just coding would result in a mish-mash of random solutions that aren't inter-operable. –  Lionel Oct 24 '11 at 9:53
I don't understand why people disagree with this post. Coding is absolutely not design. A new grad can come in and code pretty well if they are given the design. However, asking a new grad to do a design will usually not turn out well. Also, a good developer with several years experience can usually do a decent design but would create a nightmare for a system architecture. Experience matters the more abstract the assignment becomes. As for not putting less experienced people at coding; Where else are you going to put them and have them be productive? –  Dunk Oct 24 '11 at 21:11

I've seen this a lot. You're good at what you do and want to get rewarded, but the only way to do so is to get a promotion which means you stop doing what you're good at and move into a management role, which you might be good at. It's a classic Peter Principle scenario.

One option might be to go contracting/freelance. Here people will employ you for the skill you say you're best at. The money will probably be better and get exposure to lots of different companies.

share|improve this answer

It sounds like you might do better starting and operating your own business.

Perhaps offering your services to clients directly, or consulting with others who offer the same services but are smaller and need an 'everything person' to wrangle a project. You could brand yourself as an 'everything technical consultant' which is what a lot of small business clients need.

When I was a developer, I also liked to keep a finger in everything. Still, it wasn't until I transitioned into being a small business owner that I really learned the meaning of "Jack of All Trades".

Just be aware that you will need to pick up skills in a lot of other things, some non-techincal, like Marketing, Sales, Accounting, Product Development, HR, Customer Service, and a whole bunch of other stuff...

share|improve this answer

Yes. Think about it from the employer's perspective. They want to make money and they have a very specific job for you to do. They want you to do it. They don't want you to do other jobs and they probably don't want you to be thinking for yourself.

Most employers don't care about their employees' desires and aspirations. The employee is a cog - the machine is the company.

The advice is to start your own company. Specialists make very good employees, but poor CXO's. Since you like doing different things, you have an advantage: you make a good generalist and a good founder or CTO.

So, find some partners and start a company. You will have plenty of opportunity to do everything.

share|improve this answer
I've found that employers wanted me to think for myself. They often appreciate that I can do other jobs, although they often want me to stick to my original job. They do appreciate willingness to do things outside my job, when necessary. Your experience and mine are very different. –  David Thornley Nov 21 '11 at 18:36
I think you have had some pretty good employers... –  B Seven Nov 21 '11 at 20:38

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.