Earlier this month, I passed the seven year anniversary of starting my first web dev job. That job never really worked out, for various reasons, but since then I've had an interesting time of it. I've diversified into app development via Phonegap, and I've worked with frameworks that didn't exist when I first started. So it seems a good opportunity to take stock and think about where I want to head next.
Sometimes these posts are where someone announces they're leaving their current role, but that's not the case here - I'm pretty happy where I am right now. I am maintaining a legacy project, but I do feel like I'm making a difference and it's slowly becoming more pleasant to work with, and I'm learning a lot about applying design patterns, so I think where I am right now is a good place for me. However, it's a useful exercise to think about what I want to do, where I want to concentrate my efforts, and what I want to learn about.
So, here are my thoughts about where I want to go in future:
- I really enjoy working with React, and I want to do so much more than I have in the past, possibly including React Native. Ditto with Redux.
- Much as I love Django, it's unlikely I'll be using it again in the future, as it's simply not in much demand where I live. In 2015, I was working at a small agency with a dev team of three, including me, and it became apparent that we needed to standardise on a single framework. I'd been using CodeIgniter on and off for several years, but it was tired and dated, yet I couldn't justify using Django because no-one else was familiar with Python, so we settled on Laravel. Ever since, Laravel has been my go-to framework - Django does some things better (Django REST Framework remains the best way I've ever found to create a REST API), but Laravel does enough stuff well enough that I can use it for most things I need, so it's a good default option.
- I really don't want to work with Wordpress often, and if I do, I'd feel a lot better about it if I used Bedrock. Just churning out boilerplate sites is anathema to me - I'd much rather do something more interesting, even if it were paid worse.
- PHP is actually pretty nice these days (as long as you're not dealing with a legacy application), and I generally don't mind working with it, as long as it's fairly modern.
- I enjoy mentoring and coaching others, and I'd like to do that a lot more often than I have been doing. Mentoring and coaching is a big part of being a senior developer, since a good mentor can quickly bring inexperienced developers up to a much higher standard, and hugely reduces the amount of horrible legacy code that needs to be maintained. I was without an experienced mentor for much of my career, and in retrospect it held me back - having someone around to teach me about TDD and design patterns earlier would have helped no end. Also, I find it the single most rewarding part of my job.
- I have absolutely no desire whatsoever to go into management, or leave coding behind in any way, shape or form. I've heard it said before that Microsoft have two separate career tracks for developers, one through people management, the other into a software architect role, and were I there, I would definitely opt for the latter.
- I'm now less interested in learning new frameworks or languages than I am in picking up and applying new design patterns, and avoiding antipatterns - they're the best way to improve your code quality. I've learned the hard way that the hallmark of a skilled developer's code is not the complexity, but the simplicity - I can now recognise the convoluted code I wrote earlier in my career as painful to maintain, and can identify it in legacy projects.
- I've always used linters and other code quality tools, and I'm eager to evangelise their usage.
- I've been a proponent of TDD for several years now, and that's going to continue - I've not only seen how many things it catches when you have tests, but also how painful it is when you have a large legacy project with no tests at all, and I'm absolutely staggered that anyone ever continues to write non-trivial production code without any sort of tests.
- I want to understand the frameworks I use at a deeper level - it's all too easy to just treat them as magic, when there are huge benefits to understanding how your framework works under the bonnet, and how to swap out the framework's functionality for alternative implementations.
- I'd like to get involved in more IoT-related projects - guess the 3 Raspberry Pi's and the Arduino I have gathering dust at home need to get some more use...
- Chat interfaces are interesting - I built an Alexa skill recently, which was fun and useful, and I'd like to do stuff like that more often.
So, after seven years, that's where I see myself going in future. I think I'm in a good place to do that right now, and I'll probably stay where I am for a good long while yet. The first seven years of my web dev career have been interesting, and I'm eager to see what the next seven bring.