I made the following observations when I worked in such an environment.
- there are a lot of crusted behaviours (i.e., ”We are doing this since x years and it works.”),
- people are highly depend on each others work but do not work in the same team,
- a lot of unnecessary and duplicated communication,
- huge project handovers that were written in much detail by one group of people and being worked on by somebody else who wasn't involved in the specification process,
- misunderstandings as work results that have been produced by one team and are the input for another team were not created with the same image/requirements/knowledge in mind,
- workflows that feel awkward with:
- information that can be found at different alternating places and in email,
- changes to requirements sent via chat or email and not persisted anywhere else - especially not where you would expect them to be,
- people saying “We will take a step back after x got released to recap how we work together and improve”
- which never happens as there is always something more important to fix/deploy/discuss/define/you name it and because
- people got too many roles and tasks that fill their day, there is limited space and time available to think about how we can evolve as a team,
- teams plan too far into the future:
- the advantage is that you know what you will (probably, with some likelihood) do in the upcoming months,
- the disadvantage is that you get the feeling of working against a deadline almost every single day because you know when you mess up today - meaning you need longer than planned - the rest of the plan is delayed and you will not deliver on time which results in the feeling of being hunted,
- development process feels very linear and waterfall-ish
- features are being specified, implemented and tested,
- there is barely a re-evaluation, if one phase of the process is done you jump to the next one,
- agile bits might get sprinkled in but just cover the non-working processes
- I found stand ups that are rather report meetings and where nobody is interested in what the others are saying (except for the managers) and
- retrospectives that just exist to vent one's anger, which are not taken serious by the responsible people and after which no action is taken.
Of course, for some of the points mentioned a not suitable process for software development might be the cause. However, I find that in the end it all comes down to a culture that doesn't allow change or that makes change hard by requiring you to talk to too many people to get a change accepted. It is a culture where people in high positions define the processes and rules that others should follow. Those people feel very comfortable in their positions and don't see a reason to let others make adjustments. Every change could challenge their status.
Trying out something for a limited amount of time gets refused. This environment results in people giving up on suggesting changes. They go with the flow and do not challenge or question why things are the way they are. It wouldn't make sense because it would be a waste of energy.
This reduces motivation. It makes it really hard for the individual to be willing to give back to the company. I have seen people - actually I have been one of them - coming into this kind of environment, fully motivated to get things done, to change things for the better and bring everybody forward. In the end they became one of the others that stopped believing in improvement, that did the bare minimum every day and complained about it regularly.
Still, I am grateful that I made this experience although it was a tough one. In my opinion, if you want to learn what you really like you have to try out things that might disappoint you. This is tremendously helpful to later on appreciate an environment that is the complete opposite, where you feel home, productive and motivated.
Have you been working in such an environment? How did it make you feel? How did it influence your work?