What do software design, walking the dog and taking the kids to an amusement park have in common? Not a lot you might think, but personal experience can tell us otherwise.
About 20 years ago we had a small dog. And, despite the children’s promises, it always ended up with dad having to walk the dog. Twice a day, at least. I didn’t always like it, especially when it was raining cats and dogs (no pun intended) but, if it wasn’t raining and the sun was shining, walking with the dog was fun, and it even helped clear my mind. And it made it feel like software problems exist only in a world far, far away.
But do they? At OMP we design innovative software. Thorough and sound analysis is key when designing good software, but innovative software requires an extra ingredient. A fresh idea can be the pinch of salt that changes good software into excellent and innovative software. Here are two examples showing how simple everyday observation can improve your software design.
Some years ago, I needed to design a solution for a very specific problem in our capacity constraints engine. I couldn’t come up with a good idea for an algorithm until I took the kids to an amusement park.
Seeing all these people queueing for the rides made me realize that this situation was not very different from the software problem I had. If a queue is temporarily stalled, and people start to move from one queue to another, whole families move at once, but making sure they don’t violate any constraints (honey, keep an eye on the kids) and obeying finite capacity rules (you don’t want to step on other people’s toes).
Realizing that my problem and the amusement park queue were very similar helped me find the best solution for my problem in the capacity constraints engine.
The second example involves one of my colleagues. He’s a hobby pilot with his own plane, who flies regularly and visits lots of airports. To solve multi-threading-related problems, he simply looked at how airports are organized. At the world’s most efficient airport, Hartsfield-Jackson in Atlanta, all the runways are parallel to each other, allowing multiple aircraft to land or take off at the same time. They don’t share landing space on the ground.
This is also a basic principle of multi-threading and thread-safeness: don’t share information unless you have to.
Taking a step back from your computer and entering real life helps you get a fresh view on stuff. You start to see patterns in everyday things and you come up with new ideas. Occasionally, watching daily life unfold around you helps you solve software problems in quite unexpected ways.
For the same reason, owning a dog helps you solve typical software design problems by simply clearing the mind and helping you view things in a new light.
So, whenever you’re stuck, just look beyond your workstation. The solution to your problem might just be over there, in the real world.
Ready to design innovative software?
With more than 30 years’ experience in software development, finding innovative solutions for complex problems is part of Patrick’s DNA. As a Senior Software Architect, he focuses on making sure the OMP solution fits all environments.