??? Murder Your Darlings
Douglas Squirrel
Make tech insanely profitable with new provocative ideas every Monday in my Insanely Profitable Tech newsletter (see Squirrel Squadron in Contact Info)
This is an extract from the a previous edition of the Insanely Profitable Tech newsletter - my weekly firecracker to the Squirrel Squadron packed with provocative thoughts and tips. To get the full version - it’s all free! - just sign up here: https://squirrelsquadron.com/
Why does a mirror reverse your left and right sides, but not exchange your head and your feet? This is actually a subtle illusion caused by the symmetry of the human body: you’re imagining that you could step into the mirror, turn around, and become what you see on the other side of the pane, but in fact what’s going on is something else entirely. You can’t become the image you see in the glass because it inhabits a completely different world.
Software design and delivery suffers from a similar distortion. A “computer” used to be a human, and we still treat our silicon friends as if they were mirror images of ourselves, incredibly fast but fundamentally performing just the same steps as we do. So it’s natural for us to think of errors or deficiencies in a program as easily correctable; all we have to do is tell the machine to keep better track of which task to do first, or undo what we just did, exactly as we would direct a person. But every engineer fears the change request that starts with “Just” or “Simply”, because what’s demanded is inevitably not at all straightforward. The computer that’s displaying these words to you is constantly doing work it throws away, storing information it guesses you’ll want, and interrupting itself to do housekeeping you’re completely unaware of. Hidden complexities like these are what make instructing a machine so incredibly delicate and frustratingly slow–and those same subtleties have a terrible habit of magnifying tiny mistakes into billion-dollar global catastrophes.
This is why I regularly emphasise the importance of defining your negative space, the features and challenges you’re not going to take on with your software, and relentlessly enforcing those decisions through constant triage. Just like a nurse on the scene of a disaster, you need to dispassionately assess which tasks and bug fixes are worth saving and which are too far gone to be admitted to the development pipeline. And you need your engineers to be intimately involved in that process, since they are best placed to understand the “mirror world” where the hard becomes easy and the easy impossible. Sometimes it’s even best just to delete your backlog and start over.
I was reminded of just how hard this advice can be to follow when I met with an executive at a well-known global charity this week. His employees came to the organisation to serve a noble purpose, not to enrich themselves or shareholders, and so it is particularly difficult for these committed team members to say “no” to changes that would, after all, build communities and save babies. Keeping morale high and fighting burnout is a constant challenge when your team know that decisions they make may have such visceral impacts. But it’s even more important in the “purpose-driven” world to screen relentlessly to preserve the possible and discard the undoable, or the strain to do too much may doom the overall mission–see for example the cautionary tale of One Laptop Per Child. Whether your purpose is profit or philanthropy, taking concrete steps to build trust and psychological safety will help your team muster the courage to “murder your darlings”.?
Let me know your thoughts, and don’t forget to sign up to get the next one direct to your inbox with even more content!
Building something new with OdysseyAI | Experienced hands-on CTO & Technical Director
7 个月The mention of OLPC made me chuckle - it reminded me of the excellent whipping they gave it during the famous “Sea Tunt” episode of Archer. Worth watching if you haven’t seen it.