The most important thing about solving a problem is actually knowing what the problem is. It might sound very obvious but time and time again I run into situations when solutions are being implemented without actually knowing what they are supposed to solve. I already wrote about this in "What seems to be the problem?" but then again, repetition is the mother of knowledge.
But, let me elaborate.
Very often software development companies do things just because other companies are doing that same thing. Management usually loves buzzwords. Completely distracted by those sparkly, little lights that keep shining around them they suddenly can't focus on anything else until they have them. And then, one beautiful morning, the CEO comes to work and says "We are doing microservices!".
We've all seen that kind of behaviour many times. It had happened both with ways of working but especially with the choice of technologies. "We have to go to the cloud", "...use Kubernetes", "...do agile", "Rust is the future". It never ends. I recently heard a great term explaining something similar, Conference Driven Development. You go to a conference, you hear about new technology and once you are back to work, you start bolting it in on your project. But there is an even better term that explains this and it's called Cargo Cult.
Don't build a Cargo Cult
The cargo cult is a belief system that was first described in Melanesia with the advance of the Second World War. When the soldiers came to the Melanesia islands, the isolated and pre-industrial people that lived there came in contact with modern civilization for the first time. For the need of the soldiers a lot of supplies like canned food, medicine and clothing were airdropped to the islands. This profoundly affected resident cultures.
The war ended, the soldiers left but those cultures, not being able to understand what happened, started worshipping items that the soldiers left behind. The build cults around aeroplanes, rifles, helmets, Coca-Cola bottles. They even mimicked some activities of the soldiers. They dressed like them and even did drills with wooden sticks and salvaged rifles.
They didn't know what they were doing or what the things they worship are. But they believed that if they perform those rituals more cargo would drop from the sky.
Don't start another cargo cult. If you want to use a technology or a new way of working, you need to know why. You have to know what problem that new approach is going to solve. Otherwise, you might end up with just another tchotchke on your shelf. You want to "become more agile"? Fine. Ask yourself why. What problem would agile solve for you. Say it out loud and share it with everyone around you. Don't take actions for the wrong reasons.
You are finally acting smarter. You know what problem you want to solve and which tools you are going to use. You implement your solution. But, now, how do you know that the problem is solved? Sometimes it might be obvious but most of the times it won't be. In ordered to make it obvious you have to measure metrics relevant to the problem. That might be time to production, cycle time, customer satisfaction, build time, deploy time, and million other possible ones. Based on these metrics you will know if things really improved and that your problem is now solved.
To recapitulate, start by identifying the problem you need to solve. Measure. Implement a solution. Measure again. With this approach, you know why you did what you did and whether it worked or not.
At the beginning of the post I mentioned UnSpaghetti. That is short for Untangling The Spaghetti, the new podcast me and my friend Tanja decided to start. On our first episode we talked with Ognen Loparski about agile and the cargo cult built around it. I hope you enjoy it and find some value in it.