Not seeing the forest for the trees?

Lost in the details
Generally, this means being unable to grasp the overall situation because one is focused on the minor details. It happens to all of us, and despite really wanting not to repeat it, we find ourselves in the same situation again and again.
Like being lost in a forest full of ghosts1, we get lost in the day to day hustle of creating software. There are always deadlines, be they self constrained, or something that Sales have sold and must be delivered by a specific date. Looking at the next round of funding, watching the runway get smaller and smaller. The pressure is unrelenting.

What goes wrong?
We focus on getting customers requirements, generating specification, or trying to articulate a coherent vision. Agile tells us to iterate a lot, but that’s not always possible, for example in safety critical industries.
We focus on optimising the code, writing it faster and faster with AI while getting as
much testing done as possible. Code reviews become a distraction and a road block, leading
to LGTM (Looks Good To Me) comments or worse, descending into tabs vs spaces flame wars.
Security can wait until we have a product. It’s a distraction and a road block. We can fix it later. Well, chances are you won’t have a choice if there is breach or you will have to refactor swaths of code.
How hard can operations be? It’s just a docker image, right? Throw it over the fence and let the DevOps/SRE worry about it. What else are they going to do? We can do multiple releases per day so what does it matter if one fails? AI can fix it for us.

Fix the current problem. No matter how many yaks one needs to shave, it is worth doing now. No, yesterday!
This is known as head-on-fire optimisation. And, we’ve all been there. We’ll be there again.
Aside in Mathematics
In Mathematical optimisation theory, there are two types of maxima, local and global ones.2 When trying to optimise a function, one of the most common trap is to focus on the local ones. Sometimes, an optimisation technique will focus on that and never escape. Yes, the solution is good, but it’s not optimal.
This is exacerbated in bi-level optimisations, where you aim to reduce one function while maximising another. This is what happens when you try to set a congestion charge: Maximise the revenue while minimising the congestion. It is really hard.
Almost all optimisation algorithms have an inbuilt systems to try to escape local maxima. The details vary, but it’s (nearly) always there.
So, what’s the solution in the software world?
The Solution???
There is no one-size fits all solution.
There are things I do that helped me in the past. One that stands out is to step back, have a walk, and let my subconscious do the work for me. It’s quite good at coming up with weird and interesting solutions. A good night sleep helps too!
Another would be to take our MOT. It’s been designed based on our 100 years of experience with all the above in mind. It’s a gap analysis. It’s a health check. It’s therapy. It’s discovering what is wrong. This is why we sign an NDA! We want you to be able to say the truth otherwise, we cannot help.
Imagine, if you will, a day when all the drama is removed from your software production: no panic, no crisis, just smooth software releases that exceed your customer’s expectations. This is what we have done in the past and can do for you.
How about getting in touch to see how we can help you?
-
The photo is from Aokigahara (青木ヶ原) AKA the Sea of Trees (樹海), a well know haunted forest in Japan. ↩
-
The same is true of minima, but that’s neither here or there for this. ↩