I opened last year’s post by stating what a rollercoaster it had been for me. Well, this year has been no different; I started out the year becoming a father for the third time. That has been a wonderful, exhausting experience!
Professionally too, my team went from a band of three (a developer, QA and project manager), to one of five to seven people, including another full-time developer, my personal friend and former colleague David.
David and the other members of the team have taught me a great deal. Here are some of the main learns I think I’ve achieved:
What I think I achieved last year #
1. TypeScript #
TypeScript was going to be one of the biggest accelarators for me in terms of the quality of my output, and I have really enjoyed using it. I started out by implementing interfaces and ended up configuring my environments with much more type safe settings by using noImplicitAny and similar.
2. Testing #
Not just unit and integration, but I’ve also started to plan and develop end-to-end tests as well. I’ve become a lot more aware of the value of tools like Cypress and Percy, and have even started to write some components using test-driven development.
3. Docker, Kubernetes, CI tools #
I hoped to continue my journey into DevOps / Site Reliability Engineering by learning these tools, but I’ve hit a bit of a philisophical roadblock.
I think I know enough about Docker to use it fairly well, and I’m getting to grips with the basics of Kubernetes and CI tools (I’ve been involved in writing build scripts for Jenkins and CircleCI).
4. Do more than UI Development #
I started the year by saying I wanted to do more “logic-based development”, however I now think those words were ill chosen. The logic of what you’re building is so tied to the requirements of what you’re working with that applying it to a UI or an API (or something of that nature) is equivalent.
I’ve been able to improve my coding chops this year so that JavaScript no longer daunts or scares me. I would no longer feel inadequate if I looked up on MDN even simple functions like map or reduce in order to achieve the task at hand.
I still consider myself a Frontend Developer, but I now think that’s more to do with circumstances than it is ability.
What I Want to Achieve This Year #
Only this week I was screensharing with our tech lead, watching him whizz around Kubernetes pods like that scene in Valerian, killing and restarting pods, chatting with the SRE team, sshing into a container and using a bash script to figure out what was going on there.
I’d love to have the confidence to do that. So that’s the two things I’m going to add first:
1. Bash scripting #
It’s becoming clear to me there’s a huge benefit to learning this. If I’d known Bash, I would be able to customise my environments far beyond what I can achieve currently.
2. Continue getting to grips with Kubernetes #
Kubernetes is an awesome tool, and has so many applications outside web development. I’d love to at least be able to understand it’s lifecycle methods and helper functions well enough to see what’s going on in my stack and fix minor issues.
3. Serverless! #
Serverless really makes sense to me. That separation of concerns with the frontend, backend and satellite services, lambda functions, and other functionality, just seems more natural and less of a cognitive overload.
I’d love to think that by the end of 2020 I will be able to write a Terraform script and get a system comprised of a few key pieces not only up and running but fully deployed, monitored and testable too.
4. Writing #
One thing that has surprised me is that I really love writing about web development. This way I can help others by utilising another skill I think I have: being able to write moderately well.
My relationship with Net magazine is very strong, and I’d love to see if I can write a bit more of the kinds of articles that have been well received by their audience so far. This might be more difficult to achieve though because of the lack of personal time I currently have.”