Online Courses for Developers - A slightly more Critical View

Post image
Photo by Tim Gouw from Pexels

We have a massive skills shortage in IT, especially in development. A natural effect of this is that there are many career changers and, as a result, alternative educational opportunities. These alternatives, mostly YouTube video courses and other online offerings, are good knowledge brokers but have downsides. Especially in such a knowledge-driven environment, scientific methods are more important than entertaining course design.

The Content Revolution

First of all, I want to express that I find the information available online a super achievement. I would have loved to have had these opportunities during my education with YouTube, Udemy, Coursera, and the like. No, of course, I’m not that old yet. The internet existed, and there was a lot of information available, but in no comparison to today. You read books about programming languages and frameworks. StackOverflow was emerging. The primary source of information on libraries and frameworks was the documentation or their source code.

The content revolution changed that. There is not just one but many videos, online training, and courses on every topic. Much of it is, unfortunately, garbage. That’s the Internet, and it used to be that way. What has changed is the offer, presentation in the media, and of course, the acceptance in the industry. Today, many people equate online courses with academic or practical training, which I find questionable in some cases.

So I need to Study?

No. I don’t believe that a degree is mandatory for a software developer. Also, little knowledge that can actually be applied in practice is imparted in foundational studies:

“Most graduates cannot program yet”

But, a degree in information science, ICT, or any other engineering science is a school of thought. You learn how to obtain, validate, evaluate, and adequately use information. Unfortunately, the scientific approach is not taught in any (or very few) online videos, even though it is the foundation for fact-based learning:

“Most graduates know how to learn programming”

Personally, my studies helped me understand how to learn and use information efficiently. The main asset was not knowledge, but methodology. I can recommend at least an undergraduate degree (in any science or engineering discipline) to anyone to take this approach with them.

A Scientific Approach

If you want to learn programming to work with it professionally, start with the basics: The scientific method of work. Of course, it’s not as much fun as just coding something quickly, but it’s a long-term investment in your future and everything you learn.

“Because some guy on YouTube said so” is not an argument!

For this very reason: Research information from different sources of various authors. Learning videos are good, but only the beginning. Study the material, and look for criticism of the methods you have learned. Try them out. Read documentation and code. Check and question statements made and validate if a specific content actually contributes to solving the problem you want to solve. Lastly, don’t use or even introduce technology, just because it’s cool. The latter is, in my personal opinion, a bold issue in many development teams.

Final Thoughts

I thought about linking a pragmatic YouTube video about the scientific method for a long time. There are many excellent videos about it. But I decided not to link one directly but let you do your own research instead. For reference purposes, however, here is the Wikipedia article on the subject:

Scientific method on

Don’t be a blind follower, and above all, don’t help spread false or insufficient information.

You May Also Like

How a Strong Type System Saves You Documentation, Tests, and Nerves

How a Strong Type System Saves You Documentation, Tests, and Nerves

I was recently inspired to finally write this post. Especially in weakly- or untyped languages, such as the JavaScript or PHP world, the added value of strict type systems is often not recognized. Instead, many discussions and comments revolve around the need for tests or code comments. Contrary to that, in the functional programming world, we leave such checks to the compiler. In this post I would like to give a short overview and explain how to use a strict type system for everyday checks instead of writing type checks, tests and documentation for it.

How to effectively visualize an Application Landscape in Enterprise Architecture

How to effectively visualize an Application Landscape in Enterprise Architecture

In enterprise & solution architecture, connecting boxes with arrows is an often used and overrated visualization from high-level, thru component architecture, down to data and class diagrams. However, to create a holistic view on systems, component diagrams are not enough! When it comes to analysis or transformation of a high-level application- or service-architecture, I prefer to draw an Application Landscape Diagram, which I would like to show and elaborate on in this post.