Learn Concepts by Using Developer Software Like a QA Engineer

Traditionally, CS folks learn by either reading textbooks or working on projects. Usually, the former is more boring but informative and the latter is more motivating but incomplete.

I’m a neophyte when it comes to computer networking, but, upon reflection, I realized I learned enough networking adequate for web development through another route: Using complex software.

Here’s how I do it: Go into some complex software and just play around with the GUI, open all the tabs, play around with the configurations, etc. And, when I come across a term I don’t know, I can refer to the software’s manual for a definition usually accompanied with a concrete example.

Pros Cons
Master an industry software simultaneously Less Hands On
Visual learning Less intuition
Concrete examples  
Abstract concepts skipped  

For example: I want to learn about web requests. Instead of popping open MDN Docs and read all the different HTTP headers, I F12 to open up the Chrome networking tab.

Look at the sea of information there is. From here, I learn in a “diff-first” mindset: What are the differences in the examples? This is where a GUI shines. I find this “diff-first” mindset works better as repeated information are usually less important.

More software examples: DigitalOcean for hosting, Postman for API, Docker for software building.

Usually, learning CS through using software juxtaposes with learning the software itself. But, I find the mindset of “learning CS” more motivating. Furthermore, some concepts don’t have a UI (or a good UI), so, treat this learning approach complimentary to the other ones.