Learning to code can feel like a big challenge, especially when it’s being forced upon you by mandates or administration. This article is about helping you see the value in the challenge, and understanding how to best approach learning to code. We want to help you so that you have the best time doing it and best outcome possible because we know how amazing knowing how to code can be.
A key is thinking long term. This isn’t a simple task you can check off in a seminar or weekend. Like other sciences, in understanding computer science and coding, there is no end of potential learning. You wouldn’t expect to learn physics or geology in a one-hour intro workshop and be able to confidently incorporate it into your classroom, why do we have that expectation with coding? Coding combines a science with all its theoretical possibilities with a real tangible practical skill. Learning it opens up possibilities to do things with it. It’s a fun, interesting and helpful skill to have that can be incorporated into you life in a myriad of ways – enhancing admin skills, enhancing creativity, and expanding teaching methods. This makes it a powerful skill for teachers and worth the effort to learn.
The Three Stages of Learning Coding Education
As a teacher learning to code there are three main stages of skill development:
- Learning the system
- Learning to teach the system
- Learning to teach WITH the system
Learning the System
Here you need to understand the coding platform itself. This means getting to know the tool, how to access it’s components and what it’s abilities or limitations are. Even short introductory courses and workshops are a great way to quickly get a basic understanding. However, like any deep skill, you’ll return to this regularly, you’ll discover new aspects and potentials, dive deeper, expand projects and skills over time. Don’t view it as a one-time phase, but part of a cycle of continuous learning. This also means you don’t have to learn it all at once.
Learning to Teach the System
Once you’ve gotten familiar with the system, you’ll need to be able to convey that knowledge to your students. You need to reliably know the system enough to be able to guide students through finding components, using them, getting results, and most difficultly, troubleshooting, so that your class can use the system. This is both a great test of knowing a system, as well as a learning opportunity to better know a system. Students will often challenge you with wanting to know and do more and help push the knowledge of and engagement with a system.
Learning to Teach WITH the System
The real purpose of learning to code isn’t just to teaching coding. We don’t code for coding’s sake, we code for a purpose. Coding is a tool to use in your classroom. It doesn’t have to be a separate subject. With comfort and capability teacher’s can use coding projects to enhance the teaching of other subjects, bringing principles to life in simulations or encouraging recitation and integration of knowledge within projects. As one learns the system one can create projects that bring subjects to life to new and interesting ways. I wrote about how valuable coding can be to education in this post.
So with this in mind, how does one succeed on their path to coding education? Here are three major areas to consider that we’ve seen deliver better learning:
Focus
Coding is a vast subject and there is an ever-growing list of options or possibilities to work with. Unfortunately a lot of edtech consultants are just going to push continually more different things and endless spending and a cycle of unending adaption. This is exactly the opposite of what the education system needs. Teachers, and school districts, should FOCUS. We don’t need to cover all the wide-range of potential out there. We need to provide critical knowledge and training, and through it the deep knowledge that can adapt to whatever a student needs when they leave the classroom.
Learning more deeply in a few platforms gives far more meaningful results than having students juggle constant different toys and websites. Each time you shift, you reset the clock, have to reteach a lot of the basics, and you never get to the deep learning and deep personalization that gives the most meaningful results. We want students to achieve mastery, jumping around prevents that. They need the time to become familiar and comfortable with systems, and trust that they aren’t going to be pulled away, to invest in personal projects that let them explore, learn and motivate on their own.
This means its very important for school districts and teachers to choose to focus on a few very flexible powerful tools that offer open-ended exploration and development. Toy-based coding, and mission-based coding, are exactly the opposite of this. They may make it easy to start, but they hit hard walls early and often, giving a limited opportunity and limited perspective of the subject. Tools like Scratch (developed at MIT) are exactly what’s needed – open-ended, child-friendly, creativity-focused coding that supports investment from students.
Application
Motivation is the biggest battle when learning a skill, especially a complex and technical one. What you choose to code can make a big difference in whether you want to keep trying. The most common piece of advice to would-be game developers from veterans is always “start small”. Small projects and tempered ambitions are critical to creating a healthy and positive learning path. By making sure you’re taking bite-sized pieces when learning you get two very important benefits. The first is better scaffolded learning – by keeping things small you have less complications that can obscure any problems that come up, making you less likely to fail. Secondly, by having small projects you are more likely to complete them and gain that confidence and satisfaction of victory. It’s better to break things into smaller pieces and succeed at them, then have one big project you never finish because you get frustrated or run out of juice.
The other side of winning the motivation battle is choosing things that matter to you. Find, or create, practical examples, projects you enjoy, subjects you align with, or could make useful templates or lessons for use in class. By making a project you need or want, you’ll be more likely to succeed. By choosing topics, art styles, or appealing aesthetic choices, you’ll be more interested and enjoy the process more. You’ll find this is especially true with students – getting to make a project including their favourite animal, for example, will make a big difference to motivation.
Understanding
Mastery comes not just from following tutorials or plodding through a course. It comes from doing. It comes from doing over again. It comes from trying, failing, trying again and succeeding. Deep understanding of concepts takes practice. You need to work with them, see them in different contexts, repurpose them, adapt them, incorrectly use them, replace them. It’s a long and complex process to truly master something. We need to approach learning coding with an openness to this complexity, and the long process it demands.
We need to accept that learning coding and the concepts of computer science takes time. School districts need to know that teachers proficiency grows over years not days. We need to prepare for a marathon, not a sprint. Taking small steps gets us consistent growth and movement toward our goals. We need to scale expectations to years towards competency in such a new and obscure field. But we should also know that we can make progress. Even an hour of study and practice will leave you in a better situation than you were before it.
It may be complex and take time, but it’s also more accessible and possible than most people imagine. The mystique or prestige around coding isn’t deserved. It is a skill anyone can learn, and everyone should try. We don’t want everyone to be programmers, but we should have a base level of literacy around such critical technology. Coding is the opportunity to understand a lot about our modern world. Even a small amount of knowledge can be very important to enhancing a persons digital literacy and digital citizenship through understanding how computers work at a basic level. There’s a lot of reasons we want to fight through the struggle to learn and integrate this skillset.
Best Way How
So these are some general guidelines for folks on how to approach learning coding, but what about some direct practical steps?
Your best bet is choosing to learn Scratch. Out of all the myriad coding platforms and languages, this is the absolute best choice for learning coding for education. It offers the most flexibility, best accessibility, best support, it’s the most approachable, and here’s the real winner: it’s free! Scratch isn’t a proprietary scheme from a greedy edtech company, it’s built by educators, for educators under a non-profit foundation backed by MIT and Harvard. It is the best option, by far, for coding education. It does lean towards early and middle grades rather than high school, but that’s where fundamental learning begins. As an adult professional learning you might wonder, but shouldn’t you learn a language for adults? Well, even the Harvard CS50 course starts with students using Scratch. It is wonderfully capable and accessible. You’ll be able to jump in and get started quickly, but you’ll also be able to do an amazing array of things with it and cover years and years worth of learning with it.
What’s the best way to learn Scratch?
It just so happens that yours truly wrote the most comprehensive book series on Scratch for educators! It’s not a coincidence, after teaching coding in classrooms across the country for years, I know that Scratch is the best system. After years of experience as a coding educator, on top of my years as a tech entrepreneur, I know that Scratch is what classrooms need! So I tried to build the best resource I could for teachers to help them learn it.
The Teacher’s Guide to Scratch is a three-book series to help teacher’s learn Scratch inside and out. It provides 4 major projects in each book, with helpful hints on concepts, and teaching practice. Each book focuses on a different stage of learning, Beginner, Intermediate and Advanced. They also include a very useful troubleshooting chapter to help you handle the issues that will come up when teaching coding. I highly recommend it as a guide to learning Scratch, a guide to very useful learning projects, and a handy desk reference for theory and troubleshooting.
If you prefer learning from video, I’ve also produced The Teacher’s Guide to Scratch online course! With completely different content than the book series, it’s an alternative or an addition to your learning path. It has four major projects as well as over a dozen mini-projects that teach the fundamental programming “building blocks” to get you a well rounded understanding of working with Scratch – great to help you understand how to make your own projects. It also has sections explaining important computer science concepts and terms, as well as a section on pegagogy to help you introduce, design, review and grade coding lessons. It’s a big course, designed for you to work on in bite sized pieces, just one video a week and you’ll create a great learning habit, especially if you can work through it and review with others in a personal learning network (PLN) to review and reflect on what you’ve learned each week. Check with your school district for professional development funding to get started with either or both of these resources to help you succeed on your path to learning coding education and take your teaching career to the next level!