Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Complexity Genie

The Complexity Genie

lessons learned from making things complex and not setting the right constraints early.

Armin Ronacher

December 17, 2024
Tweet

More Decks by Armin Ronacher

Other Decks in Programming

Transcript

  1. Armin @mitsuhiko Ronacher lessons learned from making things complex and

    not setting the right constraints early THE COMPLEXITY GENIE
  2. I build software — particularly Open Source software — and

    teams. You might know me as creator of Flask or other Open Source projects. -Armin @mitsuhiko Ronacher -mitsuhiko.at -Bluesky: bsky.app/pro fi le/mitsuhiko.at -Twitter: x.com/mitsuhiko -GitHub: github.com/mitsuhiko Who am I?
  3. -It's okay to be a large, immovable ship -But then

    you need to have the force to break the ice -If you are small, you need the agility -You need to pick one -How much are you willing to pay for your complexity? NOT EVERY BUSINE SS N EE DS AGILITY
  4. -Something is more complex than necessary or appropriate -It starts

    from lack of constraints -Excessive complexity results in low developer morale and satisfaction “I could have done this in 15 minutes on my side project but now I'm waiting 3 hours for CI to pass” WHAT IS COMPLEXITY?
  5. -Arbitrary constraints are a good start -They stop being believable

    quickly -Business constraints are needed to tell the story -Done well they are believable constraints -People can rally behind them for much longer CONSTRAINTS ARE G OO D FOR YOU
  6. -Pomodoro Timers -Made up deadlines -“must be written in Java”

    Arbitrary -Product must be cheap -Protect against unpaid traf fi c -Must support self hosting Business
  7. -initially they seem the same: -con fi g loaded by

    evaluating a touring complete language (con fi g.js) -declarative fi les (con fi g.json) -over time, you realize the damage that this causes: -how can my IDE load it? -how can I provide assistance? -do i now need to sandbox it? -how do I cache the dynamic nature of it? NO CONSTRAINTS = ANYTHING GOES
  8. -pyproject.toml / setup.py in Python allow custom code execution -compared

    to package.json which does not -people started getting addicted to the dynamic nature and fi ght the removal -a lot of complexity in resolvers, complex tooling necessary -once it's there, how can you ever remove it? THIS CAUSES REAL PAIN
  9. -It starts with kubernetes -It then incorporates helm -Then someone

    adds custom tooling on top of it -Then someone else adds tooling on top of the tooling FIGHTING COMPLEXITY WITH MORE COMPLEXITY
  10. “The inner-platform effect is the tendency of software architects to

    create a system so customizable as to become a replica, and often a poor replica, of the software development platform they are using.” EACH ONION LAYER WORSE THAN THE OUTER
  11. -Eventually people give up -They ask for a fresh start

    -They dismiss everything that has been created -Including all the useful things in the mess -And run at risk to not set the right constraints to prevent it from happening again DECLARING TECH BANKRUPTCY