Learning programming on your own is challenging since there’s no one who can address your concern or keep you accountable for making progress. That’s why it takes planning and confidence to succeed as a self-taught engineer.
In this post, we’ll go through the fundamentals of becoming a self-taught engineer.
Start With the Right Mindset
Learning resources are important for programming learners but they won’t take you far if you have no idea why you want to learn to code and how to go about it.
That’s why, before jumping to tutorials and YouTube videos, it’s a good idea to reflect on your ambition and expectations for the learning curve.
Here are a few prerequisites for a growth-oriented learner mindset:
- Have a goal. Come up with a clear motivation for why you want to learn to program. It might be a well-paid job, the rush you get out of solving problems and seeing your program on the screen, or a Youtuber you admire. The important part: your reason should be honest and powerful enough to keep you going when the motivation is at its lowest.
- Know your limits. A lot of coders fall into the trap of the “halo” effect, thinking: “Once I start coding, I’ll surely be able to squeeze in 3-4 hours of daily practice”. Guess what happens after they pick up a textbook or a tutorial? Life does. You realize that combining an exhausting practice session with a challenging job or getting a degree is not easy so you stray from an ambitious roadmap you’ve come up with and eventually feel like you are falling behind. To make sure this doesn’t happen, set a realistic learning timeline that doesn’t interfere with other commitments.
- Choose one language and commit to it. Beginner programming students often hop between technologies, trying to find the easiest, coolest, highest-paying language. The truth is, all programming languages have benefits and limitations. So, rather than trying to find a perfect technology, choose a language that helps you accomplish your goals the fastest and research how to learn it online (e.g. this is a good roadmap on how to learn Java).
Here’s how your train of thought can go as you choose a programming language to learn:
|What I want to do||Which programming languages should I learn?|
|Build websites||HTML5, JS, CSS|
|Make Android apps||Java, Kotlin|
|Build iOS apps||Swift, Objective-C|
|Create desktop software||C#|
|Work on robotics and design programs for micro-controllers||C|
|Scripting and automation||Java, Python, Ruby, etc.|
Choose the Right Learning Resources
It’s common for beginner coders to worry about choosing learning materials as if their life depends on it. You can often see thought patterns like: “But if I don’t find the best resource, I’ll be missing out on valuable ideas”.
This is true only to an extent. Keep in mind that all beginner-oriented videos, online courses, and tutorials start by teaching the same basic principles. A more important question is — what type of learning resources is right for you?
Let’s break down the benefits and drawbacks of using textbooks, tutorials, videos, and online courses to learn to program.
|Textbooks||Quality control — an author has to go through a lot of editorial runs before publishing a textbook and the contents are approved by multiple people.Excellent reference source — since all learning material is grouped by chapters, it’s easy to review a concept because you know where it’s covered. You choose the learning pace — students can adjust their reading speed to their processing skills, mood, etc.||Outdated code and client versions. Books are not easy to update — an author has to publish a new edition to edit a textbook. On the other hand, the technology world changes constantly, so textbook screenshots and links eventually get outdated. No personal connection with the author — since there’s no external stimuli like a video or a voice guiding you through a lesson, it’s easy to lose focus.|
|Video tutorials||Engaging — completing a video course gives students a sense of connection with the instructor — you’ll almost feel like you got a programming teacher. Step-by-step demonstration — the ability to follow along with the tutorial helps programming students practice directly as they learn. Creative approach to learning — while there are courses that follow a standard CS curriculum, some hosts go the extra mile to be creative and introduce students to the features of a programming language through a creative project.||Limited ability to choose your pace. You can speed the video up or slow it down to streamline learning but you cannot skip things you already know as easily as you would when reading a textbook. Hard to reference — in order to review a concept, you need remember which video featured it and have a timestamp for a specific moment when an instructor brings the idea up.|
|Online courses||Clear timeline and curriculum. Most learning platforms do an excellent job of creating a roadmap that takes other commitments into consideration and allows students to make progress just by showing up to the platform and solving practice problems. Practice-driven approach — coding platforms focus on helping students retain coding concepts by solving hundreds of related problems.||Need to pay. Most high-quality learning platforms and online courses ask users to pay subscription fees to the full content of the course. Commitment — to be a successful student on an online platform, you need to show up and keep up daily streaks. While the need to commit helps students as a motivation boost, it can become a source of pressure as well.|
List of Best Resources For Programming Learners
To find helpful resources for learning coding on your own, take a look at our curated list of well-paced books, Youtube channels, and coding platforms for beginners.
- The Self-Taught Programmer: a Definitive Guide to Programming Professionally
- Code: The Hidden Language of Computer Hardware and Software
- Clean Code: A Handbook of Agile Software Craftmanship
- The Pragmatic Programmer: From Journeyman to Master
Armed with a clear goal and a powerful resource library, you will be able to overcome the challenges of learning coding on your own and become a skilled programmer. If you are learning web design then do also take a look at these best web design and development blogs.