Indeed learning is fun. Only when one attitude is right in learning is where one can gain more. Learning about how your processors works is a good insight to how machine work for you. At the same time, it also introduce you to the genius of human technologies.
If you attended a full fledge computer science course in university, you should be given a choice to take up computer architecture. This course gives you insight into how processors works at some high level. It's not low level enough to reach into electrical engineering involving clock sync and currents. These will be classified under semi conductor science and electrical engineering.
But you get to understand how complicated super high level programs function when you start breaking them down into opcodes. How memory are accessed at register level. MIPS is one of the educational assembly language due to its simplicity as a RISC processor. RISC processors are know to have a lot less variants of instruction sets performing the same task as oppose to CISC processors.
However since more than 15 years now, you find few developers understand about these fundamentals. It's really a pity. In my time, there is a project called V2OS which aim to have a OS completely written using assembly language, but it didn't make it, obviously for a good reason. Assembly languages takes too much effort to coordinate as a project of today's scale. Compilers are getting better over time to generate more efficient and compact assembly codes that obsolete most of the needs to touch at such low level, but still it's a very educational knowledge to know what you are stepping on when you are doing computing.
Back to the big question, can a web developer not knowing all these low level stuffs create solution that customers wanted and still server thousands or millions of subscribers ? The answer is yes, but will having such low level knowledge makes any difference ? The answer is YES and NO.
NO because it really doesn't require these low level knowledge to do something big. There are numerous frameworks, high level infrastructures and cloud services that shield you from the bottom level. If you know how to operate at this high level, you can actually accomplish alot upon these readily available technologies.
YES because if you aim to be the best among the rest, you need such knowledge as your basis for innovation. These few years, I see fundamentals classic computing technologies reinvent, tear down and recreated from scratch. But these are only among those with strong foundation in computing. If you can't understand why 2's complement is chosen for numeric representation, you wouldn't understand where you gain or lose if you choose something else to replace it.
If you don't understand what atomicity means at an machine instruction level, you will never understand why a simple state
is not suppose to be run in a shared model environment. You probably will be warned when this is not suppose to work, but how do you understand WHY if you don't understand how such simple statements are accomplished at machine opcode level ? Yet, this fundamental is the basis of distributed computing when you need to share resources.
So you see, knowledge of fundamentals at such low level are related to distributed computing at super high level across computing nodes. When you talk about scalability that a web developer need to accomplish at high level, it somehow tests on how capable this web developer is. If you don't understand such fundamentals, you can't go far.
Why is learning the platform you are working on important ? If you don't, you are a handicapped web developer. As a web developer, one much understand a whole suite of technologies. Today web development has multiple layers of stack to cater to. It's not knowing a couple of server scripts, client scripts and DHTML makes you a web developer.
Such web developer are merely scratching the surface. Today web developers need to understand about multi service integrations, database optimisation, security enforcement, multi language integrations, a couple of middlewares, user interface design and user experience methodologies.
One thing I notice angmoh web developers are they really encompass themselves with a lot of technologies around them. They are not afraid to jump around and go in depth when necessary.
Here this part of the world, you find no lack of developers following strictly to learn on requirements. That's why this part of the world developers are going downhill. I'm in this part of the world, and I feel a pity in the culture we are living in. For whatever reasons we can find, we can blame someone or some others for the predicament we are in and will be in, but that's not solving problem.
We will always hear the "ang mohs" are better until we start stop blaming others for why we are in this state and starting changing from within. We have to start nurturing the culture of greedy for knowledge. Not afraid to venture into unknown grounds. Stop thinking if something is worth learning before you touch it.
How can one knows when a knowledge is applicable before you learn it ? I'm impressed with the kind of foresights we have at times, we can actually make the best assessment in stuffs before the knowledge is acquired. 未卜先知。
Back to the knowledge about OS. Why is it necessary ? It's because a full suite of solution is not just built using one language or one technology. No one says you should only focus on one. A simple solution I built can easily encompass 3 different programming languages.
For a recent subproject I did, I used Java as the base layer for clustering. I use perl for the actualy work done. I use a tool written in python that will be invoke by the perl codes. This subproject is suppose to interact with instagram and twitter. So would you call this a web development and am I a web developer ?
If you can't manoeuvre properly in the platform you are working on, may it be unix or windows, you can forget about getting things done. If I need to manipulate images, I can use imagemagick even without a PHP library for it. If I need to encode video or extract thumbnails from them on the fly, I use ffmpeg. If I need to access the S3, upload a file, I don't need to go through the need of slowly writting the S3 API in PHP, or Java or whatsoever. I use the s3cmd that does it for me immediately with all functionality via command options.
All these are only possible if you know your platform well. Like installation applications, setting up the linux environment, reading logs, creating directories, running services and so forth. PaaS infrastructure will deprive you of such opportunities to learn these and do more than just PaaS.
But all these been said, I have no grudge against IaaS, PaaS or SaaS. They are there for very good reasons and I love them. They make projects more affordable, they make projects development time shorter. But for self development, they make bad candidates. One must be smart to know which things are beneficial to you and which are destructive to you.
AWS is a very interesting cloud platform as oppose to the rest. It encompass all 3 aspect of IaaS, PaaS and SaaS. You can start simple, you can grow very complicated too. That's why among all the different cloud providers, I have bet on AWS to make it big. I classify my skill set as a solution architect and as often work on stuffs that I need control, yet, for some stuffs, since i already have the fundamentals, I decided I can cut cost and effort by using readily available services.
At our level, when we choose services, we need to be mindful of tie down to certain technologies. Some services may not have replacements, but you still need to know what they are and how you can mitigate these business risks. After all AWS is a business too, it can collapse, just that it's very unlikely based on their track records. If they can survive a internet balloon burst, they have what it takes to continue.
So that's all I can offer at this point. My advice is choose wisely, don't be too objective oriented when making decision. Try to look around at what MORE you can achieve.