Today, everything is about speed. Technology teams around the world are in a rat race to create great technology solutions faster than anyone else. The premise of this thought comes from the demands of the industry, but what’s the point of speed if your solution is going to hit bumps and road blocks in the future? Great question Watson!
Instead of sounding too nerdy with business jargon like Reusability, Automation, and BizDevOps, allow me to further dismantle these buzzwords in an everyday-life example.
Like I mentioned earlier, speed is a Godly force, so businesses want to think in terms of how fast they can reach the customer (time to market). When a merchant approaches their tech expert for a piece of computer code, they concentrate on achieving results with speed.
Many young technocrats start working on the code as soon as they get the brief. This is not only a dangerous approach to take, but it takes away the only real thing humans contribute to build a solution nowadays – Thinking.
Let us take for example a food delivery service. We have two people; the chef, and the foodie. The chef needs to register the order, prepare the dish, and finally deliver the order on time, preferably sooner.
This seems quite the laundry list than a food delivery. And they would prioritise speed to keep tummies happy and orders repeating. Whereas, the foodie need to only pay for their order from a variety of options.
However, if the chef thinks deeper, he or she may opt to design a microservice availing the option to package the order for someone unwell or an online method of tipping. Perhaps we could have a festive-themed delivery person. And honestly, who wouldn’t enjoy that?
Jokes aside, what design thinking adds to this code infrastructure is malleability of the product. Thinking beyond current objectives adds character, which shouldn’t hurt to go the extra mile.
Design thinking is about enabling the ease of changes to be made in the future. A product is only good if it is reusable. Such an architecture involves every solution to be independent pieces of code communicating with each other, making the design scalable, changeable and its parts reusable.
Microservices embrace modularity helping to deal with the complexity of software systems and solutions, and drawing thought prior to beginning coding.
The right way to start is with a pen rather than a keyboard.
The first step in creating a product with great design is to list the individual services or ‘modular pieces’ of the architecture. This is the stage wherein we define change that the product may want to have and what is the best business logic to go by.
One must think of every possibility. For example, the highly popular mobile game PUBG, will need to retire its beautiful Halloween-themed designs once the season is over.
And the only way a microservice can perform independent of the rest is to have its own storage infrastructure just as having a hard drive to store your films or photographs. These are elements that allow you to foresee possible challenges, prototype & test the solution, envisioning solution even before you write your first line of code.
Design thinking and the need to ensure every solution is built on the foundation of agility, adaptability and performance has set the stage for microservices to stop being a trend, but become a standard. With this said, just using microservices architecture without the design thinking element will heavily impact the future performance of the product. This would also mean the future reusability of the online assets and microservices created.
Think first or be forced to think later.
Thinking before you code reduces the need to test the product after it has been delivered. But if you think later, you substantially impact the speed of delivery. Customers want agility, flexibility and high performance solutions built fast. We can only deliver consistent design where thinking before coding is wisdom.
(The author is co-founder Iauro Systems. The views are the author’s own. The Quint neither endorses nor is responsible for them.)