"Software engineering" is the corporate aspect concerned with the "right" way to do stuff, often picking inadequate analogies from physical manufacturing and traditional engineering. It builds the ungainly, monolith dinosaurs and the technical debt. It is OOP, enterprise Java with the abstract factories, MFC, "agile methodologies" and "agentic workflows". It creates the dogma and the ideologies.
"Programming" is the creative tinkering aspect where you start from scratch and approach a problem from a new light. This is how Unix was born. It is the 1000-line program that is composable, fun to read and write and will last a long time.
Your first point is describing "overengineering" which can also be a fatal problem in traditional engineering fields.
It's easy to overengineer in software because the marginal cost of materials and logistics is ~$0. Overshooting by a mile is free. That doesn't discount the value of proper software engineering.
In practice, most software engineering is overengineering. It is adherence to dogma on a wide corporate scale. It leads to an explosion of complexity and bad software. It is the "best practices" that you should agree with, in order to stay employable.
bluetomcat · · focus · HN ↗
"Programming" is the creative tinkering aspect where you start from scratch and approach a problem from a new light. This is how Unix was born. It is the 1000-line program that is composable, fun to read and write and will last a long time.
pphysch · · focus · HN ↗
It's easy to overengineer in software because the marginal cost of materials and logistics is ~$0. Overshooting by a mile is free. That doesn't discount the value of proper software engineering.
bluetomcat · · focus · HN ↗