Wow a lot has happened since my last post! I’ve started a new job and oh yeah, COVID-19 turned into a pandemic changing almost everything about my day-to-day life.
I’m in an extremely fortunate position; my job is secure, so far I haven’t been sick, and I don’t have many day-to-day responsibilities. As a result, I find myself with a lot more free time these days. Initially I took advantage of this to catch up on some much needed rest and relaxation. I’ve had a hectic few years so some down time was very much appreciated.
But recently I’ve felt much more energetic, and I’ve started challenging this energy into two side projects.
One is an app, that I’m using to learn more about Rails. I’ll share more information about this app soon. The other is project is the very early stages of a learn to code community.
I’ve started a new job and I’m back in a developer role, but I still find myself thinking about, and talking about, how people learn to code. Starting a new role, it’s more clear to me than ever that the learning never stops. Building a host of learning techniques you can apply to any new situation is truly the greatest gift a developer can give themselves.
The big problem is that beginner developers often get overwhelmed by the sheer volume of new information, and focus too much on solving specific problems. This tidal wave of new information and novel problems wipes out any thoughts about good process, or becoming better problem solvers. It was so difficult to watch developers struggle with unblocking themselves because they had built habits like referring to old code, rather than breaking a problem down or reading error messages.
After being at Makers for around a year, I became convinced that one of the most damaging tools being used in the learn to code space is the tutorial, or heavily guided walkthrough. The creators of these resources no doubt have great intentions. A learner has a specific goal, e.g. build a React site. They’ve never used React before, and don’t know where to start. The idea of having an experienced guide walk you through the full build of a complex site is alluring, and difficult to resist.
There’s a problem though. Whether you’re aware of it or not, you get better at whatever you practice…
- If you practice reading and interpreting error messages, you’ll get better at it.
- If you practice reading the official docs for React, you’ll get better at it.
- If you practice following instructions from a video, you’ll get better at it.
Tutorial videos often don’t include complex debugging steps, demonstrate TDD, or the why behind the decisions being made. Often, it’s not clear that decisions are being made! They encourage learners to follow set instructions, rather than build their own problem solving skills.
But this doesn’t help the overwhelmed learner, who just wants to build their first React site. And it’s even more overwhelming if they have not yet been introduced to JavaScript, or come across any of the problems React was built to solve. So what’s the solution? What should the new developer do? How can more experienced developers help them find their way?
I have an idea, and I’m going to call it ‘appropriately scoped challenges’. It’s not a new idea, we see it all the time. If you’ve ever tried CodeWars or Exercism then you will have also experienced challenges getting progressively harder. When you first start coding, it’s challenging to console.log
your first Hello, World!
. As you progress, you become ready for more complete challenges, like changing the colour of a div
on a button click.
Beginners often can’t determine an appropriate level of challenge for themselves, that’s where more experienced developers can help.
I want to try and build a community where learners can find challenges that will help them uncover the skills they need to be successful developers. Where more experienced developers act as facilitators to the learning process, resisting the urge to solve learners problems for them and instead leverage problems to help reveal gaps in their knowledge.
Instead of walkthroughs we’ll have linked mini-challenge modules that learners can explore.
Instead of concept explanations, we’ll have question prompts to encourage deeper exploration.
Instead of tutorial videos, we’ll have exercises to strengthen good coding processes.
There’s a lot of work to do, and I’m frequently having huge waves of self-doubt. But right now my mantra is Just Keep Going.