"MineAssemble is a tiny bootable Minecraft clone written partly in x86 assembly. I made it first and foremost because a university assignment required me to implement a game in assembly for a computer systems course. Because I had never implemented anything more complex than a 'Hello World' bootloader before, I decided I wanted to learn about writing my own kernel code at the same time. Note that the goal of this project was not to write highly efficient hand-optimized assembly code, but rather to have fun and write code that balances readability and speed. This is primarily accomplished by proper commenting and consistent code structuring." Just cool.

"In the SMB space the demand for developers went from minuscule to huge and the costs of development went down. All due to less need in early optimisation."

The demand for IT overall has grown, but the rising tide hasn't been evenly distributed for skillsets. The overall demand curve has skewed significantly away from the "hard cs" skills that used to be absolutely essential for software development.

"And why would you think that these skills are suffering from atrophy? The software development market has expanded and got diluted. I could bet a lot, that the number of people with these skills only increased with time. Not as fast as the total number of developers, but still."

Don't get me wrong, there would be many developers who would be capable of employing such skills, but the need simply isn't there in typical modern jobs. Historically companies that needed features (compression/encryption/image decoding/code optimization/etc) in their software would pay for developers to bring those specific skills in house, even to the extent of paying directly for university costs, which is just about unheard of these days. It isn't that the need for these features has disappeared, it's just that they've been commoditized and are already available in highly efficient libraries that cost far less than inhouse developers, are of better quality, and are available for immediate use.

Today, developers aren't expected to know anything about JPEG compression in order to use them in software. It used to be that every software producing company would use it's own inhouse database engines, today virtually no SMB companies do this anymore. Few companies that want virtualization will hire employees with the skills to implement their own hyper-visors. Most companies need to use cryptography, yet few are hiring developers with skills to build/understand implementations in house any more.

It's generally good that we get to reuse higher quality software without having to rebuild the wheel over and over. But at the same time we have to recognize that demand for these kinds of hard-CS skills have been wayning overall as commoditization has gone up. That's the point I'm trying to get through. It's obviously true that developers are needed to implement these features, which are still very important to business. But unlike the past, SMBs no longer seek to fill that need with inhouse feature implementation specialists. These jobs have been replaced by systems administrators of various kinds and what I'll call "lightweight coders", who are good at putting together existing software components to meet the needs of the business.

Edit: I may be coming off as insulting, which isn't the intention. I myself am a lightweight coder by my own definition at my day jobs. It's not that I'm unskilled or incapable of hard-CS, it's merely that these clients are only interested in filling lightweight coding needs in the first place.

I may be coming off as insulting, which isn't the intention. I myself am a lightweight coder by my own definition at my day jobs. It's not that I'm unskilled or incapable of hard-CS, it's merely that these clients are only interested in filling lightweight coding needs in the first place.

You are aware that computers in business settings are there to optimise and reduce costs. Optimising high cost coders, or any high cost for that matter, is essential to an effective business. In a few years even lightweight coders will be optimised away. It's a new market where software development has moved into. Different market = different skillsets = different goals.

"You are aware that computers in business settings are there to optimise and reduce costs."

I donno if I'd go all-in with that generalization. It depends on the nature of the job, sometimes we are seen as a way to open new opportunities (web devs are often seen in this light), other times we're there to help the business replace other people with computers, etc.

"Optimising high cost coders, or any high cost for that matter, is essential to an effective business. In a few years even lightweight coders will be optimised away. It's a new market where software development has moved into. Different market = different skillsets = different goals."

I know, I've witnessed it personally in my short stint of a career. Dramatic changes of skillsets are needed compared to a decade or two ago. We must change and adopt to stay relevant, but I almost feel resentment over the changes which place me further away from what interested me most about CS in the first place. Oh well, many would say I should be happy to have a job at all.