[This is a repost of an article I wrote in Oct 2015, with some minor edits.]
As a developer I’ve seen some pretty bad stuff. Staying strong and continuing to enjoy doing the career path I’ve chosen for myself hasn’t always been easy. Sometimes you’re in a toxic environment, could be team mates, management, resources (desks & chairs), time pressure or all of the above. You feel trapped and essentially powerless to affect change. Lots of us have been there, but what do you do?
One of the reasons I joined Readify was to steer my career down a path where I would be able to affect greater change, across multiple organisations, than I could doing plain old full-time development.
But sometimes gigs just suck.
Making change is hard. You can make all the noise you want, but I strongly believe that unless you are in a position to affect cultural change, there is little chance that the situation will improve. Sure you can add all the ceremonies you like, but the underlying suck-factor will still be high.
There are people who are brilliant at this, able to ride in on a white horse and give the tree a good shake. That’s fine if you can walk-away if it doesn’t work. Unfortunately, we live in a commercial reality and we get stuck in environments we would never choose.
What’s a Toxic Environment?
I’ve seen and heard of a lot of bad environments. Environments where there are lots of problems, like:
- The proxy server is slow / broken / miss-configured / laughing at us.
- IT just ignore us and we don’t have the resources we need.
- Management don’t get what we do and we don’t have enough people.
- The PO doesn’t have time for us.
These are all bad situations, but not necessarily toxic (although they certainly can become so!).
A toxic situation is one in which you, as a developer, are:
- Fundamentally compromised in your ability to work effectively.
- Do not feel safe to air your opinions or grievances.
- Feel pressured to compromise your professional integrity.
We must all be pragmatic from time to time. But when that is the norm and there is tremendous pressure to do the wrong thing repeatedly, that’s toxic.
Below are some of the things I’ve learnt that help me get through the times when I feel like I’m pushing that barrow up a hill. Hopefully some of it will be useful for others and I’m all ears when it comes other peoples strategies as well — sharing these ideas as a community is something we do well and can only serve to improve those less fortunate than ourselves!
Step 1 — Listen and Learn (Inspect)
To quote Mickey Mouse, “we’ve got ears, say cheers!” Ears are great. It’s tempting to try and fix a bad situation quickly, but personally I find it easier to sit still and get myself engaged in the existing process, no matter how bad. It’s at that point that you can start to do the math and put together a more complete picture of what’s happening. Look at the people, look at the code base, look at the process.
Toxic environments are rarely what they initially seem and you need to really understand the root cause of issues before you will have any chance of making a difference. Ask yourself the five whys.
Step 2 — Communication and Leadership (Inspect and Adapt)
Be open, honest and transparent at all times. Toxic environments generally have poor communication channels and words can be easily twisted. Make sure you are clear in your intentions and be specific in what you are doing and what you are trying to achieve. Keep a journal. This is just a good idea in general, but it can really help at the end of a bad day to dump all the negative crap onto a page, forget it and go home.
This can be a really good opportunity to show some leadership skills by doing the right thing. I’ve been in numerous places where it’s really hard to do the right thing, as after the 3rd time getting shot down by the PO in a meeting, you just give up and go with the flow. Set the example by doing the right thing even if it feels like a complete waste of time …
because … others see you doing the right thing — builds trust, making people feel safe and thus more likely to open up and just sometimes you get some traction with others who will follow your lead.
Safety is all important. People will generally be far more likely to open up about existing problems if they feel safe. Water cooler conversations are great. Impromptu one-on-ones after a stand-up are great.
Unfortunately, in toxic environments, the only people talking are, in general, not the ones you need to be listening to. Build rapport with the team and not only will it help you understand the environment, but it’ll help stave off the feelings of isolation and make life just a little more bearable.
Step 3 — Change (Adapt)
In the initial phase of building a relationship there is no expectation of behaviour. Over time, that changes and often once in the rut, it’s very difficult to get out of established patterns. Likewise, in established teams, the relationships are ingrained (this is really true in toxic environments).
However, if you change your interaction with someone, they are forced to change there interaction with you. Don’t be afraid to get out of the rut and force some interaction change.
Ramp up the communication and (constructive!) feedback, as well as the frequency. Don’t let those on your team you know are suffering do it in silence. You don’t have to wait for R U OK day to talk to your team mates and colleagues!
And if you’re suffering, try and find a sympathetic ear. Even having a vent to a colleague outside the organisation can help relieve the pressure.
Negative thinking usually creeps in pretty quickly too. For example, it’s pretty easy to start thinking something like “He’s the problem”. Um, no. He’s not the problem. His management style might be a problem. Her approach to software development might be a problem. But in general, people are doing their best. Just because someone isn’t good at their job, and in toxic environments this is pretty common at the leadership (or lack of) levels, doesn’t mean they are intentionally trying to make your life hell. This is a great opportunity to take a step back and think about how you can help them be better at their job.
And it’s never personal. Even if sometimes, the odd cray cray individual wants to make it so, it’s never about you. Stay calm and immediately reach out to your leadership group as this sort of stuff is completely out of order.
Crappy jobs are a great place to look for some PD. Look for new technologies in use that you’d like to learn more about, practice you’re consulting skills, make friends with the local barista, find another cycling nut in the office. All of these things can make your life just a little bit easier.
The pressures in a toxic environment are different. Usual there’s less pressure to be technically brilliant and more pressure to push out code quickly, not lose your mind in yet another 4 hour meeting or scream at the marketing guy who just tripled the price of your product because he’s behind on his sales KPI and doesn’t want to lose his bonus. Again, stretch your non-developer skills and see if you can make even a small difference.
Can you always affect change? Nope. Can you make a difference while you’re there? Quite possibly. It’s one of the main reasons I became a Readifarian. To quote another wise animation, “Just keep swimming”, it might feel like you’re swimming through mud, but if you keep doing your best, looking for opportunities for personal and professional PD, you’ll find that others will begin coming to you, even just to vent frustrations. At the very least you’re getting people to be more open about the problems and setting up the communication channels that (just might) lead to some real change.
Originally published at gianlorenzetto.github.io.