Teach Yourself Computer Science
You know, as a former academic, I was reading this list and I <i>immediately</i> knew: This is written by someone in academia (and sure enough, you find out at the bottom it is).<p>I don&#x27;t have a problem with this list per se. For all I know, it may be a good list and the designation of Type 1 and Type 2 engineers may be accurate.<p>But I <i>wish</i> I read a post from a Type 1 engineer in industry that mirrored what academics often write. I hardly find one. Why the disconnect? If the academics are so right, why is it mostly academics who preach this? There are more Type 1 engineers than academics, I&#x27;m sure.<p>Take my story: Was pursuing a PhD in physics&#x2F;engineering and dropped out. Heavy on mathematics. And programming was always a hobby&#x2F;passion. Went into industry in my discipline (not programming). Then decided to change careers into software.<p>Going in, I had the impostor syndrome. I had read quite a bit of CLRS in grad school on my own, but remembered little. So I took a bunch of Coursera courses to review all the basic algorithms, graph theory, etc.<p>My goal was that this was the bare minimum to survive, and I would work for a while and figure out what to focus on next (architecture? networking, OS? databases?).<p>Well, I&#x27;ve been working a bunch of years now, and there is no &quot;next thing&quot;. Even the algorithms courses I took, while a lot of fun and interesting, play little role <i>beyond what most Type 2 engineers will know!</i><p>That&#x27;s just the reality: Most software jobs do not require you to know much beyond the basic data structures (hash, sets, lists, etc) and the complexity of their storage&#x2F;operations. I <i>looked</i> for ways to use all the extra stuff I had learned (in essentially introductory algorithms courses), and did not find opportunities. I&#x27;m facing the inverse problem: Someone who knows some of this (or wants to), and having trouble finding a job where this knowledge actually leads to more robust systems.<p>And it&#x27;s hard to find the jobs where these things matter, and it is <i>rare</i> that they are paid more. Difficulty and complexity does not equate to higher pay. Market rules do. Trust me, I know. I was doing more challenging work before I became a software engineer, but I get paid more now because there were few challenging jobs.<p>I know people say it often, but I&#x27;ll say it too: Communication and negotiation skills are more valuable than the topics on the page. Why spend your nights on diminishing returns when you can get pretty far with just the basics of negotiation? Most engineers are overeducated in terms of what they <i>need</i> to know when it comes to technical skills. But other important skills? We&#x27;re very undereducated. Why work hard to be even more overeducated, while ignoring the deficiencies?