Coding again: old dog, old tricks
My worst-kept secret is that my favourite MLP:FIM character is Pinkie Pie. Okay, that’s not even really a secret. My actual worst-kept secret is that I was a software developer for ten years before I was a writer. I hired another developer a year into Failbetter’s time, and since then I’ve hardly written a line of code in earnest (bits of SQL, and the occasional Python script to munge together dividend vouchers, aren’t what you’d call earnest).
I am in theory taking a week off after leaving Failbetter. In practice I’m seeing if I can throw together a quick and silly game. This means firing up my coding fingers (the three on my right hand that I don’t use to type content, and the additional two fingers visible when I flip open the hinged top of my head).
Here are some things I’ve found and some things I’ve remembered, coming back to coding after six-seven years away. I was never more than ‘pretty good’ at coding – and never going to be better – than that, because my maths is so limited and my comp sci so troglodytically minimal – so if you’re top-tier, feel free to sneer at how obvious this all is.
(1) The Internet has got even better. Googling used to be an essential debugging technique, and the relative maturity now of places like StackOverflow along with the relatively better documentation of a lot of popular libraries makes it ten times more useful. I can’t imagine picking this stuff up again in the desolate internet of the nineties. But…
(2) Opinions aren’t like arseholes (en-GB) / assholes (en-US). Only shit comes out of arseholes. Opinions are much more dangerous. I’d almost forgotten the religious wars of coderland. “Don’t use technology x!” “you’re an idiot if you use language construct y, look at optimisation test z!” “optimisation test z was discredited by last year’s blog post, uh, aleph! you bozo.” There’s a weak but definite negative correlation between strongly expressed technology opinions and utility of advice. The people I really trust are the people who don’t feel the need to make a technology into their personal identity, and who know answers are often nuanced.
(3) OMFG all the libraries. All the libraries! And all the opinions about the libraries! I’m satisficing, and I’m being conservative. Call me old-fashioned, call me cowardly, but I prefer my tools with no zeroes to the left of the first dot in the version number. I drank the Rails koolaid, I drank the Fluent NHibernate koolaid, and I’m sticking to technology I can either understand without my lips moving, or remove from my stack without undue misery. While I was away, JQuery has, apparently, ceased to be the new hotness and is now, I’m informed, a bloated old monster like Bagpuss that the tech elite wouldn’t be seen dead wearing. I’m not jumping ship yet, and I’m not doing anything particularly clever or complicated either.
(4) When you’re stuck, step the fuck away. This is a lesson it took me years to learn, and (as the Failbetters will tell you) I never ceased to preach it. THIS BUG MAKES NO SENSE AND YOU CAN’T STEP AWAY UNTIL YOU’VE FIXED IT YOU’RE NEARLY THERE GOD DAMN IT STILL NOTHING KEEP GOING…. step away. Have a cup of tea and think about something else for five minutes. Or a cup of coffee. That sense of frustration is usually a sign that you’re hung up on a non-useful perspective. You may come back five minutes later and find the problem dissolves like frost on a warm window. You may not, but at least you’ll have had a cup of tea. Or coffee.
(5) Rubber-duck. “Why does it work here and not here? Well, what are the differences between these two things, let’s see…” I actually find it easier to write this stuff down in comments than say it out loud – it stops me skipping things I mistakenly think I already know – and it means I have a useful record of my train of thought if I need it.
(6) Debugging, especially web stack stuff, in IDEs is still an Advanced Topic if it doesn’t work straight away.
(7) The best is still the enemy of the good.