I’ve been coding for a long time, my first steps were in the very late 90s. I became serious about it only around 2004. I started being paid for my work since 2008, and working full time since february 2010. I started by being heavily invested in C++, then move to web development in 2012, and still going at it today. And what’s awesome is that I’m still having so much fun. And even though I’m now paid as a Senior Software Engineer, I’m still learning everyday.
Learning is never over
Tech is moving so fast, there is always something new. And even without that, there is so much already out there. Even C99’s experts can still learn a new way of doing X (and personnaly, I don’t even know C11). Learning a new language, a new framework, a new library, might not make you use it, but you’ll discover new ways of doing what you do everyday, new ways of thinking, and you might be better for it.
There was a running gag among my friends in college. Every Mondays they asked me what new language I learnt over the week-end. It was of course exagerated, but it all started when one Friday I told them that I wanted to find out about PHP and the next Monday I was confident enough to say I knew PHP, and even starting writing most of my scripts with it instead of Bash. Of course I was not an expert, nobody can become an expert in just 20-30 hours. But I could write a full app with it easily (well, a full app with code not easy to reason about or maintain, but that’s another story).
And I did it again in my last job. Our servers were in Java, with Google App Engine (in 2012). One day, I proposed my CTO to test a project with Python instead, because after working a full week with the GAE team, I saw that they were all using Python and focusing in it, making it the better version at the time. I never used Python before, but by the next Monday I was proficient enough with it to start this first Python project. The project was a success, delivered early, and almost bug free.
I can’t encourage other Software Engineer enough to learn new things. Maybe not a new language, but just new things. And I know most of us don’t want to continue “working” outside of our office hours, but I really believe following new techs, frameworks or like we say in French, “veille technologique” (technlogy watch/monitoring? I’m not sure there is an English expression for this, please tell me if there is!) is part of our jobs, and just finding half an hour a day or one hour a week to do it is really beneficial (and because its part of our jobs, during our work hours).
I just want to have fun
Another way to learn, and still have fun, is through problem solving. Most of Software Engineer love to solve problems, so much than most of the job offerings mention how interesting their problematic are. And to keep me working on my algorithmics and some languages I might not use everyday anymore, I’ve been using site like HackerRank or LeetCode. In my Todoist routine, I added a daily HackerRank Python exercise. I took me between 5 and 30 minutes every day. And now that I’m finished with all the Python exercises from the site, I switched to a weekly algorithm exercise. They tend to be longer, so I take 1h every Saturday to do one or more. And since I grew to love my daily exercise, I switched to LeetCode for the daily routine.
I just started with LeetCode, but the questions seemed quite more fun than the one on HackerRank. Also, the site itself looks nicer and seems more reactive. And there is a weekly contest limited to 1h30, so my weekly routine might switch to LeetCode too. But I want to unlock Algorithms badges in HackerRank first !
Having little problems to solve, even if it’s not to help society, is really fun and helps me apply new concepts I read lately, and keep working on the cleaniness of my code. Also, once I solve an exercise, sometimes I try to do it another way, just for the sake of it. An finally, there is discussions threads for each exercises, and seeing other people way to solve it is awesome, and you can learn new things too.
Final thoughts
It’s important to have fun in our day job, but it’s not always the case, or even possible. Sometimes we just need a break, or just this specific project is keeping you from having fun. It happens. And having a daily/weekly routine to keep playing with things (emphasis in playing, fun included) may help you go through a tough time project-wise, or even help you recognize that you need to change things up a bit. But the most important result is to keep having fun with your code, even when you don’t anymore professionally, keep this joy with you through all the means you can find, and keep enjoying our awesome developer world.