This post includes an audio version. If you prefer that you can listen here or on the JAL Audioblog Podcast
I understand that Software Development is a relatively young discipline and that new approaches and technologies appear daily. However, ignoring already-known solutions and not teaching them to new developers is negligence.
Over the last few years, I have used different web services to practice my coding skills and learn new programming languages and technologies. I enjoy investing one hour daily in sites like HyperSkill or LeetCode, which is different from my daily work. But they all have the same problem: They focus on technology and entirely ignore the software development process’s good habits or techniques.
Let me give you an example. Since 2018 I have been using HyperSkill. There, I finished Python, Kotlin and Front End Paths. I did also half of the Java and Go Paths. That to say, I have invested quite a bit of time there. During all that time, I saw no mention of the Software development process. Likewise, TDD or basic Unit Tests are ignored in their projects.
It makes no sense to develop an algorithm without Unit Test. Otherwise, how can you confidently refactor to improve the code? Without those tools, new developers will code themselves to a corner on every single project, like we all did.
I’m not suggesting that those sites check that the learner writes proper unit tests; they should keep testing the production code. Instead, show the tools and techniques and encourage the students to apply them to develop faster and with higher quality.
I believe Extreme Programming should be taught on those sites, especially the technical part (Coding and Testing). Those techniques are paramount to avoid frustration a coding yourself to a corner.