Solving Complexity with Simplicity

Leena
Continuous Delivery
2 min readAug 4, 2019

Lets use X framework because it is “cool”

We are DevOps, so we should use XYZ tool for deployment

Only Microservices because Monoliths are bad

We know what users want, so lets build all these features in the backlog

https://pixabay.com/illustrations/maze-labyrinth-solution-lost-1804499/

Software systems are inherently complex because of a lot of factors. We make it complicated by making wrong, unnecessary choices. Every line of code — written by us or added as part of a dependent library — adds complexity. So we should add code only when it is necessary.

It is not just about the code. Unused, unnecessary features also add to the complexity. So, add features only when it is necessary and remove unused ones.

Apply a scientific method to software development, with experiments and feedback cycles. That is what Continuous Delivery is all about. The solution to complexity is simplicity.

Here are a few principles to keep in mind while building software:

Simplicity — the art of maximizing the amount of work not done — is essential (10th principle of Agile Manifesto)

Build Less (Getting Real)

YAGNI (You aren’t gonna need it) — eXtreme Programming principle

--

--

Leena
Continuous Delivery

Co-founder/CTO @ PracticeNow, Bangalore, India. A strong believer of lean principles, an evangelist and practitioner of Continuous delivery