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.
|Master an industry software simultaneously||Less Hands On|
|Visual learning||Less intuition|
|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.