I'm a senior front end developer working on a project that is the heart of the company. Everything is managed and done through the product we are developing.
So when I joined the team I was warned that its hard to work with some of the people and that other developers shortly left after they joined the team. For me this was okay since even if someone is an a-hole I can handle that. Thats not a problem.
One of the developers that is working for 5+ years on that project basically told me that they do whatever they feel like to do and that's why its fun for him/her to work on this project. He/She is an consultant. I thought to my self okay that's strange but then I thought okay maybe its fine because they also told me that the code is tested and commented and so on.
Then we had our first planning meeting for the next iteration. To say that nothing was clear to anybody except 3 developers who are working on that project for the longest time is an understatement. Nothing was clear not even how and when the handover to devops should happen. For a project that was running on production for a long time now.
I was assigned some minor bugs and tasks because I was told that the system is to complex to understand and it would take me years to understand it. When I asked what was so complex. I got the answer that everything is generic and the system is super flexible and that you can model anything in it.
So i started to fix bugs and look into the code more. The code base is a mess. The code is not readable at all. We are using Angular and we are working against the framework. We also have a mixed mono repo with angularjs and angular 15. I showed some code snippets to a friend if I'm the crazy one or is the code that bad? He and some other developers said its not me the code is a mess. We have no architecture. Everything is kind of half finished and self written. I pointed that out and some of them did not see a problem.
I then also started to push to work in an organized way and have better tickets in Jira and also clear requirements instead of making them up as we go. One developer who is also a freelancer then said to my manager that he will quit if we start to working in that way since he does not see the point but management is to scared to push back since this person has so much knowledge about the system in his had that they fear what would happen if he/she would go.
We now have also a record high of bugs and even this is cheated because some real bugs are moved to feature requests.
Everything is tested in e2e test with playwright because we don't need unit tests because with e2e test we are also testing the functions. So it takes forever to do anything.
The UX persons are thought of as people who waste time instead of getting things done. So the product without training for several weeks is not usable by any person even if you have the business knowledge.
Its hard to get anything done without new bugs.
Management does not know what to do because they are scared that the old developers will leave and then the system will break. New developers are leaving because they don't want to work on a broken system and team like that and I'm in the middle of it and can't push because then they will leave.
So I don't know what to do.
Maybe someone can share the experience and what he/she did?
Take a look at this old post by Joel Spolsky "Getting Things Done When You’re Only a Grunt" https://www.joelonsoftware.com/2001/12/25/getting-things-don...
You can add unit test for new and updated features. Don't try to add them to old code.
A bad UX is really a huge problem. Can they replace that person? Can they make a new UX for Android?
In a big ball of mud, you have to realize that correct engineering and architecture are not as valuable as being a swamp guide.
If you love digging into the ooze, you can become very valuable in such a situation. It's not like they'll be able to hire someone off the street who can guide them through the swamp. Learn the ways of the swamp and you're set. Try to build a beautiful cathedral in the swamp and you'll drive yourself insane.
Ambiguity = opportunity to create clarity.
Disagreement = opportunity to create alignment, e.g. on goals and non-goals (but not consensus)
Creating order, clarity, alignment is a sign of leadership. Influence > Authority. The former is a sign of leadership.
Not everyone needs to agree. Not everyone needs to be satisfied. Be OK with that.