Supporting the Ten Thousand
May 2018: A confession: when someone emails to a large technical list a “simple” question, I’ve sometimes in the past felt a sense of “how can you not know this? Everyone knows this! We solved this in 2004!”.
But of course everyone can’t possibly know even “the basics”; there’s no such thing as “herd knowledge” among software developers. There’s no “All Developers Everywhere” mailing list (thankfully), and there’s no monthly “Developers Journal” which new grads are forced to pore through until they’re fully caught up (again, for the best I expect).
There’s also no getting round the fact that 2004 is starting to feel like a very long time ago - we’re closer to 2030 than 2004 even now, and people born in 2004 will be starting Comp Sci degrees all too soon.
As I reach the likely midpoint of my career - either the pinnacle, or the beginning of the decline, depending how cheery I feel on any given day - the balance of “people doing this longer than me” tilts inexorably towards “people who started on the path long afterwards”.
Every year, every day, someone starts using a computer for the first time; starts programming for the first time; starts using a new language or database for the first time. And something we in this industry do all know is that solving programming problems can be excruciatingly hard! Starting out, matching my ‘}’ with my ‘{‘ was a hell of a job, with “unmatched parenthesis” being my only clue.
One can forget, with years of experience, how hard the simple stuff actually is to the newcomer. Every F1 racing driver surely started out making the same harrowing gear changes as the rest of us.
As with most insights in life, Randall Monroe got here before me: Ten Thousand. As he points out, every single day in the USA roughly 10,000 people become adults. Most of those won’t become software engineers, but worldwide I’m sure we welcome far more than 10,000 software newcomers each year. Every single one of them may encounter the Windows/UNIX line-endings clusterfudge for the first time one day, or bump their heads against URL encoding mysteries, or - oh the humanity! - run ‘rm -rf’ in the wrong directory.
Let’s take Randall’s view; let’s celebrate the fun things we know (“CR and LF - strap yourself in for this!”), let’s by all means relish the simple pleasures of knowing more stuff than the software novices. But let’s also find the satisfaction of passing that knowledge down. Let’s be kind* when junior developers ask “simple” questions, and be clear that subjectively “simple” to a 20-year veteran is a very different to thing to being objectively easy.
Finally, let’s not forget the lessons we wise old souls can learn from the newcomers in return, to whom setting up a load-balanced webapp isn’t the week-long exercise in configuration and trouble-shooting that one approaches with great trepidation and at one’s own risk: it’s a couple of tiny commands that fit cheerfully inside a text message and let you get on with the important stuff. And to whom a device with 6Gb of RAM isn’t a supercomputer, it’s a phone.
* To my knowledge, I’ve never been unkind in this situation. But in my head I have been really rather scornful, and even tutted a bit at my screen. I promise to do better…