Solving Complexity with Simplicity

Aug 4, 2019 · 2 min read

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

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

Tidbits about Continuous Delivery


Written by

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

Continuous Delivery

Tidbits about Continuous Delivery

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade