Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

This question may be considered subjective (I got a warning) and be closed, but I will risk it, as I need some good advice/experience on this.

I read the following at the 'About' page of Fog Creek Software, the company that Joel Spolsky founded and is CEO of:

Back in the year 2000, the founders of Fog Creek, Joel Spolsky and Michael Pryor, were having trouble finding a place to work where programmers had decent working conditions and got an opportunity to do great work, without bumbling, non-technical managers getting in the way. Every high tech company claimed they wanted great programmers, but they wouldn’t put their money where their mouth was.

It started with the physical environment (with dozens of cubicles jammed into a noisy, dark room, where the salespeople shouting on the phone make it impossible for developers to concentrate). But it went much deeper than that. Managers, terrified of change, treated any new idea as a bizarre virus to be quarantined. Napoleon-complex junior managers insisted that things be done exactly their way or you’re fired. Corporate Furniture Police writhed in agony when anyone taped up a movie poster in their cubicle. Disorganization was so rampant that even if the ideas were good, it would have been impossible to make a product out of them. Inexperienced managers practiced hit-and-run management, issuing stern orders on exactly how to do things without sticking around to see the farcical results of their fiats.

And worst of all, the MBA-types in charge thought that coding was a support function, basically a fancy form of typing.

A blunt truth about most of today's big software companies! Unfortunately not every developer is as gutsy (or lucky, may I say?) as Joel Spolsky! So my question is:

How best to work with such managers, keep them at bay and still deliver great work?

share|improve this question

closed as off topic by gnat, Graham Lee, ChrisF Aug 31 '12 at 11:33

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

I've marked this as off-topic, but it's still an interesting question. I suggest it might be better-asked at the Workplace.SE beta. – user4051 Aug 31 '12 at 7:49
@GrahamLee Thanks! May someone with the right privileges please move the question? – Curious Aug 31 '12 at 7:58
Note that Joel Spolsky is advertising for his own company. This implies that comparisons needs to be favorable. – user1249 Aug 31 '12 at 8:08
@Curious I'll ask the Workplace mods if it's suitable for their site and move it for you if it is... – Yannis Aug 31 '12 at 8:16
@Curious - The Workplace mods have said it's not suitable in it's current form. A reformulated version might be OK though. – ChrisF Aug 31 '12 at 11:35

While developers are perceived to be ignorant of the business problems, less technical managers will look down on developers. Developers need to learn the business cases and start driving or suggesting improvements in business terms. Once developers and managers are speaking the same language, things get easier.

This is as much about an attitude change. Yes, there will always be ahem stubborn individuals in management. However, creating an "us and them" attitude reinforces this from both sides.

share|improve this answer
+1 well put. A good programmer/manager tries to see the other end of the story. – jgauffin Aug 31 '12 at 7:37
If only I could upvote more than once... – user4051 Aug 31 '12 at 7:50
Probably 90% of non-technical managers I have encountered didn't even understand the business problems quite as well as the developers. I think its funny when the product owner asks me to start writing all the user stories because they are too hard. It only makes sense that they more than double a developers salary while getting sent to run a booth at X convention in Las Vegas. – maple_shaft Aug 31 '12 at 8:54

Option 1 : Become manager yourself and show everyone how to do things right. You will probably find out it is not as easy as many programmers think.

Option 2 : Leave and find better place to work. I believe there are many big and small companies that at least know of this problem and try to solve it. With varying degrees of success.

share|improve this answer
I agree with what you say in Option 1, but often the managers themselves make it not so easy... I have tried Option 2 (not solely for this reason) 7 times already! :) Still to be lucky! Thanks... – Curious Aug 31 '12 at 7:31
Seven times? Maybe it's not them that is the problem.. (sorry for being blunt) – jgauffin Aug 31 '12 at 7:35
@Curious: 7 times during how long period? Don't expect things to click into place immediately! You might need some patience. – Joonas Pulakka Aug 31 '12 at 7:50
@jgauffin I have already said 'not solely for this reason'! :) – Curious Aug 31 '12 at 7:54
@JoonasPulakka - over a period of 15+ years... :) – Curious Aug 31 '12 at 7:54

Your job is to deliver great work. Managing is a support function, its purpose is to enable you to deliver great work - act as a buffer between you and the clients & stakeholders & politics & sales etc, remove obstacles, abstract away everyday crap that prevents you from achieving your best.

Think of the memory manager. It's not the boss that commands you and your programs, rather, it frees you from considering everything else that's going on in the computer, letting you to concentrate on what's essential for your program. That's what Joel is writing about, that's how managers ideally should work.

Not all managers are perfect, but nor are you. Nothing is. Unless things are totally crazy, then just suck it up and do the best you can, ignore what annoys you, and concentrate on your work. If you deliver great work, the managers will eventually respect and trust you more and let you work more in your way, once you've shown that you can deliver great work.

It's okay to work in a 70 % perfect organization. If your situation is really bad, then switch your employer. But don't give up too soon; the process of earning trust - convincing your managers and the organization of your abilities - can take years.

share|improve this answer

keep them at bay and still deliver great work

Good luck with that. I started my own company and that's really all I can suggest.

Hopefully in situations like this, the engineers band together and if theres a real issue, either a technical project manager, a technical product manager, an architect or your own dev manager can understand the scope of your work, and keep nontechnical people out of your way.

But it doesnt always work that way. I worked for a huge tech company once where the manager WAS supposedly technical and when the devs complained about non stop meetings with 4 different project managers day in and day out his response was - OK so you want MORE meetings with project managers.

I feel that over the last 10 years technical "talent" as in actual talent has been incredibly marginalized by the business side of software organizations and this is a problem for us careerwise.

Managing high paid developers with low paid business people is like sending your kid sister to lion taming school, it just doesnt work.

But one solution I will definitely side against, is lying. I have seen really good developers try and ward off managers by filling them with stories that have no basis technically to get them to go away. Dont do this, if you do, you have sold your soul, and thats worse than having a crappy job.

share|improve this answer

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