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!

The next step….

Ever since I discovered Python in 2013, I have been coding in my own little world, mostly trying out ill-fated grandiose ideas that were light-years ahead of my capabilities.  It was if I could “graduate” from Codecademy, then just Google and Stack Overflow my way to writing a financial management application!  I struggled to figure out to learn the most I could about the capabilities of Python and simultaneously bring my complex ideas to life. In the past year I’ve come to realize I haven’t progressed very far in learning Python beyond what it can do for my simple little text importing needs.  Until recently, I had no idea what to do next.

Enter the “Code Challengers!”

It seems to me that in the past couple of years, several sites have sprung up to not just teach coding, but give learners a chance to practice, with the encouragement of both fellow learners and experts in an online community.   I’ve checked out Codewars, Codefights, and Freecodecamp and am impressed with the positive, uplifting “vibe” of these communities.  These brought to my attention a missing ingredient in my learning:  connecting with other people who on the same journey as me, so I may have opportunities to both receive and give help and encouragement.  This, of course, includes being willing to share my code with others and accept criticism — a critical component in learning anything.

Why has it taken me so long to take this step?  One word: Fear.

I follow some Python developers on Twitter, and many of their tweets might as well be in Chinese to me, given my ability to understand them.

I look back on all these years I’ve been dabbling in Python in my (limited) free time, and my code still looks to me like the Python equivalent of a toddler’s crayon drawings. All it does is push text around!  I couldn’t imagine anyone on, say, Stack Overflow or Reddit giving me the time of day.

Yet as 2018 progressed, I kept nagging myself:  “You gotta get your code out there!  Show it to people!  Get feedback!  You’ll never get anywhere..remember those articles you’ve read about how coders can’t just be great programmers, they must also know how to communicate and work with others effectively?”

Finally, on June 26, I took a major step forward in my Python adventure:  I posted the latest incarnation of my CSV file reader on GitHub, Tweeted a link to it, and asked for feedback.

I expected a few polite “likes”, maybe a comment or two like “well, it’s a start..good luck…”.

Instead, I received an invitation to join the PyBites Slack community, and share my code there, which I did.

Within an hour, it generated a whole new discussion thread, in which I received a lot of positive feedback and gratitude for sharing.  It was a fresh boost of inspiration to push forward with my “Py Ed”, even reviving my hope of coding as a profession some day.

Many thanks, Bob and Julian.