Happy Programmers Day! Good to have one day to focus on the happy bits (yes, pun intended), because as Peter Welch colourfully embraces…“Programming Sucks” (thanks Chris). It’s less of a paean to computing failure and more of a powerful illustration of the black box opacity of it all.
- “Not a single living person knows how everything in your five-year-old MacBook actually works. Why do we tell you to turn it off and on again? Because we don’t have the slightest clue what’s wrong with it.”
- “The only reason coders’ computers work better than non-coders’ computers is coders know computers are schizophrenic little children with auto-immune diseases and we don’t beat them when they’re bad.”
- “Trillions of dollars depend on a rickety cobweb of unofficial agreements and ‘good enough for now’ code with comments like ‘TODO: FIX THIS IT’S A REALLY DANGEROUS HACK BUT I DON’T KNOW WHAT’S WRONG’ that were written ten years ago.”
The moral of the story really is to not get caught up in goals of perfection because it won’t find a welcome home on any computer. And when stepping into the world of computing, appreciating its imperfections and idiosyncrasies are the first step to being sanely productive.
- “Imagine joining an engineering team. You’re excited and full of ideas, probably just out of school and a world of clean, beautiful designs, awe-inspiring in their aesthetic unity of purpose, economy, and strength….Every programmer occasionally, when nobody’s home, turns off the lights, pours a glass of scotch, puts on some light German electronica, and opens up a file on their computer… This file is Good Code. It has sensible and consistent names for functions and variables. It’s concise. It doesn’t do anything obviously stupid. It has never had to live in the wild, or answer to a sales team. It does exactly one, mundane, specific thing, and it does it well. It was written by a single person, and never touched by another. It reads like poetry written by someone over thirty. Every programmer starts out writing some perfect little snowflake like this. Then they’re told on Friday they need to have six hundred snowflakes written by Tuesday, so they cheat a bit here and there and maybe copy a few snowflakes and try to stick them together or they have to ask a coworker to work on one who melts it and then all the programmers’ snowflakes get dumped together in some inscrutable shape and somebody leans a Picasso on it because nobody wants to see the cat urine soaking into all your broken snowflakes melting in the light of day. Next week, everybody shovels more snow on it to keep the Picasso from falling over.”
Finally, his lament recalled the Leadership and Management balancing challenge. The “Leader” inside the Programmer strives for the “Good Code”, but the “Manager” is a master of keeping “the Picasso from falling over”.