Episode 8: Clean Room Development

Share:

Listens: 0

Flipping the Bozo Bit

Technology


This one’s all about the music. What if you had to rewrite your software after every release? In This Episode: The conceptual difficulties of other peoples' code, even when those other people are you. Legacy code and your own conceptual traps. Legacy code and demon possession. Legacy code and multiple personality disorder. What if you have to rewrite your code for each fix or deployment? “Write a new version of the code, minus the bug.” Lego oriented programming Binary vs texty interop ClassCastException vs sloppy parsers. “No, no. All shall match!” Log it and move on. Loosely coupled components vs statically-typed messages. The freedom to write crap code. The side-tracking concerns of the typical code review. “Okay, I’m having a connection.” Guitar! Writing code as performance. Improvisation, instruments, scores. Rewrite as process is kinda like jazz improvisation over a chart of chord changes, right? Sax might work better than a symphony orchestra when you need to improvise. My secret weapon is Clojure. Banjo! “And then I come in with my ukulele and just get upset.” Ukulele! Guard rail programming (driving by unit tests). The interface docs are the app, not the code, not the implementation. The transitive nature of object oriented spaghetti How to decouple? Look to the data. State data vs event data (moments lost like tears in the rain vs the eternal). Injecting your dependencies. Is that a euphemism? Turing complete config language. No! “All you get is English.” If all you have to spec components is English, components have got to be simple. Built-in monitoring over extensive testing, the app’s business logic is to test itself? Ultimately, design (the score or the changes) is king. Design is “how it works”. “I was hoping you were going to say something brilliant. Uh….” Nexi of information. What’s the difference between technical debt (bankruptcy) and not having the source code? “Technical debt is worse than having to rewrite from scratch every time.” “Whenever ‘c’ came along, I played ‘c’. Then I was silent.” The first thing to jettison with multiple rewrites are the pointless abstractions. Improvisation + experience. On-boarding new devs via rewriting. “The knife dropped itself from my hands.” “The code went off the deep end.” “We chained ourselves to the technical debt.” “The business didn’t let us fix it.” Download MP3