Why developers hate chaos and expect order in startups

Why developers hate chaos and expect order in startups

As a Developer you are programmed to expect order in everything. Every module and function should have a naming convention and nice structure. You want your code to be clean and tidy and any prospect of code chaos terrifies you and keeps you awake at night.

Common Developer wisdom is that complex systems should grow from simpler system that work, and that’s a reasonable theory for code.

However, as developers we believe that everything else in life should be clean as in our code. It’s simple deduction.

Common Developer Wisdom about complexity

While this is true for code and software, you need to understand that Software is a deterministic environment where things work or don’t work. It’s usually very binary.

Deterministic environments have very predictable outputs for a predictable input, and only you can fuck up if you don’t plan your architecture and implementation well and then you get a shitpile of code that is not maintainable anymore.

There is some unpredictability in software too, but it’s mostly caused by deployed software. Networks, operating systems etc are not under Your control and shit can happen anytime (DevOps is your friend).

Fallacies of distributed computing

Why Startups are different

Startups are the complete opposite of clean code. They are very unpredictable because every new business with a new business model exists in a very non-deterministic environment (competitors, customers and their expectations, team dynamics fluctuations, business risks etc.).

The inputs are not predictable, and the outputs are uncertain.

You might have a good business model hypothesis or even a strong opinion about what will happen, but you are very probably wrong.

Production, measurement and customer feedback are the only north star for a startup, but even that can’t bring complete order.

Having determinism and predictability in a startup would be wrong since that would mean that you are not pushing the boundaries. If your business model is predictable and you have zero chaos, then your business is not a startup or at least you are not hustling hard and moving fast enough.

However, this doesn’t mean that (relative) determinism is not good. Determinism is a goal of a startup, and it’s achieved by the traditional build-measure-learn loop where you iteratively can come to a predictable business model and outcomes by using qualitative and quantitative data (user feedback, analytics etc.) to make informed decisions.

Build-measure-learn — The startup way

However, to come to the predictable outcome you need to go through iterations of chaos and unpredictability. The business model might be simple, but the overall environment is very complex. Startups are forged in fire.

Developer Frustration

Many developers expect order in a chaotic startup environment and can’t adapt and that can cause a lot of frustration in a software team since negativity spreads like wildfire.

You are programmed in a wrong way, but you are too biased to know that.

Common questions that arise from a need for determinism: Where is my task? Where is the specification? Why do we have problems with sales? Why do we need to save money? Does the CEO know what he is doing with the startup strategy? Is this going to succeed at all? Are we all going to fail?

In the end everything revolves about temporary fear and not understanding the opportunity of uncertainty.

Startup Mentality

A developer that works in a non-deterministic system needs to adapt to two different ways of thinking.

You need to be deterministic and work to have order in your code, but at the same time you should be non-deterministic and flexible on a product/business level to experiment and learn.

Startup Non-Determinism vs Code Determinism

Non-determinism, chaos and experimentation is good to keep the business model flexible and it must be present to be lean.

However, the same environment that enables a startup to be flexible and learn is not always welcome in startup teams.

Chaos is a good thing if you understand the opportunity.

Chaos is where order can set in and you can be part of bringing order to a new business, which in startup lingo is discovering a scalable business model, which is the equivalent of business order.

You can be the person to bring order and that’s the biggest opportunity of your career. Every business values warriors that brought order and long term success.

It’s hard to bring order and transform an already successful company as employee no. 56,211. It’s easier as employee no. 3.

The truth is, the whole startup team needs to fight to get to stability, and that’s a great story to tell. You can easily get addicted to the fight and struggle after you acquire the right mentality.

In normal companies everything is organised, automated and nice and there is no opportunity to change the environment, business model etc.

Is order really what You want? what do You learn from order? What impact can you have?

Remember: Diamonds are born under pressure and in chaos.

Embrace Chaos

Success is nice, but company transformation, bringing order to chaos and failure stories are what you learn from and it’s much sweeter. Psychologically we value more things that are hard to get than an easy ride on a sunny day.

After i get old i want to have X stories i can tell people. I want to push my own boundaries and live to my full potential.

Am i going to get those stories from working in a predictable 9 to 5 environment where i get my tasks and get shit done? No.

In other words, a predictable and cushy environment is a comfort zone and definition of boring.

By working on a very chaotic and unpredictable startup that is changing something in the world you write your own story, and this is exactly what we are doing every day in many products inside Ministry of Programming.

Work on startups. Learn, embrace chaos and bring order. Live to tell the story.

Thank You for reading

If you learned something and want to buy me a coffee or beer — Donate with Crypto