· 4 min read
Educated to use, not to create
Building my own operating system made me question what my education had prepared me for.
I’ve recently decided to write my own operating system. This is the hardest project I’ve ever attempted, and it has made me question what my education prepared me for.
The first step in the journey of writing an OS is getting the computer to load your code and display some text on the screen. That alone is hard. Before you can make any meaningful progress, you need to understand computer architecture, hardware, compilers, linkers, assembly, memory and all the glue in between the hardware and software layers. Hardware specs and ISA manuals will be part of your day – those docs alone have thousands of pages.
Needless to say, I felt dumb, uneducated and lost most of the time as I was struggling to find my way through my first bootable binary. I didn’t even know where to begin.
At some point, I remembered my time in university and started asking myself why I was struggling so much when I had taken Operating Systems classes along with computer architecture and had studied many programming languages and paradigms.
I wasn’t expecting things to be easy, but during the 4 years I was there, my intuition should have been honed enough for me to at least have a solid foundation from which to start. But in this case, it was as if I was starting from scratch.
I loved university. So what was missing?
I joined the Department of Mathematics and Informatics in February 2017 to study Computer Science. The next 4 years were about learning and building skills for the job market.
I had so much fun. I learned about programming languages, mathematics, logic, databases, computer architecture, distributed systems, data structures and algorithms. I even taught Java to other students for 2 semesters. I discovered my weaknesses and came out better than I entered.
Those were some of the best years of my life without a doubt. I discovered worlds of knowledge and learned to think hard. That’s why feeling this lost bothered me so much.
I didn’t know what an ISA was until 2024, 4 years after completing all my classes. That was the extent of my ignorance. But the more I struggled with my OS, the more I started to see the gap between what I had learned and what I was trying to do.
I was educated to be an advanced user.
Yeah, a user. Not a creator. Not a machine-bending expert. A user.
However good my university program was, it was designed to make me a great user. Someone capable of using programming languages, capable of writing performant database queries. It was not designed to make me a creator of those things.
The economy needs users
That focus makes sense when I look at the work available in our job market. We have zero companies producing CPUs or working on operating systems, compilers or things at lower levels of abstraction.
I work in the field, and even basic websites and CRUD apps are imported. 100% of the hardware we use is imported. Most software used in companies is developed by companies outside the country.
In this reality, what do you need? A creator or a user?
Why would you be taught how to bend bits to your will when you will end up in an office clicking buttons and being a middleman all day? Why understand pipelining, branch prediction, compiler frontends or backends?
When you see things through this lens, it kind of makes sense.
But if our education only prepares us for that reality, how do we ever change it?
I want to command bits
All powerful modern economies were built on a strong engineering pedigree and first principles. This applies to all engineering and science disciplines. We need an education that prepares us to build, too.
At this rate, we are doomed to be consumers forever. We will continue to wait and rely on those who produce to share their excess with us.
That is what makes me mad. I loved my education, but we need more from it than the ability to use what others built.
As for me, I want to be a freaking creator in this game. I want that power at my fingertips. I want to command bits.
Success is never accidental.