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 one hand, it can be tiring having to constantly learn new things and keep up with the latest trends. You’ve no sooner taken a look at a JavaScript framework these days than it’s out of date. It can lead to incredible levels of anxiety when trying to decide how you’ll actually, you know, do something, rather than Googling each hot new thing until your panic attack reaches hand-me-a-paper-bag levels.
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):
Regular Expressions
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.
Git
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.
Unit Testing
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
Elixir is looking like a new hotness that actually might go the distance, and I like the look of its syntax, its creators, and its native web framework – Phoenix – enough that I think it’s a world I could hang out in pretty happily. It would be a great excuse to get truly comfortable with functional programming, the old but newly hot (as a generation of programmers ascends and looks to make their own mark on things, I think) paradigm taking the development world by storm all of a sudden. Of course I am comfortable enough with JavaScript, but creating a full project in a functional way (something I don’t see being done in JS much, even with Node) looks like an exciting prospect. I look forward to seeing how Ecto, Phoenix’s ORM (as I understand it) handles its models (that are somehow not like classes). It’s a far cry from the Haskell labs in second year of my CS degree, that’s for sure. I’ve cheated a little by already buying a book on Elixir (the book, in fact, if recommendations are to be believed) and hacking away on a few command line programs. Honestly, I couldn’t help myself. It’s a fun language and it feels both very different (recursion and mapping instead of for-looping, notably) and yet very familiar (nice syntax, Ruby-ish conventions) in an intriguing way.
RiotJS
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).
RiotJS looks to me like most of the goodness of React with 90% less of the annoying, complicated proprietary stuff React has (and of course minus React’s ability to do native apps and such – a sacrifice I’m willing to make at present). It appears to be great, functionally, for the type of things I actually want my JS framework of choice to do (be light, make things easier without a massive learning curve, one-way data binding, etc). It comes highly recommended by Gawin Dapper, who dropped by my Coworking spot here in Las Palmas and graciously spoke to me about it, and I’ve been wanting to try it since. I don’t feel that the JavaScript world is currently stable enough to warrant massive investment of time learning any one particular framework, so Riot might be just the low-entry-barrier ticket for modern JSing at the moment.
Conclusion
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!