As a software engineer I find that I rarely get to practice the fundamentals of computer science. I also rarely get a chance to practice the kinds of problems at work. At the school that I’m currently teaching one thing that the students have been doing every day is called ‘toy problems’. Toy problems are a pretty straight forward concept. They are problems that should make you think a bit, shouldn’t take too long, and let you exercise your programming muscles.
Practice makes perfect
Too often I’ve known even senior software engineers that have problems writing simple functions. Heck sometimes I have problems writing simple functions. Most of a software engineers day can be taken up by all kinds of other distractions. There are meetings to attend. New libraries to evaluate. Production issues and all kinds of other problems that can make it difficult to get to the writing code part. A small problem once or twice a week to keep the chops in shape or for a beginner to really grow is definitely one way to combat this problem.
But Toy Problems are Silly
Yeah they are. Personally I would rather be solving real problems, but the truth is real problems are intricate and take time to get to. These smaller problems like daily calisthenics can keep you in shape for when you really need to get something done.
Toy Problems Aren’t For Everyone
Don’t get me wrong I don’t think toy problems are for everyone. Obviously some people have too many things going on. Some people genuinely are working on real problems all day or don’t find toy problems relaxing and a fun way to spend time. That makes sense to me. I personally love algorithmic problems and find a little joy in solving small problems every day. If that isn’t for you then find something else to do.
My Goal for the Foreseeable Future
In that vein I’ve started a bit of small side project. I’ve decided to keep track of my daily toy problems on GitHub and see how long my streak can be. The rules are I work on them at least once a day. I don’t have to blog about them, but if I do great. I want them to have some tests and to be confident that they are working as described. If you would like to see check out my repo here