People of ACM – Russ Cox
acm.org
acm.org
> Ousterhout introduces the term “tactical tornado” for a programmer who churns out tons of working but overly complex code that doesn’t fit well into the existing system. Worse, a bad manager often sees a tactical tornado as the most productive programmer on a team, failing to recognize the complexity and code debt left behind for the rest of the team to clean up. If we aren’t careful managers, AI agents can easily become the ultimate tactical tornadoes.
And, yep, it's worth a read.
"It used to be that if you could get a basic operating system coded and running, that was an indirect proof that you understood the basics of how operating systems worked."
How many -- and we are even supposedly talking about students -- have coded an operating system and got it running?
I think many good computer science programs offer a similar course where students make modifications to an open source Unix-like OS like Xv6, Minix, Linux, or one of the BSDs. I took such a course at Cal Poly San Luis Obispo in 2008.
However, I don’t know of any undergraduate programs where students are required to code an entire OS from the boot loader all the way up to basic drivers. Building an OS is part of the final chapter of From NAND to Tetris, so perhaps there might be some universities out there that do require their students to write an OS from scratch as part of the larger curriculum.
In the 70s and 80s and 90s so many operating systems from lisp machines to ITS to the bsds... People used to write an OS like people write frontend frameworks now.
Well, maybe in the old days, when computers were simple (and even then, it would've been a very tough take in a curriculum).
On my degree, we had to implement compilers, db system with B-Tree indexes mapping into i-nodes, extend an existing toy OS with cooperative multi-threadeding, and device drivers for PC floppies.
In digital circuits design, we got to create our own tiny CPU, and besides the digital design, some folks did the optional part of actually implementing it on a breadboard.
Among several other projects.
When a Software Engineering degree is 5 years, there is plenty of time for such stuff.