The continuing education of a developer (or this one, at least)
One of the simultaneously most annoying and best things about being involved in technology is how fast it changes, and how much continuing education is, or at least should be, a factor in every programmer’s life.
On the other hand, learning is amazing fun and great for your brain. There’s a huge sense of satisfaction in learning something useful and even more in applying it once learnt. It’s undeniably one of the things that drew me to programming in the first place, and it’s something that keeps it fresh and keeps me coming back. I find it’s good to wave the intensity of learning up and down a bit – a focused period of learning and then a back-off time to let new skills bed down in your brain. It’s also nice to see what things stick and turn out to be useful.
I’ve recently decided to plug some holes in my programming knowledge, kicking my active learning back up into high gear for a while. Here’s the list of priorities at the moment (prioritised in my intended order of learning):
Invaluable for parsing text and doing cool things with it, which happens to be a lot of programming when you really get down to it. They’re also really fun in an archaic way that deeply satisfies my inner-nerd. I’d like to get to the level where I can comfortably write and debug my own regexes without having to trawl Stack Overflow.
Getting stronger in Python, dabbling in Ruby
I really like Python and I like the way it looks. I enjoy going into the GroupVite codebase and reading through the nicely-highlighted code and I find that developing in Python is a fast, fluid experience. You’re also never lost for styling advice thanks to PEP8, though boy is she a harsh mistress at times. I’ve very much benefitted from taking the advice of my good friend Rob and getting stuck into Python at a time when I was also considering jumping headfirst back into Node.
That said, since I saw DHH talk so passionately about Ruby at HackSummit() 2016 I have had a hankering to give Ruby another go (I did my final year college project in Rails, going on five years ago now). It’s hard to justify learning another mostly-OO scripting language but given that Rails is still a huge thing in the web space and given that I would love to love the language I work in as much as people tend to adore Ruby, it’s an interesting prospect. It sounds like it jives with how I actually think about code and the aspects of coding I enjoy – that poetic quality that good code tends to have, and that smooth, expressive style.
More so than Python? I’m not sure, and for that reason, as things stand right now, Python is still my scripting language of choice.
Unix and Vim
I’d like to know enough to be useful at a decent pace without making it a religion. I don’t think I’ll be switching from Sublime/Atom any time soon but it’s nice to be able to get around the terminal on web servers more smoothly, and it can’t be denied that Vim is a powerful – and ubiquitous – text editor.
I am not currently a mega-slouch in this regard – it’s my version control of choice for any side-projects I work on – but it’s fair to say I’m not an expert either, and the thought of merge conflicts gone mad, as could happen in a larger team, are enough to make my palms sweat. A developer needs to know his tools and it’s fair to say Git has more than won the version control war, for now.
I know the theory in general and have done quite a bit of unit testing before, but not enough to feel like an expert. I’m more in the “know enough to know what I don’t know” type of category at the moment. I’m currently working to improve my code coverage on GroupVite and it’s an interesting process that is starting to open my eyes to its benefits. On my next project I may even – gasp – try TDD for dat peace of mind…
Docker (and possibly Ansible)
SysOps is something that I again have experience with without ever feeling particularly confident in. By getting used to the nice new(-ish) tools like Docker and Ansible I should be able to overcome some of my deficiencies and doubts and make server tweaking less of the gulp-inducing, fingers crossed and prayer chanting activity it currently is.
Functional Programming with Elixir
You could argue I should instead learn React, but my god if I’m not sick of hearing that. It’s a bit like being constantly told I need to watch The Wire (and yes, I know, I need to watch The Wire). Plus, in my heart of hearts I don’t yet believe React is here to stay. Angular was the be all and end all not-so-very-long-ago and now it’s somewhat of a pariah among the cool kids. I’m guilty of some Angular bad-mouthing myself as I haven’t loved it on either of the two projects I’ve used it on – way too much proprietary stuff going on for my liking, and dog-slow performance (though that was very much exacerbated to levels a normal SPA or web project wouldn’t reach in normal usage on the projects in question).
I know I opened this article in a somewhat ambiguous manner, but I’m finishing it excited at all the cool things I have yet to (and get to!) learn.
All of these things should make me a markedly better and more well-rounded technical person, and as someone who strives to make cool stuff above all, I see them as practical and useful without being exercises in self-flagellation or learning for the sake of it. It’s an approach I’ve tried to take throughout my (still young) career (learning a lot of it from Jason), and so far it’s paying off well.
Hopefully I’ll be posting some helpful articles about my learning as I go along and you’re very welcome to learn along with me.
For those looking for more exercise or nomad-related articles – don’t worry, they’re coming too!