When are courses counter-productive?
When you wish to improve your programming knowledge, choosing the next course you’ll follow on platforms such as Udacity, Coursera or Udemy is exciting. All the courses descriptions promises that you’ll learn great new skills you can use to build cool projects and to improve your career. It’s also very easy to get started by just pressing a button. When you’re going through the process, the feeling of growing your knowledge is awesome and you’re surrounded by a community of learners going through the same process. Finally, you get the satisfaction of finishing yet another course and you can brag to your friends that you’ve collected a few dozen courses in a variety of complex domains. What’s not to like about it?
Learning and deepening your knowledge is more than just following instructions from a teacher. Most of those courses follow a similar format and difficulty level, and will teach how to be a beginner in a variety of domains and programming languages. You’ll master the process of completing courses, which may feel like the right thing to do to learn new skills. It’s easy to default to courses to learn new skills, but you must make sure it’s worth it and that you’re not just collecting certificates. You also must be careful not to become too comfortable with the process: if going through a course is a breeze every time, you’re probably not stretching yourself enough and you’re using this learning technique as a crutch that will slow you down.
I’m not saying that following a course doesn’t take any effort or is worthless, but choosing courses at random is a poor use of your time if you wish to grow as a software developer. In fact, the current state of online education is awesome: there are great courses available to improve your knowledge on any subject, and they’re a valuable tool to have in your learning toolbox. I don’t regret the old times when all we had to understand a programming language was a few thick books. But there are so many courses that you must cut through the noise to find those few that will help you reach your goals. You need to focus on a few core skills instead of signing up for everything that sounds cool.
Also, following a course is the beginning of the learning process and not the end. If you wish to really understand the material, you must use what you’ve learned, form your own opinions and improve beyond what you were taught. Don’t be afraid to start making your own mistakes, to share what you have learned and to make code that will be used by real people. You won’t have the time to do that if you’re cranking out certificates: you’ll get a lot more out of the courses you do follow if you do your own work that’s beyond what’s presented instead of sticking to the curriculum and stopping when it’s done.
Working toward a goal is easy if you’re just starting out and everything is fresh and new. For short-term goals such as learning a new programming language, reading a book or completing a course, it’s not hard to see it through if it really matters to you. You just need to follow the process and you can reach the end relatively quickly without losing steam. You’ll have many of those goals over the years and they’re essential if you want to keep improving as a software developer and keep up with technology.
There is so much to learn and so many cool things I can make as a software developer that I can stay on my computer all day without getting bored. It gets a bit hard to concentrate after a few hours, but nothing that a cup of coffee can’t fix. If I feel stir-crazy, I can always take my laptop to a coffee shop or meet other developers and talk about code. Sounds familiar?