I feel as if there is a giant contradiction happening in software right now.
On one side, everyone is screaming that developers need to become experts in abstraction: create swarms of agents, automate the coding process, and stop writing everything manually.
At the same time, everyone says deep technical understanding is more important than ever.
I am not convinced you can fully embrace both without being extremely intentional. How can you become an expert while no longer caring about the details underneath the abstractions you use?
AI can help someone generate ten times more code, but if they cannot reason about the system’s state, data flow, performance, security, or failure cases, they have not necessarily become ten times more capable. They may have simply gained the ability to create errors ten times faster.
There may also be a cognitive cost to constantly outsourcing the work. In a preliminary 2025 MIT Media Lab study, participants wrote essays using ChatGPT, search engines, or no tools. The ChatGPT group showed the lowest neural connectivity and had more difficulty recalling and quoting what they had written. The study is small and not the final word, but it raises an important question: what happens to our understanding when we repeatedly skip the process that creates it?
I am not against AI or abstraction. Abstraction is one of the foundations of engineering. But abstraction should compress understanding, not replace it.
The best engineers will use AI to move faster without surrendering their ability to think. They will operate at the highest level when possible, while still being capable of dropping into the details when an abstraction leaks, an agent fails, or a generated system produces convincing garbage.
Otherwise, we are not creating a generation of abstraction experts.
We are creating a generation of people who are dependent on abstractions
they cannot explain, verify, or repair.
AI agents are great for helping you learn specific topics, but let’s stop pretending it’s enhancing your understanding.
I have worked with many people recently who are “surface level experts”, because of AI. You ask them questions they break down. It creates a false understanding.
@MarcJSchmidt This is a black pill take, this is what they want you to think.
The doomer mindset is being pushed on everybody, and you are falling victim.
Craftsmanship is still alive, and open source is proof.
Lots of people still love tech.
X is giving you a biased narrative.
@MarcJSchmidt This is a black pill take, this is what they want you to think.
The doomer mindset is being pushed on everybody, and you are falling victim.
Craftsmanship is still alive, and open source is proof.
Lots of people still love tech.
X is giving you a biased narrative.
I feel as if there is a giant contradiction happening in software right now.
On one side, everyone is screaming that developers need to become experts in abstraction: create swarms of agents, automate the coding process, and stop writing everything manually.
At the same time, everyone says deep technical understanding is more important than ever.
I am not convinced you can fully embrace both without being extremely intentional. How can you become an expert while no longer caring about the details underneath the abstractions you use?
AI can help someone generate ten times more code, but if they cannot reason about the system’s state, data flow, performance, security, or failure cases, they have not necessarily become ten times more capable. They may have simply gained the ability to create errors ten times faster.
There may also be a cognitive cost to constantly outsourcing the work. In a preliminary 2025 MIT Media Lab study, participants wrote essays using ChatGPT, search engines, or no tools. The ChatGPT group showed the lowest neural connectivity and had more difficulty recalling and quoting what they had written. The study is small and not the final word, but it raises an important question: what happens to our understanding when we repeatedly skip the process that creates it?
I am not against AI or abstraction. Abstraction is one of the foundations of engineering. But abstraction should compress understanding, not replace it.
The best engineers will use AI to move faster without surrendering their ability to think. They will operate at the highest level when possible, while still being capable of dropping into the details when an abstraction leaks, an agent fails, or a generated system produces convincing garbage.
Otherwise, we are not creating a generation of abstraction experts.
We are creating a generation of people who are dependent on abstractions
they cannot explain, verify, or repair.
I do have to disagree, For the average person it adds abstraction for them.
They will not have to understand everything they generate, they use English to vibe code. Which is an abstraction over manually writing and understanding the code IMO.
I don’t think you can become good at both at the same time, unless you were an expert previously.
Even then you are constantly getting worse the less you practice.
I feel as if there is a giant contradiction happening in software right now.
On one side, everyone is screaming that developers need to become experts in abstraction: create swarms of agents, automate the coding process, and stop writing everything manually.
At the same time, everyone says deep technical understanding is more important than ever.
I am not convinced you can fully embrace both without being extremely intentional. How can you become an expert while no longer caring about the details underneath the abstractions you use?
AI can help someone generate ten times more code, but if they cannot reason about the system’s state, data flow, performance, security, or failure cases, they have not necessarily become ten times more capable. They may have simply gained the ability to create errors ten times faster.
There may also be a cognitive cost to constantly outsourcing the work. In a preliminary 2025 MIT Media Lab study, participants wrote essays using ChatGPT, search engines, or no tools. The ChatGPT group showed the lowest neural connectivity and had more difficulty recalling and quoting what they had written. The study is small and not the final word, but it raises an important question: what happens to our understanding when we repeatedly skip the process that creates it?
I am not against AI or abstraction. Abstraction is one of the foundations of engineering. But abstraction should compress understanding, not replace it.
The best engineers will use AI to move faster without surrendering their ability to think. They will operate at the highest level when possible, while still being capable of dropping into the details when an abstraction leaks, an agent fails, or a generated system produces convincing garbage.
Otherwise, we are not creating a generation of abstraction experts.
We are creating a generation of people who are dependent on abstractions
they cannot explain, verify, or repair.
I feel as if there is a giant contradiction happening in software right now.
On one side, everyone is screaming that developers need to become experts in abstraction: create swarms of agents, automate the coding process, and stop writing everything manually.
At the same time, everyone says deep technical understanding is more important than ever.
I am not convinced you can fully embrace both without being extremely intentional. How can you become an expert while no longer caring about the details underneath the abstractions you use?
AI can help someone generate ten times more code, but if they cannot reason about the system’s state, data flow, performance, security, or failure cases, they have not necessarily become ten times more capable. They may have simply gained the ability to create errors ten times faster.
There may also be a cognitive cost to constantly outsourcing the work. In a preliminary 2025 MIT Media Lab study, participants wrote essays using ChatGPT, search engines, or no tools. The ChatGPT group showed the lowest neural connectivity and had more difficulty recalling and quoting what they had written. The study is small and not the final word, but it raises an important question: what happens to our understanding when we repeatedly skip the process that creates it?
I am not against AI or abstraction. Abstraction is one of the foundations of engineering. But abstraction should compress understanding, not replace it.
The best engineers will use AI to move faster without surrendering their ability to think. They will operate at the highest level when possible, while still being capable of dropping into the details when an abstraction leaks, an agent fails, or a generated system produces convincing garbage.
Otherwise, we are not creating a generation of abstraction experts.
We are creating a generation of people who are dependent on abstractions
they cannot explain, verify, or repair.