On Learning New Things

I recently had occasion to write a little C code. This is something I haven’t done since around 2005 and it meant I had to go back and re-learn a lot of the basics before I could tackle the task at hand. It got me thinking about my approach to learning and why I do things the way I do.

When I pick up a new framework or language I (usually - mistakes have been made) don’t immediately try to build something large and complicated. I try and do something nice and simple just get the hang of it first.

I’ve written a lot of to-do list apps, hello world programs, basic calculators, and done Conway’s Game of Life a few times. These problems might seem trivial, but in my experience it can be worth doing them over again becuase you hone your skills each time you solve them. I also find I end up approaching them differently on each subsequent attempt becuase I’m now building on knowledge developed from previous ventures.

I have found that I better appreciate the utility of a solution if I can directly compare it to another one that was used to solve the same problem. This gives me a greater depth of understanding and a better sense of when to apply a given pattern.

Another reason little learning programs can be useful is that you can iterate on them quickly. This means you’re less likely to get bored and distracted and more likely to actually finish the task. Then you’re free to move on and learn something new instead of toiling away on a grand plan that seemed like a good idea at the time.

Something else I like to do that helps cement my knowledge is to go back to older projects (like this website) and improve them. It gives me a great sense of satisfaction to apply new knowledge and skills to old code and not only see how far I’ve come, but to genuinely lift the quality of the final product and make it easier to maintain and expand.

The Empire State Building did not spring from a vacuum, and neither did Ruby on Rails or any complex piece of software. Each of these acheivements was built upon a steady upward climb of not only learning the basics, but understanding how to apply them properly before moving on to a more ambitious goal. To coin a phrase: from little things, big things grow.