/course/zero
Start here. This is my strategy course — one that will help you avoid common student mistakes, build your foundation, and become a more capable and confident programmer.
Just bad at programming? Or, am I doing it wrong?
Frustrated? Does programming seem impossibly difficult? Do you feel like others are having an easier time in your programming courses? Or maybe you just feel a bit shakey and want to have more confidence as a software developer.
Does this sound like you?
You're not alone, and you might just be going about it the wrong way. A lot of students approach learning to program using the techniques and approaches that worked for them in grade school — but find that those techniques don't work so well when learning to program.
My goal is to fix that.
This course is all about the approach—about how we learn to program. I share advice, techniques, exercises, and examples from over 25 years of experience as a developer and from teaching thousands of students, to help you become a capable, confident programmer.
Rather than focus on technical details, this course will help you start building your foundation, honing your skills, and mastering your craft.
I believe that anybody can become a strong programmer. Come help me prove it.
You should take this course if...
You are a beginning programmer looking to build your confidence and programming mastery.
You feel like you watch a lot, listen a lot, and read a lot, but aren't getting better at programming.
You are looking for strategies for learning more quickly and effectively.
You are serious about improving your skills and aren't afraid of a little work.
Is it for absolute beginners? Absolute beginners are welcome, but you will probably get more out of it if you have a little programming under your belt.
Is it for experienced programmers? Not really. If you're a confident professional developer or a rockstar student always at the top of your class, you might be bored, and you probably don't need this class. Don't take this one unless you want a review. Don't worry, I'm planning to make more courses in the future.
This is not an embedded systems course. Some of you were hoping it would be, but it's not. I do hope to release an embedded course, at some point, in the future.
This is not a get-a-job-at-google-in-3-weeks scheme. This course focuses on fundamentals—core strategies and tools aimed at helping you better understand how computers work and make you more confident at any level of the computing stack. But, I'm not going to lie to you. Getting good at developing software takes time and work. And, in this course, I will show you how to work efficiently to maximize your results.
This course is asynchronous. This course contains videos, quizzes, and text lessons, but no live content. This allows me to make it more affordable, and it means you can work through the material at the pace and schedule that works best for you. We do provide a Discord server to facilitate discussion and provide feedback.
Please let me know if you have questions or concerns.
This course will give you strategies to become a more capable, confident software developer, including what to learn first to accelerate your mastery, how to avoid common student mistakes, and how to ensure that you can easily pivot in the future. We'll also provide you with training examples and programming activities to help you see how you can put these strategies into practice in your own training. The course will focus on fundamentals, not frills or frameworks, with an emphasis on building portable mastery that will serve you as well in embedded systems as it will in web application and game development.
At a minimum, you will need a computer and an Internet connection. To keep things simple, I'm going to use Linux as my reference computing platform. If you don't have Linux on your machine, you can set up a Linux virtual machine. I will also show you how to use Vagrant to set one up, in case your computer is struggling to run the full VM.
I want to focus on strategy, not on language features. So, I mostly stick with C. Maybe some C++. You will also see a little ruby, python, and bash.
The course focuses on our approach to learning, not language mechanics. My examples will assume that you are familiar with the basics of C — functions, variables, statements, loops. It's ok if you are still a bit shaky in spots. The focus is on how to learn, not on what you know.
That really depends on you. I recommend that new programmers spend at least 1 hour per day. More time and strategic practice will probably produce quicker results.
No. Refunds cause too much work and too many headaches. If you're unsure about taking the course, please watch my free videos on YouTube or ask me for clarification.