DEV Community

Bala Madhusoodhanan
Bala Madhusoodhanan

Posted on

Why Architecture is needed with software engineering

Intro

With shift to product development mindset and agile delivery, the notion that any team can build valuable product independently due to ‘loosely coupled architecture’ would be successful exists. Is that true ? What is the value of bringing architecture in software delivery process ?

Just like how a Chef possesses the ability of facilitate and manage decision making in a busy restaurant, an architecture decision making is key to ensure successful implementation of a technology to a business problem.

The Pasta Machines Analogy

Architecture decision are reciprocal as what we design for influence our behavior while interacting with system. Architecture should look for effective design which foster innovation, systematize and provide stable outcome for business problems.

Spaghetti Systems
Bundling a technical solution for a business problem. Every logic of code is connected to one another. The consequence of that is its painful to make a change. In case of a failed change the roll back to stable version is humongous. The impact would be high as it might need coordination with every other user / system that interacts with this system. The result is a stubborn system. This would frustrate business as the risk against the reward to change the system might not be appealing and the system might loose the relevance

Now the question is what caused the chef to go for Spaghetti? Lack of standards in architecture process. Lot of intertwined work experienced to build a change. Constraints with lack of strategic vision / bigger picture.

Ravioli Systems
System that is designed is modular, nested and talks to each components seamlessly. It becomes easy for the product team to enhance the modules based on the value of business case. Since the changes can be contained within a module the change could be managed effectively. Because system is reversible the learning cycle is faster and the risk could be managed effectively.

Standardized process, defined patterns and clear direction on how to build a backlog and manage changes enable a better system design in this case the Ravioli

Image description

Conclusion

Neglecting architecture with product design would be a mistake. Educate the team about the architecture mindset .

Came across the below article for further reading

https://www.architectureandgovernance.com/applications-technology/the-mindset-for-architectural-decisions/

Top comments (0)