5 ms·
Moreover, there seems to be a contradiction there: they are saying engineering is not inherently domain-specific, but to seek out domain experts when the need a
by jallmann 11y ago
Moreover, there seems to be a contradiction there: they are saying engineering is not inherently domain-specific, but to seek out domain experts when the need arises. Okay? That network engineer isn't REALLY an engineer until he wants to learn about databases? Would a "network engineer" be a non-sequitur in itself?
"Software engineering," as the term is usually used, is really a joke.
In my mind, engineering is about rigor: process, measurability and discipline. The hallmark of a well-engineered system, in my opinion, is reliability. Software is anything but reliable.
Too much of software development is throwing things at the wall and hoping that sticks, because there is not a good understanding (or willful neglect) of how the different parts of the stack may adversely affect your application. Add that to ever-expanding requirements scope, poorly designed/maintained/understood code artifacts, and developer churn, and the typical software project is rather frail.
There are considerations you can make for more reliable software: a testing regimen and release planning, conservative resource estimates and knowing your bottlenecks, strategies for degraded operating conditions, fallback and error mitigation, scaling, consistent documentation, and basically knowing the seams of your software, where things might break, under what conditions, and what corrective action could be done.
Most software projects either move too quickly or are simply not important enough to hit these points. There are exceptions, of course (most well-known software we use would qualify), but those are not the rule: most YC companies certainly would not qualify as doing "software engineering." In fact, that almost seems to be the antithesis of a fast-moving startup.
Imagine your civil engineer did not take shear, vibration, bedrock, joint and material strength, etc into account when designing a structure, or allowed a good design to be constructed with shoddy labor, duct-taped together. That is exactly what we see from most software "engineering" today. Move fast and break things, indeed.
- chrisan 11y agoI think this basically boils down to "are lives at risk?" As you hint at, most companies likely don't have the rigors of an "actual" engineer. But places like NASA or a medical company where lives are at stake would likely have the same rigors and reliability of a civil engineer and their bridge. I think it is unfair to compare software _____s to civil engineers. We just don't have anywhere near the level of laws and regulations on most of our projects as someone who is building things that lives depend on being reliable. And even then, bridges can and do fail. If a civil engineer were building bridges for his kid's matchbox cars I bet they do not put in the same level of reliability as a bridge where human lives must cross it daily for many years. Since no lives are at stake for most software in the world, the guys up top will opt for the cheaper route over the route that involves a high level of process, measurability, and discipline. Once they start losing sales/customers due to bugs they may change their tune of course :)