in the last decade I have worked for many companies and many different teams. Some have incredibly strong units with everyone working in a team to achieve the same goals. Others have been a chaotic array of developers drowning in issues and all throwing blame around.
The environment in which we work is intense, hundreds of thousands of pounds are spent on projects with key delivery dates and huge lists of requirements. Sites are needed to be online 24/7 and we are victims on every changing requirements, scope creep, new Laws, and constant software updates. We are always using the latest technologies and connecting with more and more third party software and all it takes is a comma instead of a full stop to being an application ti its knees.
Development is high stress environment which in turn leads to high staff turn overs and disgruntled and unhappy employees, none if this is good for morale and makes programming one of the most stressful jobs out there. I am usually brought in mid way though a project when things are going wrong, deadlines are over running and developers are stressed and overworked and may well have quit as a result.
No matter the situation things can always be turned around. No one is perfect and nobody writes perfect code and by using the principles of Extreme Ownership you can quickly have a positive impact on your team. I strongly recommend Extreme Ownership: How U.S. Navy SEALs Lead and Win. A book written by Jocko Willink an Ex Navy Seal Commander you can easily see how his principles relate to coding. I have worked with a lot of Lead Developers but very few have had any formal leadership training and yet are expected to motivate and lead a group of highly intelligent developers to deliver a project.
Developers by their nature are intelligent people and excellent problem solvers but along with this goes big Ego's. This creates a huge challenge for the lead developer as they are daily problems to overcome and peoples egos and pride often get in the way. When things go wrong (sites go down, features broken, new bugs created, deadlines missed, scope creep developed, requirements missed etc) it can often lead to everyone bickering among themselves and passing the buck. Jocko Willlink has helped me to realise that every single mistake that happens in my team is my fault. Every single issue, downtime, new bug, deadline missed is my fault, without exception and I take full ownership of that fact.
If a bug was introduced because of a new feature being added, it was my fault of not checking the code thoroughly enough. If a ticket was returned because a requirement was missed then its my fault for not making sure the requirement was understood by the developer. If the site goes offline because of to much traffic then its my fault for implementing load tests, or commissioning new servers. Every single issue that occurs on my watch is my fault.
This simple concept has entirely changed my attitude to development and the teams I work in. Very quickly everyone gets on the same page, my team respects me for not passing the buck and finger pointing and the management appreciate the honesty but more importantly the appreciate the opportunity this creates to asses the situation, analysis the causes of the problem and create a plan to stop this issue occurring again.
Very quickly this lets us build a set of lessons learned and allows us to put in place procedures, testes, automated/manual checks, policies, guidelines, comments, tools etc to prevent this problem occurring again.
It is a difficult thing to do, to put ego aside and accept responsibility and ownership of everything, but the results a great. It creates a well oiled machine of developers who work as one unit towards a single goal.