Slide 1

Slide 1 text

Armin @mitsuhiko Ronacher lessons learned from making things complex and not setting the right constraints early THE COMPLEXITY GENIE

Slide 2

Slide 2 text

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?

Slide 3

Slide 3 text

TECHNOLOGY DOESN'T MA TT ER BUSINE SS OUTCOMES DO

Slide 4

Slide 4 text

COMPLEXITY IS FELT AS A TAX IT MAKES EVERY CHANGE MORE EXPENSIVE

Slide 5

Slide 5 text

-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

Slide 6

Slide 6 text

IF YOU WANT TO FIGHT IT: TAME COMPLEXITY EARLY ON

Slide 7

Slide 7 text

-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?

Slide 8

Slide 8 text

IT STARTS WITH LACK OF CONSTRAINTS

Slide 9

Slide 9 text

-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

Slide 10

Slide 10 text

-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

Slide 11

Slide 11 text

-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

Slide 12

Slide 12 text

-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

Slide 13

Slide 13 text

I NN ER PLATFORM E FF ECT & SECOND-SYSTEM SYNDROME

Slide 14

Slide 14 text

-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

Slide 15

Slide 15 text

“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

Slide 16

Slide 16 text

-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

Slide 17

Slide 17 text

FIGHT IT EARLY K EE P FIGHTING IT IT'S WORTH IT