Not realising that it was something called National Coding Week this past week - I started seeing Tweets from Ridgeway (a company I used to work with) where each day a different one of their developers would answer the following three questions...
They then put the answers into a blog post, which can be found here.
I thought this was a really nice idea - so I hope they don't mind, but I decided to get involved too and write this blog post where I've answered the same three questions ...
Before retiring, my Dad used to work as a teacher. When I was young, he brought home some different computers - mainly the Vic 20 and the BBC Micro. As well as enjoying the games that were on them, I also enjoyed playing around with programming on them.
Other than that, I started programming at College, then got offered in job in programming straight after finishing. I had the choice between doing a top-up at University for a degree, or taking this job. I'm glad I decided to take the job, as I wouldn't be where I am now if I hadn't! That first job was in C++, which I did for a few years, before moving into the games industry for many years. I now work as an independent contractor focusing on .NET and related technologies, as well as co-organising a local .NET user group - .NET Oxford.
I love that programming isn't just my job - it's my hobby, and something I love doing. And on top of that, I actually get paid to do it too! So many people dread Monday mornings and going to work, but I haven't had that feeling in a very long time!
To an outsider, we sit behind a computer all day long - must be pretty boring right? Well actually, no. No two days are ever the same! There's a surprising amount of variation and creativity involved. No two developers solve the same problem in the same way, and there are so many ways to solve problems - so many different very cool technologies to play with!
My biggest piece of advice would be to never stop learning! And also to actually embrace learning, as it's something that as a developer, you'll be ongoing doing a lot of. If you embrace it; actively study daily - read books, watch Pluralsight, listen to podcasts, read blog posts - then you'll very quickly put yourself ahead of the average developer.
I don't know the official term for it, but I think of it as incremental learning, where learning a little bit every day, over a long period of time, becomes huge. You could also think of it as compound learning because in the same way as with compound interest, where you earn interest on your interest, on your interest, on your interest - you also get the same concept with learning. The more you learn, the more underlying knowledge you have to build upon. So basically, the more you learn, the faster you learn, so the more you learn, so the faster you learn! This is a very powerful concept to appreciate and take advantage of.
You also learn and retain more by being motivated - so it's important to make sure you enjoy what you're doing and never get stuck in a rut. There are so many great technologies to play with - even if this is a side project or getting involved in an open source project - make sure you play and have fun with different technologies and programming languages. There's a lot of very cool stuff going on - especially nowadays.