, 19 tweets, 2 min read Read on Twitter
1/ For fun I sometimes like to shock non-programmers about how utterly broken software development is... rant thread 👇
2/ Pick your favorite piece of software: instagram, docs, email, Twitter, the Tesla autopilot, whatever
3/ There is nobody alive who understands how that code works. Not a one.
4/ There are many who understand teeny weeny pieces. But the whole is uncomprehended because it is INHERENTLY INCOMPREHENSIBLE
5/ One cannot simply read all the code. There are millions of lines. It would take lifetimes.
6/ Yet there are no alternatives to understanding code than reading it line by line. If you skip a single line, you could misunderstand it entirely
7/ You protest, “If this is so, how do things work as well as they do?”
8/ People. The knowledge is distributed in the thousands of programmer heads. If all those people died, we’d be blind
9/ Contrast this to a building or a bridge which would not suffer if its creators left. Others could figure it out from plans and inspection, and take stewardship
10/ Not so in software.
11/ Our programming languages are too messy and powerful. Anything can happen on any line of code. It’s impossible to tell what affects what with certainty.
12/ As @girba says, software has a crisis in the exponential growth of lines of code outpacing our linear reading abilities. We are saddling our children with technical debt as surely as we’re saddling them with environmental carbon debt
13/ What’s the fix? Same as the environment: remove the polluting tech and replace with clean tech.
14/ Goto is harmful. So are a lot of other things: statements, side-effects, mutation. Delete those things from programming and invest in their replacements.
15/ We must invent an alternative to reading code line by line.
16/ We need programming tools that can tell you which parts of the code you NEED TO READ and which parts you can SAFELY IGNORE to understand the piece you are currently investigating
17/ We will have succeeded when A SINGLE MERE MORTAL can come to understand ANY PART OF A LARGE APP THEY WANT TO in an amount of time proportional (not exponential) to the ESSENTIAL COMPLEXITY of that part
18/ We will create a world where a single person can know all possible states of their software
19/ I will not live in this world. My kids will not live in this world. But maybe their kids will live in a world where nobody asks “have you tried turning it off and on again?”
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Steve Krouse 🇬🇧
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($3.00/month or $30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!