It must be rare to be in the position shown in this article, where you’ve been able to try out enough languages, frameworks, or just the job roles to really objectively say “this is what I really like to work with”. Even the fastest learner is unlikely to see as much time as they would like in their career to dedicate to that sort of broad skillset. Still, with so many DBAs coming to the role from having previously worked as a developer or otherwise falling into being an “accidental DBA”, there can’t be that many people who work solely with databases. Most people will have had to make a shift to stay relevant, especially in technical fields.
Corporate requirements being what they are, no one is going to want you to write something in a language few people know, like Go. It could create the most beautiful, cost-effective and efficient code ever seen, but if it can't be maintained by anyone other than its originator, it's no use. The balance between pushing your career in the direction you want it to go and satisfying what’s required of you in your job can therefore be tricky to strike.
Personally, most of what I’ve learned in my career has been through necessity. Broadly, the new skills have been adjacent to something I’ve been doing already, and so picking up a new skill is more pragmatic than planned. Increasingly though, I find myself going out of my way to pick up new things, and this is largely down to the ever-widening availability of free and cheap courses for virtually anything. If I want to brush up my language skills, I can use the remarkably in-depth Duolingo – and granted, this isn’t as good as going to France and immersing myself in the language, but it’s pretty good for something that I can spend 20 minutes a day on in my dining room. Similarly, if I learn a new language or framework on Treehouse isn’t as good as working on a system with a group of people, learning to use version control, finding out what goes wrong, beating the dreaded “works on my machine”, and learning from that experience, but it’s far better preparation for that work than reading a book and jumping in. They’re even gently insistent about things like code commenting and indentation, so hopefully people using this sort of setup will be gently brainwashed into being the considerate coworkers of the future.
I’m hugely keen on these online courses. I have precious little free time, so the idea of adding a journey to a classroom has little appeal, and flexibility in when I can study is a huge bonus for me. The fact that they include testing and reiterate key points makes me feel like the core of what I need to know is being properly drummed in. The downside is that the flexibility can quite easily turn into putting something off almost indefinitely – especially if it’s something I don’t need to immediately apply to something I’m working on. It’s also tough to really make something stick without the reinforcement you get from actually using it.
It seems fairly safe to say that nothing is going to replace actual workplace experience, with the iteration and reinforcement that comes with that. But getting a decent grounding in a new technology or skill has never been simpler, and like forum posts or a Github repo, it's an online monument to what you know - something potential employers can always check out.
Do you find that you push yourself to learn new things, or do you wait for them to crop up? And would you feel comfortable using one of these courses to learn something you needed to push yourself further in your career?