Growing up

Way back in 2002, or perhaps 2003, I'd acquired a copy of Macromedia Dreamweaver and started playing about with HTML. The timeline is a bit blurry, considering that it's almost twenty years ago. CSS wasn't really a thing yet, though, and IE6 was still the main browser of choice. Eventually CSS became a thing and one of my first real 'projects' was to create a user style that hid all the ads on the Gamesradar forum I used to spend time on. You had to switch to Firefox and then dump the CSS in your 'profile' folder; it was a total hack and there was more documentation than code.

I didn't realise that I'd be setting myself up for a career in programming, in fact I remained blissfully ignorant of this prospect even as I bought books like MySQL 5.5 for Dummies_ and _PHP 4 For Dummies. All I wanted to do was show the current time and date on the page and that quite quickly escalated into building a custom blog, using a database to store the posts. That then snowballed into messing with web frameworks like CakePHP and CodeIgniter.

I actually didn't want a career in web development, I didn't really know what I wanted. It sounded like 'working with computers' and my mum in particular was pressuring me a lot with that. To her credit, she was technically correct, although I think she was more keen about me doing more hands-on work, like building and repairing computers, so there'd be someone in the family who could do it.

Despite this, and my rebellious teenage opposition to doing anything that wasn't my idea, I'd spent years unknowingly educating myself as I spent time on various web dev forums offering advice, answering questions, and asking questions of my own. Stack Overflow came and many of those forums faded into obscurity, which is a shame since Stack Overflow preferred clear, unambiguous answers, and with a forum you could engage in a conversation around a problem and more organically hash out a solution. The lesson wasn't in the solution really, but in the discussion that preceded it, and it allowed me to develop an intuition.

After some time doing small-scale freelance work, managing phpBB instances and such like, I landed my first job for a little web marketing company that made websites for local businesses. It was mostly a case of repackaging Drupal apps with some theme on top, but we got given other project work too. For some reason that also had to be done in Drupal. I never wanted to work with Drupal again after all that. However, this was the first time I'd worked with another web developer, let alone a team, face to face in an office.

I was fortunate. I was paired up with a colleague and he had the time and patience to teach me about things like OO-style PHP, and how to write Javascript, what closures are, all of that. This was a period of time where 'what is a closure' blog posts were just as much a meme as 'what is a monad' posts are now, bizarre metaphors and all. He and I butted heads quite often, and half of the time I think we just wanted to be right and we were talking past each other rather than to each other. It was my first experience of working in a team, and it took a while to get used to the fact that we had to write code for the benefit of each other, not just ourselves.

I was made redundant after the first year, which was a blessing.

The theme of hot-headedness would continue for a few years longer as I worked in the field, and it would take a while to become less argumentative and instead find different ways to frame my thoughts or concerns. Disagree and commit is one of those principles that are much easier said than done, especially if you foresee a problem but lack the nous to effectively relate that problem to the team.

This is quite a harsh retelling though and the reality was that I was immature and lacked soft-skills–hardly a surprise as a mid-twenty-something. I was keen to learn, and as such found myself in the position of a scrum master or a tech lead, or a liason between teams. In a way, this was also a healthy escape from programming; I grew tired of churning out pull requests when, deeper down, I was yearning to embrace the bigger picture without getting bogged down in low-level details. This is the same reason that I lasted less than a year as a contractor: while the money was nice, it wasn't fulfilling.

So, the pendulum would swing towards leadership, coaching and mentoring, and then back to head-down programming. Just like my 15 year old self, I still didn't know what I wanted, so each new job felt like turning back the clock on my career another couple of years. In reality that's not true as experience doesn't work that way, but it's symbolic of the feeling of cycling between a senior position and a leadership role while struggling to make another leap forward.

Do I have to make another leap forward, and struggle until I do? I have no idea, that's one to reflect on in another decade or so. The truth, if I'm being honest, is that I prioritised other things like living abroad and focussing on my mental health through extensive therapy. I had to put myself before my work ambitions, and there was a hell of a lot to unpack. There still is; these things can take an entire lifetime to figure out.

Meanwhile, progress inevitably marches on. Interestingly enough, I don't even use Stack Overflow much these days. At least on the frontend, it seems like many things are designed to fit into short, 3-minute tutorials on Medium, DevTo or Substack. Communities that were once in forums now exist real-time on Slack, Discord or Gitter. If I'm lucky I can go onto Github and find a solution to a bug somewhere in an issue thread. I'm more likely to just read the source and figure something out for myself. Information is abundant whereas twenty years ago it was scarce or siloed.

One thing in particular has changed for me: I've always been something of a full stack engineer, it's my comfort zone, but my definition of it has evolved. The stack isn't just your typical client and server, or even the infrastructure behind it. It's the holistic journey of an idea from conception to release: the planning, the prioritisation, the architecture, the design, the programming, the UX, the technical cost/debt, the feedback, the support etc. The whole effort is spread across a cross-functional team, such that there is a good coverage of the various specialisms involved in building a product, but being able to empathise and communicate in each direction is invaluable.

I mentioned once or twice that I used to be quite argumentative, or wanting to 'win' an argument. Call it passion, ambition, or just being an asshole; I'm sure it's been a mixture of all three 😅. But, after so many years and referring to the titular 'growing up', things feel notably more chill these days than they used to. Or, to put it another way, I used to be stressed by default, anxious and agitated almost constantly, but managed to flip that boolean around at the expense of having a fancier title on LinkedIn, as if that even matters as anything more than a status symbol. Bleh.

Something about age and wisdom, I guess. But still, the journey's not over yet; far from it.