Coders love a challenge. You’ve probably seen (or completed) #100DaysOfCode, #60DaysOfCloud or another variation. I’d never done one before so the idea of committing to three and a half months scared me, but I wanted to push myself to try complete my Computer Science course and maybe learn something new. On 25th January, I posted on Twitter (and my work tech group chat) that I was committing to a #30DayChallenge with Codecademy. On 23rd February, I had completed my course. 56 lessons, 50 quizzes, 23 projects and 10 articles/videos. I was stunned and incredibly proud.
Admittedly, I had done about 5 lessons beforehand and I am not a complete Python novice, so the first few courses were quicker to get my head around. But by the end I was implementing algorithms I hadn’t heard of before and my confidence in my coding ability overall – across all languages I work in – improved a lot.
I wanted to share my main takeaways from the experience, so I return to my What I Learned series to encourage you – those new to coding or who may want to try something new but find the idea of daily practice daunting – to give it a go:
Choose a platform that works for you
One of the most frequent questions I see and am asked is which platform should you use. Understandably, as many have high price-points, different credentials, partners and languages it can be difficult to understand where to begin. I currently have an annual subscription to Codecademy which works out at about £15.99 per month and used their platform for my #30DayChallenge.
I chose Codecademy back in summer 2020 when I was applying for new jobs in the tech industry. I had used their free courses before so it was familiar to me, but I also wanted a company people recognised, who partnered with organisations such as Amazon and Google and could provide me with certification on completion of each course (which you can add to LinkedIn in a click). I know there are plenty of other alternatives – many free* – but I wanted a one-stop-shop for all the basic language learning I could think of, and the price-point was OK for me. But what about the content?
Firstly, the site is incredibly easy to use and the UI design is nice – giving you the option to track your progress and set weekly targets (including advice on what is attainable). Secondly, in the last few months Codecademy have been updating their programmes to ensure courses are up-to-date with any language changes and industry standards, and projects are relevant and realistic without problem sets being too complex (shout out to Alex and co who were updating many Python courses as I was completing them!).
Thirdly, the structured lessons, projects and progress-tracking kept me engaged and motivated me to continue on days when I felt a bit tired or demotivated. Most courses are split into four main formats you must finish to move onto the next stage or receive your certificate, and I often used these as milestones for my daily activity (e.g. finish X lessons and quiz or complete Y project):
- Lessons (conceptual and practical): every course usually has between 4-8 lessons that build on from the ones previous. These lessons take you through either larger conceptual ideas (e.g. Asymptotic Notation) or practical code application. You must complete each step to move onto the next, but if you get stuck at any point you can review the course “Cheat Sheet” or even “Show Solution” should you need. As there are often multiple ways to code something, and we all start courses at different levels, you may already know how to complete the next step (e.g. when defining a class the first step often says to input “pass” or doesn’t define all parameters you’ll need). However, I would recommend taking it slow. Even on “easier” lessons I still learned ways to code more efficiently and revised my understanding of why we do certain steps in programming.
- Quizzes: all multiple choice with the option to redo them. I found these useful to reflect on my learning and avoid missing steps in my algorithms.
- Projects: step-by-step coding projects taking you through the last few lessons you completed – often building something realistic – with the option to have a guided tutorial from a Codecademy Instructor on YouTube. At the end of the course or pathway you’re also able to do a project on your own reflecting on all the learning you’ve built.
- Articles and videos: focussing on deeper learning or outlining a new concept.
Finally, the content was amusing. Codecademy’s course designers throw in jokes, funny multiple choice answers, and left-field project scenarios which make the lessons more engaging without “overdoing” it. We all remember the teachers at school who made the class fun through jokes or wild examples – this is exactly that. For example, when navigating a graph to move from Gym node to Library node I was struck by a swarm of bees! But the next line is the key learning:
On Codecademy you can also interact with other students, engage in team projects and challenges and talk through ideas/problems. I haven’t used this function much but I did find some useful further reading when flicking through the conversations. I think Codecademy is a great platform for beginner-to-intermediate learning and their catalogue continues to grow. But most importantly, pick a site and plan that works for you.
Use the Power Hour
You may have heard of Adrienne Herbert’s Power Hour: the idea that by dedicating your energy for just one hour a day into one task or project you can avoid procrastination on the goals that are important to you and, more importantly, “create more white space in the calendar to live the life we love”. The Power Hour can be used for anything – cleaning your kitchen, reading a book for a book club, a long soak in a bubble bath to fully switch-off and relax. A task or project that is important to you in that moment.
For 30 days, my Power Hour was dedicated to learning. I code throughout the day at work and I didn’t want my Power Hour to feel like an extension of that – so I put a reminder in my diary everyday at 6pm to log onto Codecademy and add to this learning in a fun way – often with snacks and coffee in tow. As I wanted to complete my Computer Science pathway most days I worked through courses to achieve this, but one day where I was particularly tired I read a few articles on their site and another day revised some earlier sessions.
I found this focussed hour incredibly useful to make sure I stayed on target without getting overwhelmed. Much like exercise, I find time slots far more useful for target-setting (e.g. I say to myself; “I want to run for 30 minutes” but do not set a distance to achieve in those 30 minutes). Oftentimes, you end up doing more within that time or even dedicating more than one hour as you are energised when you get going. It makes the milestones more gratifying.
Review, revise, repeat
I started this course with Python knowledge. I’ve been working as a data engineer for about four months and code in Python/pandas everyday and I’ve completed courses in web development and other projects in various languages – so many of the introductory concepts were “easy” for me. However, the pathway structure takes multiple courses and concepts to build a portfolio of understanding in one area e.g. Computer Science. And I found it useful on one day to go back to an initial lesson on Python functions to make sure I understood them as intended for this course.
I also completed all quizzes to 80-100%. As you can retake the quizzes as many times as you like and they’re multiple choice, if I got questions wrong I went back through and tried to understand why I got it wrong and why the correct answer was correct. It also avoided me clicking through any answer to get to the end – only to forget a concept when I logged on the next day.
Reflect on your wins
This is the most important lesson. As we breeze through courses, learning, tasks and projects we often focus on our numeric goals. Even this challenge: code everyday for 30 days. I am impressed by the volume I got through, but what’s more important is the learning I have gained and it’s application to my day job and interests. At the end of each week I’d note which courses and lessons I’d completed but also how I used this learning in my work.
Often it would be a new way of thinking or a cleaner way to write something, but half-way through I noticed a function I’d been using for my day job (created by someone else in the team) used a similar structure to a project I had completed on my course. Not only did this mean I better understood my colleague’s code – I later participated in a Show & Tell to my Tech team on the parallels between my learning and the job, and even updated that code myself when we needed to.
I’ve taken a lot out of this experience and will definitely be logging into Codecademy in coming months to try out some (shorter) courses – but I also think I better understand coders’ fixation on the daily challenge hashtag. Daily practice does make you a better coder, but it also makes you a better learner (and teacher). It gave me discipline without pressure which I found very useful at a time when we have so much uncertainty and confusion.
I’d love to hear your experiences of #30DayChallenge or other coding challenges if you try them! Please get in touch 📧 email@example.com or hit the socials below.
*EDIT: The best reviewed and comprehensive free coding courses are those by freeCodeCamp. I’ve not done a full course – yet – but their resources, articles and videos are super useful.