I am a mid-level developer at a small company of about 15 people, and I am (aiming at) leading a team of 3. I am concerned that my team suffers creeping disinvestment in the project and company overall, for understandable reasons. Our company is failing to build a developer friendly environment, partly because of human resources problems, but in my opinion mostly because of project management problems. To be fair and square, I stay because I like difficult challenges when it comes to fixing what's broken. Recently, there also have been some change in the C level mindset that make me feel optimistic about suggesting change.
Speaking here just of our team of 3, we have responsibility over maintaining a codebase of just over 150.000 lines of code, representing basically the backend of a single product with sub services. As an example of our technical debt, over half of this code is written in deprecated language version (Python 2.7) and the tasks to migrate to newer versions have planned for over a year and spread out over 6 months; we yet haven't managed to successfully push it. Our last sprint was half full of bugfixes, which isn't unusual. Our code crash often and many of these crashes don't even reach the backlog. I introduced unit testing, but our coverage is low and not improving. We have systematic reviews, but they are not efficiently finding defects. We are pushed to release early and often, but it may require synchronization with other teams to release in sync and that alone has caused much trouble and discussions. It takes several minutes to test and our continuous integration bot responds in 2 hours time, with results sometimes subject to interpretation.
We use Scrum terminology, although we do not implement Scrum entirely. We have the rituals, but many freedoms are taken with the work organization - from urgent crashes popping in the sprint, tasks specified mid sprint, no Scrum master, and more. Developers reported the CTO to impose technical preferences to them despite their objections about it being optimal.
The previous lead asked for a team swap, someone working on a branch of our team is in sick leave (and I know this is work related), someone left before, and someone plans to leave in January. All of this occurred in just our team, over a 2-year time span.
There are contextual explanations to this catastrophic scenario, in the history of the company, in the specificity of our product, in the lack of experience of our managers when it comes to managing software projects, and in the disinvestment and spite of developers themselves; but I am more interested in solutions than analysis, following the axis of 1. developer retention and 2. development value output:
- I would like to put the nose of the management in the problem, but I have no idea what to bring with me. What are good measurements of where we are and how much we improve?
- What are good pointers in terms of project management for a similar situation? I'm not looking for a shelf solution like Scrum, but more like guidelines and small incremental changes to the organization that might lead to improvement.