Building incredible software for your customers starts with having a great feeling. When a system is new and engineers are excited to work on it (who doesn’t love a greenfield project?), motivation is easy to find.
Things get more complicated once a system is live and requires support. Decisions that have been made during the creation of a system often work against how we want to support it – and these decisions can be seen as a type of technical debt.
As the debt increases, the load on the supporting teams increases too.
How we respond to that increased load on our teams speaks of our organisational culture as well as our organisational setup.
To improve a culture, you don’t just send everyone on a training course, or run a survey, or give everyone a pay rise. Sure, some of those things can help – but what you really need to ask yourself is – how do we organise our software and our teams to minimise our support burden and maximise value for our customer?
By examining the systems and processes we have in place and removing impediments to fast flow, as well as reorganising for effectiveness, we can bring that good feeling back to a software engineering effort.
I use the principles of team organisation and alignment from Team Topologies as a model of how modern software development should be done.