Making the Most of “Code Challenges”

The biggest challenge I have faced in learning to code in Python is retaining what I learn.  Over the past few years I have tried different online “code challenge” sites and have felt the thrill of solving a challenge and earning points….only to forget what I learned in a short time. This prevented me from progressing and, I’m sorry to say, I wasted a substantial amount of time.

Finally, this year, I have found a method of gathering and organizing my Python knowledge.

For every code challenge I try, I create an Evernote note.  In that note I include the following:

  1. The requirements of the code challenge
  2. The code I wrote that solved the challenge
  3. The official code challenge solution code (AFTER I write my own code that works, of course. 🙂)
  4. A section titled “What I Learned” where I review how my code compares to the solution, and how I can improve based on what I learned.

I keep all these notes in an Evernote notebook called “Python Notes”, with my notes on each challenge tagged with the origin of the challenge (such as “Codewars” or “Pybites”)  In another notebook called “Python Sources”, I keep articles I read that helped me with my code challenges.

Finally, I have my own “Python knowledgebase”, wiki-style, using ZimWiki.  This is where I add and categorize newly acquired Python knowledge in a way that will enable me to quickly find it.  Unlike Evernote, ZimWiki has an “index”, a sidebar that shows a hierarchy of my wiki pages, so I can easily find, for example, all my acquired knowledge on topics such as Dictionaries, Strings, Regular Expressions, etc.  ZimWiki is a desktop app, however since its notes are stored in plain text, I can access them via my Dropbox from anywhere.

Here are some examples:

Sample code challenge Evernote note:








Sample entry in my Knowledgebase, based on what I learned from the above challenge:

Lastly, here’s a close up of my wiki index, showing what I’ve learned about so far:

So far this has been a great help to me in building on what I learn.  I hope you find it helpful also!