On the Quality of Training Materials in Software Development

Hey, a post related to software development! I haven’t had one of those in quite some time.

One thing I am learning during this pandemic-induced quarantine is that, as stressful and tiring as my job can be, I need it (or something like it) in my life. After a few days of sitting at home, spending most of my time watching my kids, I felt a figurative pressure inside of me, a pressure not simply to be productive, but to work on code. I need the regular schedule mental stimulation that I get from working on and with software.

For years I have wondered why I struggle to work on any programming side projects in my free time. Now I know the answer - it is not a lack of willpower, but a lack of mental energy. When I go to work every day, I come home mentally drained. Take me out of work for a long period of time, however, and all I want to do is side projects and training.

Nevertheless, it has not been easy. As I said, I have kids to watch, and that is not conducive to getting on a laptop. Beyond that, however, there is a bigger problem.

The first training class I took was an overview of three Javascript frameworks - Vue.js, Angular, and React.js. I could not get through this simple course without writing copious amounts of notes.

The next thing I set out to do was to learn more about the programming language Kotlin. Once again, I took notes, but this time they became even more complex and detailed. After a while I realized that I was writing the equivalent of a short technical book, rather than simple notes.

No one is asking me to write all these things down, but I feel compelled to. This is something I am very uncomfortable stating, but I feel I have no choice. Here goes:

A lot of training and reference material surrounding software development topics either needs more supplementary material, or is simply bad.

I hate saying this because I hate the idea of criticizing someone who takes time to try and educate others. They could easily stop, and if enough people did so, we might not have any training or reference material.

Having said that, I also believe that if your aim is to truly teach people, and make them better, you owe it to your potential audience to write material that is accurate, well organized, and carefully considered. And while I cannot guess the true intentions of everyone out there writing material, there are many cases in which I get the strong sense that the author is more concerned about making themselves look smart and capable - or in some cases, more concerned about making money - than they are in teaching.

Since I clearly feel like so much material is inadequate, the inevitable question is “do you think you can do any better?“. To which my answer is, “Maybe not, but I am confident that I cannot do any worse.”

And so I find myself writing all of my thoughts and observations down in such a way that I believe would be useful and educational to other developers. Part of me really enjoys doing it; in my opinion, you can’t easily teach someone about a topic unless you yourself have some degree of mastery over it, so it forces me to dive deep and find answers for even the more minor edge cases and oddities. On the other hand, writing these notes takes a lot of time, which slows down the speed of my own learning.

I also struggle to fight my completionist urges. For example, for all the nice things I find in Kotlin, there are other aspects of the language which I find a bit frustrating. I could just give up on it, but I already came so far, and I might wind up needing to know if for my job anyway, so I continue to push forward. It takes a lot of the fun out of the learning process, but then again, maybe that is the point. I am no longer trying to learn, but teach, and as we all know, teaching is a full time job.

So I guess I really am trading one kind of job for another.