I was recently asked “How complicated is programming, really?” and wasn’t quite sure how to answer — here’s my best attempt!
After a bit of pondering (and trying to get over the snarky tone, as if an afternoon of CodeAcademy makes you a Senior Executive Application Development Engineer or something) I thought about the context in which the question was posed. It was in the context of a massive application with hundreds of modules and dependencies that was nearing architecture astronautics in attempt to scale without collapsing under its own weight (and shortage of developers!) and the inquisitor had that most dangerous thing — a little knowledge: HTML and a smidgen of CSS — but otherwise their technical knowledge extended about as far as right-click > view source.
I really wanted to be smug and talk about how it’s not for everyone and it’s basically maths plus logic and it’ll make you laughcry and it’s incredibly difficult and “it’s not for you, Jen”. But that would’ve only made me look pretentious and him feel two feet tall, so I decided to construct a proper response. I reasoned that programming doesn’t have to be complicated, rather it becomes complicated as the problems we attempt to solve become more difficult and require more abstraction. Once you get to a certain proficiency, everything becomes complicated because you’re cursed with the knowledge of what won’t scale and you realise that any problem of sufficient complexity to be interesting enough to actually tackle will require a program of even greater complexity to solve.
So how to explain this to a non-technical person? Someone I know loves motoring metaphors (e.g. saying “I’m having trouble logging in” when you’ve forgotten your password is like saying “I’m having trouble getting to Heathrow” when your car’s out of petrol) but cars don’t really work as metaphors for creative work. Writing a book, however, is much more relatable:
Programming is like writing a book, except you have to write it in Esperanto using a Dvorak keyboard and each word could completely change the meaning of another, so you have to keep everything in the current chapter in your mind in case you make a mistake. If you do make even the slightest of errors in grammar, syntax, spelling or even continuity, the book wouldn’t just be garbage, it would catch fire, crumble into ashes and burn the reader’s hands.