It's fair to say that the tech industry at the moment is not in a good place. Software engineers tend to be detached, demotivated and unwilling to care much about the work they're doing beyond their paycheck. Code quality is poor on the whole, made worse by the current spate of vibe coding and whatever other febrile ideas come out of Sam Altman's brain. Much of the software that we write is either useless or actively hurts people. And the talented, creative people that we most need in the industry are pushed to the margins of it.
Another excellent piece from Iris Meredith - strongly recommend reading if you want an idea of how to un-fuck software as a field.
I don’t think you’ll be broken by learning Python, but in my opinion to be a good programmer you need to understand at least one layer of abstraction lower than what you’re implementing. So, as an example, once you learn how to code in Python using idk numpy, you absolutely must learn how numpy works under the hood. And that means C, because you cannot escape C.
I teach people Rust and I always say that you kind need to know the nightmare that is C/C++ to be able to fully appreciate what Rust does for you and how it builds a much more sensible programming model on top of the same set of basic concepts we use and have always used to talk to silicone. And then you can write web apps with Rust and never even touch a raw pointer in your life, but it will make you an infinitely better Rust developer if you understand what’s going on below you.
This works surprisingly well across the entire SE stack IMO, e.g. if you’re using React you should be fully aware of the layer below you - raw JS and HTML. If you’re coding in C you should be aware of assembly and memory models. If you’re using SQL to query a database you should be aware of logical plans. If you’re a project manager you should be aware of what software engineering entails and what people in your team actually do day-to-day.
I don’t think you’ll be broken by learning Python, but in my opinion to be a good programmer you need to understand at least one layer of abstraction lower than what you’re implementing. So, as an example, once you learn how to code in Python using idk
numpy
, you absolutely must learn hownumpy
works under the hood. And that means C, because you cannot escape C.I teach people Rust and I always say that you kind need to know the nightmare that is C/C++ to be able to fully appreciate what Rust does for you and how it builds a much more sensible programming model on top of the same set of basic concepts we use and have always used to talk to silicone. And then you can write web apps with Rust and never even touch a raw pointer in your life, but it will make you an infinitely better Rust developer if you understand what’s going on below you.
This works surprisingly well across the entire SE stack IMO, e.g. if you’re using React you should be fully aware of the layer below you - raw JS and HTML. If you’re coding in C you should be aware of assembly and memory models. If you’re using SQL to query a database you should be aware of logical plans. If you’re a project manager you should be aware of what software engineering entails and what people in your team actually do day-to-day.