4 ms·
When I first started university I had already been tinkering with computers and programming for about 10 years. I started in Computer Science, where I took a Ja
by steelframe 3y ago
When I first started university I had already been tinkering with computers and programming for about 10 years. I started in Computer Science, where I took a Java class from Urs Hölzle, who later went on to be Google's first VP of engineering. It was an amazing class, and I almost scored a 100% on every test, except for the one where I accidentally wrote "<=" as a less-than sign with a line under it and got dinged a point. However at the end of my first year I felt profoundly unsatisfied, like I was just learning superficial tricks to get computers to do what you wanted, but I didn't feel like I really understood what was actually happening.
I switched schools and majors to a Computer Engineering course taught primarily by EE professors, hoping to learn about the lower-level stuff so I didn't feel so ignorant. I learned about logic gates, K-maps, BJT transistor characteristics, N/P-well doping, VLSI, and so forth. All was going swimmingly for me until it came time to take a physics course on crystal structures. At that point I realized that the rabbit hole goes very, very deep -- much deeper than I could ever hope to really fully "understand" from the quantum level all the way up to Java code.
Recognizing that I only had so much time and mental capacity to learn about the whole system, I had to come to peace with knowing that I would have to choose a layer in which to increase my expertise and then largely stick to that. For me that started out being architecture-level operating system coding in C and some assembly, but I popped up the stack a smidge to then get to C and applied cryptography.
I'm now one of the few people at my company that (IMO) understands operating systems at all. The organization is deathly afraid to do anything with the kernel that's being deployed in their Cloud instances, and most view it as some mystical "black magic" that just works if you don't touch it. Hardly anybody fully understands what a so-called "container" actually is, but they sure know all the API calls to "make the container work" and push container images around repositories. They're often surprised when things that I know will be issues with their containers ahead of time happen to them. Whenever they run into problems, they'll often open two dozen Stack Overflow tabs and try copying and pasting stuff until something seems to work. People approach me as some sort of mystical oracle who can bestow arcane knowledge of syscalls and what not when their Stack Overflow searches turn up dry.
I feel like the pendulum perhaps has swung too far into the layers of abstraction in our universities, but I'm not sure what to do about that. I wonder what will happen as people like me ride off into the sunset.
- rochak 3y agoYour self reflection to go deeper and then resurface to the level you are comfortable expanding your expertise in parallels some of mine. Hailing from a university in my country which didn’t go deep enough in any of the subjects, I was left with this insatiable desire to do something about it. It led me to my Master’s in US where I got (or at least I thought I did) once in a lifetime opportunity to take one of the hardest and most fulfilling classes: Operating Systems. It opened my eyes to the magic I couldn’t understand and gave me the confidence of “I can do anything if I put my mind to it” by building a kernel. I learned enough to realise that it is not something I can do as a day job but still venture into should I need to while working on something. To this day, I thank my past self for making this decision of taking on a task that I felt so insurmountable. Whenever I come across a hard problem now which seems insurmountable, the confidence from that experience is what keeps me going.