Over the past year I’ve been trying to discover what I really want from a career. Ever since high school I’ve known that I wanted a career in IT and set out towards achieving that dream. I took the non-traditional route and decided not to go to college initially but instead taught myself to code as a youngster, finished up high school and set off to America to do a couple of internships. Life continued as it does and I ended up working in many different programming roles in quite a few different environments. I worked for myself as a contractor, I led development for a start up and more recently I took a full time position at a payments company as a programmer.
Being self taught, I’ve always felt like I’ve missed out on something. I’m not too sure what it is (perhaps just a solid computer science grounding) but there are many concepts and ideas that I either don’t know about completely or have very limited knowledge about. Worst yet, these days I feel like I have so little time to actually go back and learn all those concepts.
This is not to say that because I don’t have that grounding in computer science that I’m a crappy developer, I’ve made an effort over the years writing code and through real life experience to learn about important topics when it comes to writing software like design patterns, testing, algorithms etc. But even still, in this industry if you’re not learning 24/7 you’re going to fall behind. This learning has to happen after work hours. Over the past few years I’ve been guilty of not putting as much extra time after work in to my programming career as I would like and as I did when I first started out, and this definitely has had an effect on my growth as a programmer.
Throughout my recent discoveries I started to question whether programming is actually the career path I really want to follow. I felt quite down about it and a little overwhelmed actually. There is so much to learn as a programer and I questioned whether I could keep up at all. I questioned if I was even smart enough to be a programmer. This was all a little depressing to be honest as programming is always something that I’ve really enjoyed and been quite good at.
The turning point came to me a little while ago when I decided that I am good enough and I will take control of my career. I made a decision to learn continually and to become a master of my craft. Yes, I won’t always know everything and at times I will get it wrong but that’s just part of the learning process. This attitude has given me renewed energy and at work I’ve started to try take on some more complex tasks (such as refactoring very old legacy systems) where as in the past I wouldn’t have done this, instead I would have sat back and either let someone else drive the change (which doesn’t happen often in most workspaces) or just tried be content in working on crappy old code.
Now as part of taking control, I’m committed to doing a few things daily, weekly, monthly that will help me become the programmer I want to be. In no particular order, they are:
Finishing my Bsc degree part time
I’ve committed to finishing my BSc degree in Informatics. This commitment forces me to find the time to sit down and do the study that is needed. I’m not going to lie, this is probably the hardest thing I’ve ever done especially in-between work and family commitments but I’m learning about those core computer science principles/concepts that I missed out on by not going to college straight after high school.
There is no way that you can know it all when it comes to programming. It’s impossible! There is just too many languages, frameworks, concepts etc out there. So I’m picking my toolset carefully and becoming an expert at that. In the past I’ve been very much a generalist, good at a lot of things, but never excellent at a single thing. In focusing there is a concern that my toolset is too narrowly focused and I’ll become irrelevant when the next big thing comes out but that can be countered by again just picking what you focus on carefully and constantly taking a step back to make sure you’re on the right track.
I’ve subscribed and started listening to a whole bunch of podcasts. Most of them are in the programming space which helps keep me up to date with the latest information around my specific languages (Ruby/JS) and tools of choice. These podcasts are really good to listen to during my commute to and from work as this time is usually wasted listening to a mindless, but I’ll admit entertaining radio show. Surprisingly enough, I have also found these podcasts rather inspirational, they give me ideas to try new things and also make me want to work harder.
When I first started out as a programmer, I used to blog very frequently and this unfortunately stopped as I became more comfortable and I suppose as my responsibilities got bigger. It’s something that I really, really miss though. I love writing and even though there is a lot of room for improvement, there is something therapeutic about putting your thoughts in to words on a blog post. I need to blog more and with my focused toolset of choice there is lots to be written about. I’d like to at some point also start doing videos, but that’s for another day.
I’m a bad reader. I usually never finish a book or go past the 5th or 6th chapter. I’m working on improving that. I found that audio books helped a lot with getting through books to the end but when it comes to technical books, you need to read those with your eyes and code while reading them. I’m starting to read technical books again and the end goal is to finish them. There is so much knowledge to be gained by reading books. I always welcome suggestions of good technical books too
It sounds simple and obvious, but just by writing more software we become better programmers. It’s been a long time since I’ve contributed to open source projects and I would like to get in to this again. The added benefit of this is that you learn a lot from seeing how other people write code in open source projects. I need to also do a bit of a clean up here. Get rid of old projects that are no longer worth keeping alive and update the ones that are.
One last thing that I have started to do is follow industry leaders more closely through social networks and blogs. I love it when an expert in a field has a blog which I can follow to learn as much as I can from them. Luckily in the programming space, there is a lot of that.
All the things mentioned above are consistent actions that need to be taken on an almost daily basis. What I haven’t quite figured out yet is where I will find the time for all of this, but I am finding with the things I’ve already taken action on is that it’s easy to find time for something if you value it and it is important to you. The actions mentioned above are important to me and I’ve stated making time for them. Then secondly, the key is to just get started. Just start writing the code, just start reading a book when you have a free 10 minutes (the Kindle app is great) and the more you just start working on things, the more they will just fall in to place.