My day-to-day work doesn’t always involve interesting programming challenges. That’s the nature of this work – sometimes you’re building something grand, sometimes you’re sweeping the floor.
Things like Project Euler and Leetcode have always been in the back of my mind. This week, I became determined to begin working my way through the problems found in the latter platform. I quickly discovered two important things.
The First Thing
It sure has been a minute since I’ve had to think about some of these basic, computer science undergrad-level data structures. Much of what I work with is already implemented in some fashion or another. If it’s not, usually a quick refresh is one properly-worded Google search away. I’m also not typically working with a variety of them on any given day, as well.
Over the last few years, I’ve become concerned about dulling some of the skills I sharpened in my time as a graduate student. I believe that developers should be keeping up their education as much as possible while working professionally and I don’t think that’s a contentious position. I think that Leetcode fits right into this belief. Even if you’re not learning a new language, going back over these problems would, presumably, keep you pretty sharp.
If you are learning a new language, these problems are a wonderful resource to really get some bite-sized solutions under your fingers. This would, presumably, help you begin to write more idiomatic code in the language of your choice. You’d also reap the other benefits of continually reviewing things you already know, and perhaps learning useful new things, as well!
The Second Thing
I really enjoy programming. That sounds obvious but it becomes easy to overlook that fact if your daily programming experience doesn’t offer you an interesting challenge for a little while. Sometimes, you just might not have interesting work to do and that’s fine: it’s just part of the way things are. Also, if you’re like me, you might have some difficulty coming up with worthwhile side projects due to various constraints on time, attention span, or other hobbies.
All that said, working my way through just a few problems provided me with a wonderful reminder of how I ended up in this profession. I find I’m excited to do even more problems, especially those that stop me in my tracks and force a kind of thinking that is useful in this world of software development.
I know that these kinds of exercises get recommended as great for job interview preparation and there is no doubt that they’re well-suited to that. I also think they’re just generally good to do. They may not be directly applicable to what you’re working on, but think of it this way: if you had to move a bunch of furniture, you’d likely be seeking out someone well-acquainted with the gym, even though it’s unlikely to be filled with couches, end tables, chairs, and desks. In our case, as developers, this is our gym! So, go put in the reps and become strong!