I'm familiar with that situation.
1.) You're in no danger, there's likely no accountability at any level and you don't have to be in a hurry to quit. As a relative newcomer, what you see as a death spiral is likely status quo for the organization - it's a zombie.
2.) You never had a chance at effecting any real change, so don't feel guilty about bailing.
Realize that as bad as your company is at building software, it is probably equally bad at other things, like: Recognizing that someone has checked out, or Firing someone.
When I was in your situation I went into cruise control. I did the absolute minimum to avoid disciplinary action and began seeking out greener pastures.
This was my first development job, so I wasn't sure everywhere else wouldn't be the same. I also didn't have a very strong resume yet. I also wanted to switch from Java to Ruby. It ended up taking me almost a year, partly because I wanted to be certain the next place would be an improvement.
The next company I went to work for was awesome :-)
OP, you appear to have plenty of experience and can probably be chose-y about your next move and still not have to wait very long. There are a lot of great places hiring.
Bad mouthing former employers in an interview is totally not cool in my books.
Sometimes companies are just damn awful.
Even if you worked for Satan himself, and he had Kafka and Joseph Heller design the Waterfall development process, and your team lead had the IQ of a telephone pole and the personality of a Comcast customer service rep.
You can say you weren't a good fit. That you felt the toolchain hurt developer productivity. Talk about how you want to be part of an organization that will let you hit your maximum level of achievement. Talk about how you hate bureaucracy because it puts barriers between you and the work that needs doing.
That's all fine. Show me, the interviewer, how driven you are to create.
But the second you start talking about how miserable you were, or how much of an asshole you thought your boss was, or about how much of an idiot your team lead was, you've basically cost yourself the job.
You might be completely right, but if you start talking about this during an interview, you come across as an antisocial, whiny, needy child. If these problems were so upsetting, why did you stay so long? Why didn't you try to fix things?
I want people in my company that will actively fix problems, not just complain about them.
I, the interviewer, can't change anything about your last job, and complaining to me about it doesn't help either of us. I'm going to wonder how you'll be to work with if you can't put the past behind you. I'm also going to wonder what you'll say about me, and the team, when you leave. Will you paint us in the same light as the job from hell?
If you whine about how much you hated your last job, all you do is turn on every red flag I have regarding personal interaction.
Saying bad things about previous employers in a constructive manner is not a red flag. (Wasn't there a recent study showing that the people who complain also tend to be productive?) I sure hope so, because I complain a lot.
If the company was badly organised, behind the times and resistant to change, I don't think there's anything much wrong with saying it. IMHO.
There are lots of people in the world who are impossible to satisfy, who blame all failure on everyone but themselves. They have complaints about everything, justified or otherwise.
By bringing these things up, a person who does not otherwise know you has two possibilities:
- The company you worked for really was that bad. This claim cannot be verified in a meaningful way.
- The candidate you're interviewing is one of these dreaded negative nancies who will disrupt your workplace as they proceed to complain about everything and redirect their own problems upon other people.
Since there is no way to tell which is true, and I have no incentive to trust you, and every disincentive to bring in someone like that into my office, I will not hire you.
Direct, concrete criticism is fine. "We used the waterfall model and I don't believe it works" - but do not come off as bitter, because that's exactly what the Negative Nancy typically sounds like.
If you say a single negative thing about your past employer i will immediately be fearful that you are that type of person. In fact, when I interview developers I specifically try to get them to say something negative about their current job. I do this because whiners are so unbelievably destructive to an organization that I never want to hire one.
Now I ask you... What positive purpose does it serve to bad mouth your previous employer to a prospective employer?
I'm afraid I don't consider a well reasoned and well thought out criticism to be 'whining'
Hello again, friend. I politely request you reconsider what I wrote. I didn't say that you would be a whiner. I said that since I don't know you that my fear is you may be a whiner. Since people who whine are so damaging to organizations, I would almost certainly not hire you regardless of your other attributes.
Having said that, I certainly respect honesty. But please realize there are times when it's better to say nothing than to be completely honest. I've been married for 10 years so I have some experience in this. Have a nice day!
The interviewer can and will draw their own conclusions, both about the previous employer you're talking about, and more importantly, you.
They put out bad software, slowly, but seem to just about keep on ticking over. Suggestions for improvements are often met with mild positive feedback and a sense of amusement that you think you can actually change the place for the better.
Toxic is the right word - my personal experience is that hanging around to try and untangle/learn from the environment makes me super unhappy, and unmotivated.
So since the place is clearly clueless, you need to decide what your going to do. When you talk to people about this place in the future, they are going to ask you "why you stayed" and your answer is going to reflect on your character and your outlook.
You can try various strategies to fix things, some might help, some might not. But you can practice you skill in identifying roadblocks.
You can switch into anthropologist mode and start studying the people who are dysfunctional. Find how how complete idiots maintain a lock on their power base, what techniques do they use if it is clearly not skill in their job.
You can practice organizational dynamics, try to figure out who the 'players' are and who the 'pawns' are. It's a sort of morbid curiosity and of course once the players notice you are looking at them you will have to be on your toes and bob and weave lest they corner you on the board. (You don't want to end up fired with everyone in the organization thinking you're the reason the world is screwed up, and a good player will try to make that happen to protect their turf)
I wish there was a way to quit and on the way out mark the entrance with ultraviolet sensitive ink or something so that others could know what goes on there and stay away.
Since you are asking these questions though, you are in good shape.
While this is extremely interesting, it's not something that can be learned in a reasonable timeframe, and may never be learned if you don't have the right approach or luck into the relevant facts.
For example, one company I know of, the CEO was in charge for 8 years, while the company constantly lost money. They struggled to come up with new products, flailing around. They only stayed afloat through patent lawsuits, without which they would have been long out of business.
During this entire time, the CEO made mid-six figure salary. I use to remark, "If I understood why that company was still in business, I'd be rich".
Why did the CEO stay in charge? The answer is very boring. 2 of the 3 board members had already checked out, writing off the entire investment, and the third was personal friends with the CEO.
The answer is not always interesting, and there's not always as much to learn as you'd hope.
I’ve been in such clusterfucks, probably a dozen times (that's a very large number no matter how long your career is) and, as much as I need to tell me that, I never really learned from staying. All I learnt from trying to point out how brocken the situation was (the three first times) was that people do not like to be pointed out their mistakes, and some might actually commit suicide for that. The fourth time, my desk-mate wrote a book on how bad the situation was; the book was really good, actually, in a lucidly desperate and unwillingly helpful way. It ended up selling a dozen million copies (US Ed.: ISBN 0-375-42373-7.)
After that, I’ve learnt more than I want to, and more than I can actually use about too-big-to-fail, harrasment, corporate fraud and covering one’s ass. The only useful tidbit: I’m not happy in larger organisations (something anyone who met me for ten minutes can figure out).
Chiph is right: you will learn something, and be able to avoid patterns, but that's actually not very useful: you can tell a mess without experienced it before (you just did) and two messes never really look alike.
Staying would just make a part of your CV uncomfortable (mine is a minefield); one is probably easy to avoid or explain, and a great source of jokes for dinner-parties.
I make very funny presentations listing fuck-ups; none of them has ever actually helped anyone around me to not find a creative way to get something deeply wrong.
The company was French electricity monopoly EDF, and their reaction to the book was instrumental in propelling it to success. Its creator is now widely known as the French version of Scott "Dilbert" Adams.
But that's not the worst thing. People actually enjoy it, if you listen to some, they found the perfect "job"! But it's crushing me, I'm a very passionate developer, and I miss coding. I'm done working for big french companies, I started looking for greener pastures a week ago, and I'll probably quit my consultancy firm next week.
(we = Mozilla Paris)
Hiring managers can tell that you've been working on boring, soul-crushing stuff. This sense is almost indistinguishable from the sense that you are a bored individual; hiring managers won't bother to figure out what's what.
It can take a couple of years to get your 'mojo' back if you have been in the wrong situation -- I would urge you to act wisely, and move before you lose it. You'll be glad.
I think this also applies to problematic projects like this toxic one. The mess seems too big to clean up. But it isn't. You just have to start somewhere and clean up little by little.
In the past I had to implement a feature in a toxic software project. While implementing the feature I also refactored some messy code and even deleted some functionality nobody every used (thousands of lines). By doing this I broke some parts on purpose and added some functionality to fix what was broken.
Now others who were also working on the project had to deal with the stuff I broke. Ofcourse nobody liked it, but when they knew I provided better functionality to fix the problems everybody was happy because they knew this had to be done.
Broken gets fixed, shitty lasts forever. That's why sometimes you need to break shitty things on purpose.
If that doesn't interest you, then quit immediately for greener pastures. Even if there's no risk to you, you only get one career, and staying there is wasting time.
That's not a bad idea. I did basically that for almost 2 years while working for on a trainwreck of a project managed by clueless PHBs. I just came in, did the bare minimum I needed to do to stay employed, and reserved as much of my mental, creative and emotional energy as possible for Fogbeam work after hours. Hell, I'd probably still be there, except I got so bored and tired of the B.S. that I started speaking my mind about things, and pissed off a lot of the managers, and eventually got laid off.
In hindsight though, getting let go from that place was a blessing. You can do that deal, but it takes a toll on you after a while, even if the job is nominally "easy". There's a unique sort of mental stress that comes from grinding through soul-sucking boring bullshit, tedious meetings, and inane bullshit day after day after day after day...
The day I walked out, the sense of relief was virtually palpable.
So I guess I'd say "go this route, but don't let it stress you out too much. Tolerate it as long as you can stay sane, then just bail, or force them to let you go".
If you're based in the Washington DC area, drop me a line. I'd love to connect and help you find a better position. (I'm not a headhunter or recruiter - just a non-profit developer who doesn't want to let one clueless NGO tarnish your impression of all non-profit tech for life.)
This is to do just well enough to avoid the ire of the government regulators. They don't need to earn customers. They don't need to offer quality services. They just need to do just well enough to scrape by. This is exactly what they are doing.
So the first thing you need to do is adjust your expectations and understand that it is all a charade, and that that is what the real game is.
The second thing you need to do is take a look at yourself. Do you want to work in such a place? If not start looking for another job now before the environment poisons you. The real danger is that it can poison what you want in your career if you want to effect change.
I would put forth that you'll learn more by this experience about how people deal with failure and what happens afterwards than you would if you left. Will there be shouting & tears? Probably. Will people get fired? Almost certainly. Will you get fired? Chances are low, but not zero. Worst case scenario - you get some severance money.
Given the track record of successes in the software industry (few/poor), learning what not to repeat will probably take you further than anything you could learn by swapping jobs and doing CRUD work. And if you get asked about it, you say "I could have left, but I intentionally stayed on, as I felt that this was something that I needed to experience so that I wouldn't repeat these errors."
The important thing is to act strictly as an observer (do your work, but .. observe what is going on around you), and not to engage in any schadenfreude or gloating. The people that lost their jobs -- for the majority of them, what happened was not their fault and they shouldn't be blamed or made fun of.
So build up some savings (you should have 6 months of fixed expenses saved up, anyway), sit back, and enjoy the ride.
I recommend you get the hell out, ASAP. Take your time enough to try your best to pick a new landing spot that is not so dysfunctional (even then, there's no guarantees, but give it a good shot).
Life is short. Pick a new spot that will be as enjoyable as possible on a daily basis, while also carrying your career in the direction you want to go, and GET THERE ASAP.
(And I say that from experience -- I've found myself in a few of these messes myself).
No one is getting fired. This project is in steady-state.
Barring that, adhocratic takeover. Loudly proclaim "I AM TAKING OVER THIS WING, IF YOU LOVE ME FOLLOW ME" and start treating the project as if it was only you working on it. See what those who do follow you want to work on, and split tasks according to mesh-management protocols.
This assumes that you care about the project getting done, if you don't, pull a Wally and enjoy all the extra free time. :)
I took myself off the project, sat down and wrote an OS for the existing hardware and dragged a few coworkers along for the ride. By the time I left, almost all of the software group was working on my OS.
This was many years ago--I would never write an embedded OS today but this was the early days of microprocessors and good embedded OS software was very expensive and generally licensed on a per use basis. Trying to get the company to pay license fees would have killed the project immediately.
The OS and subsequent application software took about 2 years and worked quite well. It helped the company get a contract from GM Saturn. I learned a huge amount in those 2 years. It didn't help me keep my job at the company though. The broken nature of the company wasn't fixed by simply delivering working software. There was really nothing I could have done to extend my career there and in hindsight, I should probably have gone and done something different.
There was me and one other person doing all the work, so we just tuned everyone else (four people) out and forged on (to the extent of ordering parts and PCBs on our own dime, etc.)
The higher ups were getting two sets of reports, one saying "we are stuck and need more resources", the other showing progress. Eventually the final recipient of the sensor called a meeting, at which we just showed up with three working units from the first production batch (we had gotten the PCBs printed and I had hand assembled them, but it wasn't really fair to call them prototypes anymore).
That caused quite a bit of cognitive dissonance :)
Mesh management is a WIP.
There's a part of me that wants to treat Wally as my role-model! He's definitely my favorite Dilbert character.
Unfortunately, I had the (good|bad) fortune to inherit (or learn) a strong work ethic from my dad when I was a kid, and while I don't mind a bit of goofing off here and there, I could never pull a "full Wally". And now that I have a startup to work on, I have a hard time even letting myself take a day off without feeling guilty. :-(
While this fish was rotting from the head down long before you arrived, it would be better not to be around when stool samples hit the gaseous oscillator. Some of it might stick to you by mere association.
I've seen people quit their job and be forced to come back when they couldn't find work elsewhere. Why take that risk when there's no need?
I can hear the higher-level discussion in my head: "We don't have a plan, we don't have clear requirements, and we have no process ... that means we're already agile, right?" "Let me look at my checklist, Jeff. Yes, it seems we are in fact agile."
Lean startups are talked about a lot on HN for example but there are plenty of debacles and snake oil consultants in that realm as well.
- they are no longer in their early 30's. I have a family to sustain.
- don't see themselves as rockstar developers. I constantly dabble in side projects from natural language processing to web development to building Android apps. I feel I provide a lot of "out of the box" input. But since I am a hard case of impostor's syndrome I don't feel like I could eg. lead a team. Or, heaven forbid, do a start-up.
I feel I am wasting my life here, but the market is not great for self-conscious devs.
Maybe you should stop giving your self syndromes and acknowledge that you know how to program. Businesses are looking for people who know how to program, why do you think the market is not great? Last thing I heard many businesses are still scrambling for web and app developers.
It is a well kept secret, but the kind of team leader that doesn't think he's a good team leader often is a good team leader. If you position yourself as just 'one of the boys' you get a lot more honest feedback, and you'll be less of a cock to your team.
Doing a startup as someone who lacks confidence and needs to sustain a family seems like a bad idea, unless you could get into YC or something.
Also.. maybe I'm naieve but you should do something about your confidence, aren't you raising a child?
Because basically the only interviews I got in the last months were in other enterprisey gulags. It's not enough to know how to code, you need to be able to market yourself, be part of the attention-based economy (I am an introvert, I don't really know how to leave an impression in the web 2.0) and presumably invest a ton of time in grooming your open-source projects.
I am no complete failure, over the years I have done quite some stuff - but a lot of that is NSFW, so not so great as a showcase.
>maybe I'm naieve but you should do something about your confidence, aren't you raising a child?
I don't really know what to make of this - I do, but it's not like I can just pull myself together to raise my self-confidence. I have been making gradual improvements, but I just can't flick a switch.
I'm sorry I am not trying to say that it's something you can just do, but you were sounding a bit defeatist. If you say you're making gradual improvements I respect that.
The attention-based economy is simpler than you make it sound. The idea is just to build something you like, NSFW or not, and put it on github. Use some hip technologies to show you have the ability to learn new technology.
For fun, here's a small recipe:
Pick a combination of 3 technologies that have been up on HackerNews lately, say AngularJS with MongoDB and Node.js, do 2 small projects with them, and maybe an Android app in Java (or whatever your enterprisey language of choice is) that does something silly like open your garage door or plays words your child said.
Now you have 3 original projects on github that show aptitude in frontend dev, backend dev and app dev, fill out your github resume with at least 3 forked open source projects you find interesting, and another 2 you submitted a patch to (just fix a spelling mistake in their docs or a trivial bug in their tracker).
I bet you could build this github resume in 2 months of free moments in evenings/weekends. Accomplishing this will give you a confidence boost ('hey I can do hip stuff') and I bet it'll do your resume a lot of good :)
Recently, I realized that my dabbling behavior is what keeps me from achieving expert status in any particular tool/language. I am broad, not deep. Oh ...and I discovered that I don't like managing people.
Are you asking what you can do to improve the project while you hunt for a new job? I'm not sure what "immediate and eventual haul" means. It sounds like you feel some personal or professional motivation to help the project, even if you have already "checked out".
I recommend that you start your job hunt immediately, network with positive and connected people in the organization while you still can, leave a good impression with your managers if possible, and generally avoid rocking the boat.
Even though it may feel cathartic, burning bridges is unproductive. This is a small industry and you can only hurt yourself. The organization will not make any changes based on anything you say in your exit interview that might rescue the project or improve the lot of the co-workers you leave behind.
For example: Document inefficiencies, cultivate worthwhile relationships if applicable, establish trust where available and create a turnaround plan. The goal is not necessarily that you have to save everything but provide an open communication channel in case someone decides to shift culture for the better.
Lastly, stay humble. While it seems toxic and a road to nowhere, remember that where you are could be worse. You are a professional. Don't lose sight of that.
If you make the exit and explain to anyone who asks why you are leaving that you feel you are under utilized (no negative remarks) then they have to accept that. If they press, be diplomatic. Good luck.
Just walk if you can afford it, if you can't afford it start looking for something better and walk as soon as you have found that.
Until now, I still in this toxic workplace, hope for changes always came everyday, then again reality is cruel, I'm thinking to quit, surrender, find other place and I will.
So, my poor friend, if there's no good progress at all, please get out, you and your talent deserve better.
Do your job, find a better place switch. if the money is good, consider one more lap at accepting the state of affairs and stay clear of the guillotine that will eventually make an appearance.
It sounds like you did more than your part.
In hindsight being let go was the best thing for me. It's hard to realize it when you're in it though. My advice to you is to leave and (try) to never look back.
Considering bad mouthing your previous employer, just don't. You can share such details after you're hired and people have gotten to know you. Mention the work you've done instead during interview.
That is the impossible issue. By refusing to acknowledge the fundamental technical debt, ALL other conversations are entirely pointless.
You end up trying to come up with backchannel misleading ways to solve the real issue... "maybe if I just say we need more tests" ... "maybe if I recommend a new architecture, which will force a rewrite" ... etc.
The problem with all these things is that if they aren't validated and required by the technical debt (which is unacknowledged), you just seem crazy!
I have now had to deal with crippling technical debt twice, and I think it is maybe the most toxic issue I have ever seen, made worse when there is an emotional connection or overvaluing of that code.
At a certain point, if you have too much technical debt... I think you just have to declare bankruptcy on it and start over, doing your best to reuse the bits that are worth it.
I left a defense contractor because I didn't like the way they managed projects. I found a new job and gave two weeks notice when a hole appeared in the schedule.
It is healthy to think about moving on even when you are in a stable, even great situation. If you don't, you won't make your life an adventure.
Saying all this as a generally satisfied person, I have no doubts I would be looking for an exit in your shoes.
I would find one too, because as an engineer, interviewer, and needer of engineering talent to work with, I know that good candidates are hard to come by.
You are in demand and will be for a long time.
From where I'm standing both outcomes seem favorable to you
1. you earn respect and maybe more
2. you get out of a failed project and dysfunctional community
Since this is non-profit, it almost certainly doesn't pay you well enough to waste your days on a massive death march project like that. No unit tests? You've gotta be freakin' kidding me. Cut and run as soon as you can get another offer.
For me for example, I worked one year in a big telco where they hired lots of CertifiedScrumMasters, which tried to introduce scrum, but at the same time managers without any technical knowledge came walking into our room asking when feature X will be delivered, and why it is not delivired yet.
Introducing automated testing went very difficult since the budget was strict. Bad developers where hired because they had a "Certified Java" certification. It's a mess.
I now work at a startup and I get to hire the people! :-)
Welcome to the wonderful world of IT :-)
My advice: You're going to be looking for a new job very soon and during the interview you're going to be asked about your last job. You'll tell them how bad it is and they'll ask you what you did about it. At this time you need to think about how you'd like to be able to answer that question, and act accordingly.
What I have done the couple times I found myself wanting to move on was to inform my supervisor up front. I ask if it is ok for me to seek new challenges elsewhere.
This way there is no need to hide from them you are actively pursuing another job and once you get a new offer, they are not surprised when you give the 2 weeks notice.
Now, needless to say that until you find something else, be professional. Show up on time, with a smile and perform to the best of your abilities.
As you transferred in, and seem to show some loyalty to the org transferring seems to be a good possibility to look into, particularly as I agree with Incision: you in no danger (of getting fired/etc.)
On the other hand projects that are going down are horrible for your mental health and sometimes physical health, and as such getting out is important.
That doesn't mean they're not nice people, and that they're stupid (well ok sometimes it does), but it usually means they're working poorly. Often the organizations lack leadership because people with leadership skills tend to go for money.
That's the advantage of living in a capitalist society though. Organization level reboots are relatively easy.
You're passionate enough to have written this. Most people do not. Don't let this situation destroy it.
My co-founder lived in that kind of company for 2 years. He learned a lot of what not to do but it took its toll.
Sidenote. We're looking for passionate people.
Or put into place unit tests into the code you do write. Or do awesome work on what you are meant to be doing? Is this at all possible?
We could have one anon account for submitting anon posts, whereby upon request, a one time access password would be generated.
I don't feel comfortable bringing suggestions up as I was instructed that I'm not the source of change.
...such as a supervisor that is resistant to learning new information.
I was in a similar situation (not quite as bad), but I couldn't leave because of a business obligation. I survived by insulating myself from the dipshits. We formed an isolated 'blackops' team within engineering that was beholden to nobody but ourselves. We were able to move at lightspeed compared to the rest of engineering.
After a year our small team actually began a major pivot for the company (culture, technology, etc..) and breathed new life into the company. Most of the diphits were jettisoned and the others were moved into supporting roles.
But before you leave write a very well considered and professional memo and send it to the CE/board/exec team, offering to meet with them as well.
Keep it internal, and leave it there.
I would aim at communicating three things:
1: That a problem exists at your level, and give three examples of how this manifests. Focus on how things work rather than on people and personalities and the overall implications for the project and organisation.
2: Your understanding of the root causes of the problems. For this it's best to canvas other people but make sure the conclusions are your own and not blamed on others. Focus on causes that are not people but processes/structures that have et the organisation up to fail.
3: Your recommendations for the senior exec/board etc. Again I would give tangible things they can do that do not involve individuals, such as immediately de-scope the project, bring in certain external help, separate out this department and that and so on.
If they are smart they will meet with you, and even keep you on in a role where you can help make changes. I suspect they will not, but at the very least you will have tried, and they will have evidence that they should not ignore.
Think about your old workplace as your ex-husband in a divorce. Why would your ex be happy if you told him he has bad breath and would benefit from regular workouts? He will be offended and angry.
A company may say they want input from ex-employees, but it's a huge risk for the ex-employee to give it and there is no upside. Keep quiet, or lie if you must reply.
My advise is to send only a neutral written notice. If there is any verbal communication, keep it positive.
If the poster would like a reputation as a nice guy - then sure, he could leave without saying much and hope that nobody says anything bad about him, or even remembers that he worked there.
If he'd like a more proactive approach, then he could try to leave a reputation as a nice yet strong person, a competent person who was brave enough to try to help, but also polite enough to escalate it quietly.
Imagine being were offered a job at Enron, or with Bernie Madoff, knowing what we know now. Who would take it? Who would steal away into the night if we found ourselves there? Who would first try to do something about it or at least document that we saw things were wrong and/or try to escalate?
I would hope I would be firmly in this camp, trying to be someone who is unafraid to live to my own values, not those of others.
To reply on the divorce example:
A thoughtful discussion about why things are not working out between two partners is always in order, even after the divorce. We are all trying to learn. But just as the example of bad breath is not the root cause of a divorce, some of the symptoms in the original post are not the real problem.
The organization isn't going to care about your feedback. They're not going to change things.
Best thing to do is just save your breath and move forward.
It's their problem now, not yours.