I don’t know what it is about this time of year but a surprising number of my projects seem to happen around this part of it. Not the work ones, those are all year round, but the non-work ones, those seem to happen this time of year.
And this year is apparently no different. Well, it is but not for that reason.
So stuff happened earlier in the year and I found myself re-evaluating where I’d spent my time, and what I wanted out of it. The first and probably most obvious takeaway is that I don’t do nearly enough self reflection. (I wouldn’t be at all surprised if this were part of the gaping maw that is my imposter syndrome looming just in my peripheral vision.)
The more interesting takeaway, though, was how much time I’d invested building on the shoulders of giants, one way or another. I don’t even entirely mean that in the sense that I’d built something but didn’t own my own destiny; I completely did.
It just struck me how much time I’d spent building on what was already there, both personally and professionally. And on some level, both standing on the shoulders of giants – and at the same time in their shadow.
Professionally first, that’s an easier ground. We talk about ‘building greenfield’ professionally but as a webdev you almost never actually do. It’s not financially viable in most cases – pick a language, ideally one that someone in the dev team already knows, pick a framework that will do the boring stuff you don’t want to do by hand, build the bits the customer actually cares about. Professionally, this is WordPress and Laravel for the last couple of years, but it’s also been Moodle, it’s also been Symfony, it’s also been Zend/Laminas and so on.
I don’t think I’ve ever built anything in the professional world ‘from scratch’. And that’s OK. Normal, even.
But in my hobby life? That’s a weirder story.
If I actually stopped to look, it feels like there wasn’t a time I was writing some kind of code. Sure, memory dulls as to what and when, and I’m sure I spent plenty of my teenage years not actually coding when I remember otherwise, but I definitely have bits of code kicking around of mine back to 1994, and I was definitely writing code before that. The first real break I remember taking from coding would probably have been 2007, I wasn’t working as a developer, and I’d just hit a sense of ‘had enough of development’, though I never really stopped, just never really did anything. But that was the year I bought my first place with my then partner, it was a busy year for other reasons. But I was back to coding by 2008. And I remember taking a break in 2014 where I had three months out but… the memory suggests I’ve been basically constantly coding either for fun or for a job basically forever.
And now that I stop and think about it, the number of times I’ve built something from scratch… the further back you go, of course the more you’ll find me putting in the legwork because platforms didn’t have frameworks and libraries and platforms to expand upon, not the way they do today.
Let’s take a more pragmatic view, the last… 15 years, say, from the last proper break from coding. In that time I’ve built hundreds of add-ons for platforms, hundreds of thousands (maybe into the millions; I lose track) of lines of code, tens of thousands of hours of code writing. Built things on top of existing platforms, on top of existing frameworks.
But from scratch? There was 2008, building a webcomic search engine (spring); there was 2013, trying to build a game in Unity (spring/summer); there was 2016, trying to build something in Inform 7 (summer); 2020, starting to write a paint program in Cerberus-X (spring), as well as a complete 50k NaNoWriMo (autumn); 2021, another 50k NaNoWriMo (autumn), multiple short stories (summer). 2022, I did a Pico-8 game (spring), a few experiments in Rust (spring) and a ruler app (autumn).
Literally every other project was either an add-on to/rework of an existing platform, or built off a framework. And I’ve lost count of the number of projects that really is. North of 400 if I had to ballpark it.
And so here we are in spring 2023. I’m one writing contest entry in (will be posted after judging is done), and I’m now looking at what comes next.
I started this post off with a thought that it was about working under a shadow. I’ve spent a long time building on the shoulders of giants – and doing many things that helped people – but at the same time the taller I build on those shoulders, the greater the shadow is cast.
There’s a strange conflux of emotions around this. I see what everyone else is talking about – how we stand on the edge of a great new adventure in the form of AI (that’s a topic for another day!), the increase in low-code tools. The increase in tools and libraries that can be slotted together like a giant Lego set.
And on one hand this leaves me with a strange wistful feeling. As a kid I wanted to get into programming because it felt like being an actual wizard. You type the magic words and things happen. It feels like that magic is gone.
On another hand, it feels like trying to write anything from scratch is a level of tediousness that should be avoided; if this were contemplating a work project, I’d never find anyone to finance it. But work has its own set of clients’ problems to solve and I’m quite content with the scale and magnitude of what’s there. Some problems don’t need to be solved on the clock or someone else’s dime.
But on another, I feel like I owe it to myself to actually tackle something chunky and meaningful and not just build it from scratch ‘because I can’, or even ‘because I should’ but I feel like it could be a valid reason to do so on its own merits.
You see, one of the big lessons of the last few years for me was one of the biggest eye-openers: that all of the doctrine and the big picture thinking is, in fact, not that useful. Dependency injection, inversion of control, the Gang of Four design pattern theories. They’re all useful to have in the toolbox, but actually in terms of getting things done I begin to wonder how useful they actually are – I burned hundreds of hours retrofitting these things to a platform that didn’t have them and came away with something slower, something bulkier and something genuinely more complicated, and with no upsides that I could actually prove.
So I wonder if that isn’t just another shadow to come out from under.
And interestingly, I wonder if on some level this might take me full circle: I was programming before the web existed, I was onto my second or third language when HTML became a thing, and even before I touched PHP for the first time I was a Visual Basic guy, writing things for the desktop. I can’t help but wonder if actually that’s where to go next, back to where it began.
Maybe it’s time on some level to come out of the shadows. To not build on the shoulders of giants but build my own thing.
Now… if I could only narrow that down! (laughs)