|
|
|
|
|
by closeparen
3009 days ago
|
|
From a meta level, engineering is the study of how best to make things. The high cost of construction and the mature state of the relevant physics give civil and structural engineering their highly mathematical, model-driven, upfront-design-heavy form. Software development has different constraints. An edit -> compile -> test cycle is free, but formal verification of code is obscure and unwieldy. Consequently, our best practices are more iterative and empirical than front-loaded and model-driven. But we do have some. (Not denying that software engineering is much less mature than other forms). A team that's doing good high-cohesion low-coupling components, fault tolerant design, unit testing, integration testing, version control, code review, capacity planning, telemetry, staging, canaries, blue/green or incremental rollout, feature flags, etc. is acting in accordance with the body of knowledge called "software engineering" even if they're doing it for a boring CRUD app. Someone with a big pile of spaghetti code on his laptop is probably not doing software engineering, even if he's cracked P=NP. (He might be doing computer science - have you seen how researchers code?) |
|