Letter To Software Developers

I am a consultant. I see lots of projects in trouble. Sometimes they are in trouble because of technical problems, but more often the problem is management.

I am a consultant. I like to fix things. However, when the problem is bad management, and the management can't yet see the need for change, I generally can't fix that.

When this happens, I hurt. Developers who produce shoddy work on slippy deadlines start thinking that it's their fault. I've been there, and nothing pisses me off more than to see someone doubt themself, when the fault lies elsewhere.

If you are in this situation, here are some things to remember:
Who has tried this out (the quitting, firing)? I know at least one situation where it might be a solution. -- MartineDevos
Tried it. Half the technical staff quit. The manager didn't get fired. Staff reductions were considered an opportunity for cost savings; critical open positions were filled by people from the manager's previous organization. (No, he didn't have pointy hair.)

Most of the patterns of dealing with grief applied. People went through denial, anger, bargaining, depression, and finally acceptance.

QuittingEnMasse sounds nice, but there are a lot of logistical problems. People want some stability for their families, and some continuity for their careers. -- PaulChisholm

I left my last job at least in part due to the poor management practices of my direct manager, actually several people either left or transferred for just about the same reasons. Guess what, the project was delayed indefinitely, and now that manager is a director. Go figure. -- CarsonWilcox

In the face of organizational insanity, strive to stay sane. You might have to leave, or you might get fired, but the alternatives - internalizing the insanity and taking a big hit on your sense of self-worth - aren't worth it in the long run. Besides which, the folks around you may be in need of a good example to emulate, especially if they aren't getting it from a boss.

As for getting a bad boss removed, storming out isn't very effective. Try PullDontPush?: Give their name out to all the headhunters you know, with a glowing recommendation.

-- DaveSmith
This sort of idiocy is the main reason I went contract. Now that I can afford to (sort of) ignore office politics, I make a point of telling managers when they're being ... err, umm ... obtuse? Basically, I try and set a good example for those around me by maintaining good working practices and documenting managerial mistakes or attitudes in the form of memos and e-mails.

But yes, when it comes down to it quitting is the last resort. I've done it before and will do it again I expect. --KeithDerrick

When a manager is pissing me off, I make sure that I let them know. Furthermore, I make every effort to make their unacceptable position uncomfortable for them. I call this ShareTheGrief?. -- JohnFarrell

or perhaps the above should be called YouFeelMyPain?. -- DinoMorelli

GriefTransfer? was the phrase I coined. I can't help but think there must be a better way.

It seems as if I disagree with the original author on several points. The first point is that "You can always act right, even if you are being told to act wrong. You can always test your code, refactor, and work closely with other engineers." What Ward ([sic?] see below -- Jim Coplien) recommends are good things to do, but I don't believe that these things are constructive with respect to the bad management situation.

First, I believe that "acting right" requires telling your manager that your task's or project's schedule will slip, and being prepared to defend your reasoning and stand your ground. Also, be prepared to offer help in achieving the project/customer goals - be constructive. Standing your ground doesn't mean quitting if you don't get your way, so you may end up with what you consider an unreasonable schedule anyway. All hope is not yet lost, people sometimes reconsider their positions, even managers.

By the way, you would probably prefer not to be in the position of saying this about a schedule you yourself set, so when you are buttonholed in the hallway or your manager looks at you in a meeting and asks the proverbial "It'll only take X weeks, right?", you should try the "I'll get right back to you on that" approach rather than succumb. Of course, if the meeting is with his own management or, worse, with customers, you'll have to use your own judgment.

Secondly, whether a scheduling disaster was of your own making or somebody else's, you owe it to your company and yourself to raise the possibility of a schedule slip as early as possible. It is pretty silly to announce that a task/project has to slip the day after its deadline. You should indicate the expected slip (with numbers, if possible) at every status occasion - and better if you can offer ways to cut down the task/project at the same time. Doing this may get you labeled as a trouble-maker in your manager's eyes, but it might also get your manager to reevaluate the schedule.

Thirdly, don't get fired or laid off. Quit first. I've seen too many people with families struggle to get a job when they don't have one. When a manager has two equivalent applicants and you are out of work, two things are true: 1) the manager will tend to prefer the other applicant because someone else already wants him or her, and 2) if the manager offers you a job it will almost certainly be at a salary below what he or she would have offered you if you'd been working. The truth is that it's easy to get another job when you have one, and hard if you don't.

Fourthly, if a manager ever yells at you, find a way to quit at your earliest opportunity - unless you consider that verbal abuse doesn't include yelling, screaming, and fist-pounding.

Fifthly, as to the author's statement that "If everyone quit, they'd fire the manager instead." I think that he must have meant if they quit all at once. I've seen several organizations where there has been complete turnover more than once and the manager was still in place. The turnover happened over the space of a year, typically.

Finally, I think that you can't always act right. It is honorable to tell your company when you realize that you intend to leave but haven't found a new job, yet. It is a good manager's responsibility to plan for the replacement of a person who announces his or her intention to leave. (A really good manager would have convinced you to stay, of course.) Thus, when you leave will be the earlier of 1) you find a job, 2) they hire a replacement, or 3) they decide they don't want you around poisoning the atmosphere. Guess which is most likely.

Thus, if you consider things bad enough that you intend to leave but don't yet have another job in your back pocket, you cannot tell your company. I consider this a sad moral dilemma. There are some consolations to this though. One is that most companies I've seen also offer you this same consideration - dropping the hammer on you without notice. I've heard this called "sound business practice" by more than one CEO. Of course, you'll have to be the judge as to whether your company falls into this category.

Another consolation is that most companies (in California, at least) include an "employed at will" clause which allows them to lay you off without notice, but which also indicates that they offer you this same privilege - thus, they avow that they don't mind you leaving without notice. And by the way, in spite of this "privilege", I still recommend giving enough notice (e.g., at least the two week minimum) to your company to avoid leaving your task/project in the lurch. After all, it's the right thing to do.

-- ChuckSiska

Friends -- I am not the author that started this page. I have enjoyed lurking here however. And I find I agree with most sentiments. -- WardCunningham
Sometimes you can't quit. See PearlsBeforeSwine for some suggestions on keeping sane on a doomed project. -- BetsyHanesPerry
Sorry about my assumption, Ward. I've corrected my entry. -- ChuckSiska
I am resigning because the customer for the project I am working on has absolutely no idea how a software development project should be managed. This customer has done and continues to do the following:

Bottom line, this customer cannot be satisfied. A former co-worker before resigning often said that relationships with customers should be win-win for the customer and the company providing the products/services. Clearly, this situation is win-lose, win for the customer, lose for us. Despite all of the problems (and there are more in addition to the above list), my company is committed to finishing this. I for one will not stick around. Unfortunately, my departure will only make things worse for my soon-to-be former coworkers who must continue to work on this project. For them, I have a great deal of sympathy. Whatever pain the customer feels due to my departure is well-deserved. For them, I have absolutely no sympathy.

-- KeithWedinger

See TheAnalogyMayHold

The customer might think they're winning because they're screwing the developers, but will they still think that when they realize it's never going to ship? Wankers.

In XP we have learned to know how long things will really take. This gives us a lot of confidence when we talk about schedule, since we're the only people who know, and we can keep the discussion mostly on the facts. It helps keep things rational (though it's not in itself sufficient). See ExtremeScheduleNegotiation for more. -- RonJeffries
As per Chuck's comment above, "I think that you can't always act right," I pseudo-disagree. If things start getting bad (manager uses a pure "SLOC produced" count for an annual review), you can always make it very clear that you aren't particularly pleased with the environment for such-and-such reason. Naturally, you'd need to include some sort of solution, like design contributions or features implemented or something. And blow the dust off your resumé. No, it's not perfect -- intending to bail, or at least weighing one's options in the market, without bluntly saying "That's it, I'm leaving." But... it's not too bad, either. If you haven't committed, there's not much to tell. Of course, none of this would happen if they had done what they were supposed to do in the first place.

-- AustinDavid

Having been in this situation a few times, I can sympathize. Something that doesn't seem to have been mentioned explicitly here, though is the importance of the psychological aspects of work. I was once in a thoroughly intolerable job :- the marketing people continually accepted (and even suggested) impossible timescales, the MD would come round every few days and shout at people, all the developers were forced to work long unpaid hours, if I ever stayed in town at the weekend I would always be called in for some panic, and so on. I thought about quitting. I really thought about quitting! I brought my resume up to date, typed a resignation letter and put it in my jacket pocket. But then a strange thing happened. The work conditions were the same but somehow they didn't stress me out so much. I knew I had a "loaded gun" in my pocket. "One false move and the job gets it!". Because I was no longer trying so hard to make things better for myself and my co-workers, I had more time to do just that. I found new confidence to say "no" to the MD. In the end I was fired, but they had to pay me a lump sum of "redundancy", and I had learned the confidence to set up a consultancy company. I have never looked back. -- FrankCarver

If they label you NotaTeamPlayer and then fire you, [your] insisting "that they explain their reasoning up the management chain" does not work. You've been trumped. Management respects the labeller for "protecting the Team from you". Or so I've heard. ~- PhlIp

A trick I learned recently while everyone was QuittingEnMasse was to QuitSuddenly without finding a new job first. That way, you can work with people who recently quit. If you try to find a new job before you quit, you have fewer possibilities because of the part of people's contract that prevents them from "directly or indirectly soliciting" you to leave.

Of course, this only works if you can easily find a job within the two week close-out period. I guess that's true of most people reading this. -- PeteBevin

I've recently read an article about that theme. The author's resumé was: Love it or change it or leave it. That's the way I've done it. But i know, trying to change things is very seldom possible. I had no success with this attempt either. But Keep your head up: it is hard but very valuable to learn how things are not done!

I am living in Germany and we've to give notice to our company several months (mostly 2 or 3 or even longer) before we can leave. And vice versa. Better or worse than American habits? -- ManfredSchaefer

In the U.S., most people are "at will employees". That means the employer can fire you at any time, but it also means that you're under no obligation to return from lunch. As a practical matter, two weeks notice is considered "professional". (Using up your remaining sick leave during those two weeks is left as an exercise for the reader.) -- JohnBrewer

Interesting - do you have a reference for "at will employees"? I think it boils down to (a) do you want/need a good reference after you leave, and (b) would it affect your reputation in "the network". -- PeteBevin

See http://www.nolo.com/dictionary/dictionary_alpha.cfm?wordnumber=513&alpha=A for a definition of at-will employment. In the U.S., if you don't have a specific employment contract, you are probably an at will employee. At several jobs, I've actually had to sign a statement that there was no employment contract and that my status was "at will." Even if you are an "at will employee", employers still can't fire you for certain illegal reasons (race and gender everywhere, sexual orientation in some locales), and have to give advance notice before certain mass layoffs.

See Nolo's Employment resource page for lots of info on all the vagaries of employment law. http://www.nolo.com/category/emp_home.html -- JohnBrewer

For more on firing/quitting conventions around the world, see TheyCanFireMe.

View edit of December 16, 2013 or FindPage with title or text search