Why software have to be so complex

Alon Rolnik
3 min readDec 14, 2020

--

Much has been written about why software evolves to be so complex.

Every day we add new software, new features, new lines of code, strive to keep the existing logic for backward compatibility, it’s natural.

We need to satisfy our customers, we want to sell more, we want to increase our revenues, this is what we paid for, and so on, but why software evolves to be so complex?

Is it because of our monolith? Will it be simpler with micro-service architecture? smaller teams? more boundaries between teams and domains? Conway’s law? maybe it’s because we use Java, PHP?

Organizations aim to sell more, quarter to quarter. If we won’t deliver on time, the probability to lose money increase, the probability to lose our existing customers increase, we must deliver on time and even better before that, we also willing to reward anyone for doing it, no one can doubt that fact, but why software evolve to be so complex?

I get rewarded for delivery, not simplicity.

Does anyone care?

As long as I think about it, I found that the reason related to the way organizations reward their employees, especially their managers.

What are the KPI’s that we measure our employees upon?
Do you deliver on time? Is it the customer’s churn rate? Bugs?
Do we even try to measure software complexity?

In the beginning, the team is small, usually consists of experienced developers that know a thing or two about software complexity, everyone known everything in the project, developers communicate through blinking with their eyes, the software evolves and yet remain relatively simple.

Then the business grows, customers start to pay for our software, they have demands, they want new features so it will be easier for them to engage with our product, make sense.

Then, more customers join, the demand rises, the organization needs to hire more developers, more managers, more sales, more product, and so on.

New managers arrive, they hire new employees, they want to prove themselves, their employees want to prove themselves, but what they want to prove?

Employee’s always looking for a way to satisfy their managers, if no one measure or reward you for keeping our software simple, why to spend time on it? I get rewarded for delivery, not simplicity.

It’s not that we don’t care, we talk about it every day, complain about it during lunch, but it never really gets a priority.

This is the key question I think, the priority.

Engineering First

I found that most chances for business software to remain simple is when at least one of the founders is an engineer by himself.

Take for example Shopify CTO, he chose to put in front of his Twitter profile source code. He mentioned he still read code every day, although their employee count is over 5000.

It means he cares about the code, he cares about keeping it simple, it inspires everyone in the organization to care about it as well.

When the organizational DNA is “Engineering First”, we expect to see software complexity remain small, although the organization keeps growing toward its goals.

When your CTO cares about your code, the entire chain will care about it, everyone knows they have been measured for it.

Organizations that embrace the culture of “Engineering first” will tend to keep their software simplicity in high priority, their teams could grow fast and keep their software simple toward the business goals.

It will be harder for you to deliver fast without keeping your software simpler because you have been measured for that, we reward you for that as well, as we do with delivery.

Only when the demand for delivery equal to the demand for software simplicity, then we have a chance to keep our software simpler over time.

--

--

Alon Rolnik

Father, Husband, Software Engineer. Blog about software, startups, distributed systems. Follow me on Twitter https://twitter.com/AlonRolnik