If you’ve ever asked experienced developers how to learn to code, or what languages you should learn, you’ve likely received a lot of different answers. Some tell you to start with an enterprise-level language like Java or C++. Others say to start with Frameworks, like React. Many others will advise you to learn procedural programming before moving on to a higher level, object-oriented programming.
There is no single right answer for everyone. However, if you’re new to the field, there is a progression I’d suggest that will make it easier for you to learn. Learning to code is not an easy task regardless of the progression of the skills you choose. However, if you select a curriculum based on the way people learn, you’ll be much more likely to succeed.
There are a lot of mistakes I see when looking at coding curricula. These mistakes can demotivate you and make it much more challenging to achieve your objectives. By avoiding programs and curriculum that make these mistakes, you’ll be much more likely to complete and reach your goals.
Context is everything.
Imagine you’re learning to bake. (I know next to nothing about baking, but I think the metaphor works.) You’ll start with simple recipes to get the fundamentals down. You may bake brownies or cookies. That will be rewarding because you’ll experience success quickly. You’ll then move on to increasingly complex recipes, such as danishes or cakes.
Many coding curricula start you off by baking a wedding cake– that is, by introducing enterprise object-oriented languages like Java or c++. That’s a mistake.
The thing is a college education is much different than job and career training. Your goal, if choosing to learn to code outside the college classroom, should be to get up and running as soon as possible. If you don’t have four years (or more) to learn, create a context with easier languages, and build from there.
Ever been working on a large project that spans several chapters in a book or course and realize that a mistake you made very early on is holding you back now? That’s the problem with spiral learning. According to Training Industry’s Online Glossary, “Spiral learning is a teaching method based on the premise that a student learns more about a subject each time the topic is reviewed or encountered.”
In theory, spiral learning is fine; however, when it’s applied to projects, the results can be disastrous.
If you’ve studied how to learn to code, you know that you will make lots of mistakes. Some mistakes go undetected and only come to light later. When projects span multiple sections of a coding curriculum, a mistake you made in chapter two causes the work you do in chapter seven to break. This is a frustrating experience, to say the least, and causes people to return to older code they thought they had mastered.
Today there are hundreds of libraries designed to do the heavy lifting and make projects easier for developers. I think these libraries and frameworks are terrific. They are tremendous time-savers for developers who have a high-altitude understanding of software development. However, for beginners, they can be a double-edged sword.
These libraries and frameworks hide the code behind the complexities of development. Use libraries and Frameworks as a convenience, not a crutch. You must understand precisely what the libraries are doing behind the scenes to use them correctly and efficiently. If you’re using libraries because you don’t know how to do what the libraries do otherwise, you’re going to run into trouble.
At the risk of sounding trite, learning how to code is a lot like learning how to ride a bicycle. You can describe how to ride all day long– but five minutes’ worth of riding will teach you more than a month’s worth of lecture.
If the learning program you’re considering doesn’t focus mostly on application, then you should be cautious. New developers should spend 60-80% of their time working on coding exercises and projects with the mentorship of an instructor. You simply have to learn by doing when it comes to coding. If a program depends a lot on lectures or emphasizes lecture over practice and application, you should choose a different approach.
A community can be a key to success when it comes to learning how to code in 2020. According to Julie Dirkson’s description of an MIT Media Lab Study (Okita 2008) in her book Design for How People Learn, “When people believed they were interacting with a live person, they showed more visible sings of paying attention, learned more, and did better on post-tests.”
When it comes to learning, interaction with live people is vital. The nature of online learning includes a lot of prerecorded material. That’s fine, by a community of peers is critical in creating opportunities for interaction. Interaction with real people simply yields better results, so think about the prospects for the community before committing to a particular curriculum teaching you how to code.
We’ve talked about the mistakes to be on the lookout for when figuring out how to learn to code. Let’s talk about a learning program that makes sense, designed around how people learn. I recommend starting with foundational web development skills.
Not only is there a critical need for web developers, but it can be a rewarding career in and of itself. The web is now (by far) the way people access and interact with software. Programs that used to live on your hard drive, now live on the web. The web-based software model is often known as SASS, or software as a service. In the SASS model, users pay for monthly access to software distributed through the web.
I recommend starting by learning HTML.
“Wait, that’s not a real programming language,” comes the inevitable argument. Technically that’s correct. HTML is a markup language that provides a scaffolding for every web-based application out there. It’s ubiquitous and useful, not to mention easy to learn. Learning HTML will allow you to chalk up a success as you create code for the first time, debug issues, and test what you’ve made in a web browser. I recommend you follow up on your HTML work with CSS: Cascading Style Sheet language.
Once you’ve built a foundation, you can move forward with specialization. When you specialize, you move from generalist to expert in a specific area of the coding world. You may have the ultimate goal of becoming an iOS mobile developer. That’s a great goal. However, it is a dangerous place to start without context. You’ll most likely be successful with your ultimate goal of becoming a mobile developer if you take an incremental approach that provides context for this more advanced learning.
There are dozens of specialties in development. All of these specialties require advanced knowledge to be successful. Let’s take game development as an example. Much game development is done in the Unity environment using a language called C# (pronounced “C sharp”). Others code games using C++, an old but powerful language that can be lightning fast.
Too many start out in what really should be a specialty and get quickly overwhelmed by the complexity that they have no context to learn. While it’s not impossible to learn a more advanced skill this way, it certainly makes it more difficult. Because I have a context developed through many years of experience, I was able to learn the basics of Unity game development through an online class given by Playcrafting. I had no trouble keeping up with the instructor even though I had no exposure to Unity in the past. I was one of the few in the class who completed and created the game we were developing.
Too many look at a portfolio as a cumulative activity that one creates at the end of a learning program. You should consider starting your portfolio immediately. Not only should your portfolio include projects to impress potential employers, but it should be a timeline of your learning. Consider beginning your portfolio now. Your portfolio should not only show what you are capable of through projects but the progression of your understanding as you gained new skills.
When you get frustrated with learning, as we all sometimes do, you can turn to your portfolio as a source of inspiration. Your portfolio should show you both how far you’ve come and everything you’re capable of. As a bonus, a strong portfolio can be vital in getting your first jobs in the development industry.
Whether you are self-teaching coding skills or enrolled in a formal school, you will ultimately find what works for you. A well-designed learning program and curriculum, however, will take you further, and be less frustrating than one that is not designed around how people acquire coding skills.
These tips on how to learn to code should help you reach your professional goals quickly and comfortably without making the common mistakes that cause people to get sidetracked.