|
|
|
|
|
by wallflower
5348 days ago
|
|
> I never voluntarily call myself a software engineer I actually had my company change my official job title at one point in my career to "Software Developer". I have an undergraduate degree in engineering (partially because I wanted to rebel against my parent's wishes for me to do CS). Software cannot be engineered like a bridge. Structural engineering is very narrowly scoped. You have a design load, comprised of live loads like wind and moving cars and static loads from the weight of the structure itself. There are entire "cookbooks" of formulas used to compute the theoretical, accepted thickness of the support beams and bolts. There is standardized everything, from the project management terminology to the thread count on the bolts. After graduating, if you gain four years (in some states, less) of practical engineering experience, you can take the Professional Engineer (PE) exam. In some cases, to prove your experience, you need to submit three inches thick of paper calculations you have done while working. The PE exam is rigorous and graded on a curve. But once you pass, you get the pride and responsibility of having a seal that you can use to emboss blueprints. That says you take responsibility for the work. Software development is not engineering, and I have strong philosophical discussions with those programmers who insist on that term. Software development is creative problem solving. You do not have much creativity in structural engineering. |
|
It can be, as in the world of formal proofs and languages like Ada which facilitate them. It just typically isn't, as such formal procedures are far more costly and slower than than just dealing with bugs as they happen. For critical software systems like say avionics where a failure case is extremely costly (in both money and casualties), there do exist certification programs and rigorous methods as you describe for structural engineering.
It could be argued that avionics behaves more as engineering than as programming. Then we have a self-fulfilling definition: if we define fields with rigorous procedures as engineering, and fields without as software development, then of course software development doesn't have formalized methodology.
You're also comparing the largest scope of structural engineering - a massive bridge - with the entire spectrum of software. Engineering does happen on a smaller informalized scale too, like a homeowner building a shed or a Boy Scout troop building a rope obstacle course. That's still engineering, applying skills in carpentry or knot-tying to build something.