Beyond writing code.
WHAT PROGRAMMING IS
Writing instructions a computer executes.
WHAT SOFTWARE ENGINEERING IS
Building software that works correctly, can be changed safely, and continues working over years, usually with other people.
WHAT THE DIFFERENCE AMOUNTS TO
Time, and other people.
WHY THOSE TWO
Code written once and discarded needs none of this. Code maintained for years by a changing team needs all of it.
WHAT THE DISCIPLINE COVERS
Understanding what is actually needed Designing a structure that accommodates change Writing code others can read Verifying it works Delivering it reliably Keeping it working Working with other people
WHAT MOST FAILURES ARE NOT
Technical.
WHAT THEY ARE
Building the wrong thing Misunderstanding requirements Communication failures Accumulated decisions nobody can undo
WHAT DISTINGUISHES EXPERIENCED ENGINEERS
Judgement about which problems matter, and restraint about solving those that do not.