DEV Community 👩‍💻👨‍💻

Functional Javascript
Functional Javascript

Posted on

Accidental Complexity - Video Notes and Review

The video:

7 minutes, 26 seconds, and the Fundamental Theorem of Agile Software Development
by Joe Rainsberger, from the Agile Lightning Talks (2013-11-07)


accidental complexity
technical debt
spaghetti code
ravioli code
big soupy codebase
plasma ball effect
software rot
BBoM (Big Ball of Mud)

The Notes (with my own added):

essential complication
accidental complication
total complication
TC = EC + AC

Accidental Complication, or
Accidental Complexity

cut corners
feel pressure
have to get it out the door

reduce AC
squeeze out AC


  • think
  • write a test
  • ask, how much does this test suck?

write just enough code to make it pass

clean the kitchen

  • refactor a bit now
  • because if we don't clean the kitchen, then we have to clean the garage


  • is how you reduce AC

To estimate, you have to refactor.
SCRUM cannot work without XP.

My personal review:

vague, no specifics, no examples
mostly platitudes and generalizations
no formulas, no metrics, no measurement strategies
selling his TDD course indirectly
aimed at the beginner to intermediate programmer

Summary and Takeaways:

ABR (Always Be Refactoring) and testing your code

P.S. - Best advice ever for Software Arcitecture :)

Stop building car boats.

Top comments (0)

This post blew up on DEV in 2020:

js visualized

🚀⚙️ JavaScript Visualized: the JavaScript Engine

As JavaScript devs, we usually don't have to deal with compilers ourselves. However, it's definitely good to know the basics of the JavaScript engine and see how it handles our human-friendly JS code, and turns it into something machines understand! 🥳

Happy coding!