4 ms·
That's because Engineering isn't Art. It's not Craftsmanship either. If you're really practicing Engineering, then you're using a lot of math and a lot of well-
by DougWebb 17y ago
That's because Engineering isn't Art. It's not Craftsmanship either. If you're really practicing Engineering, then you're using a lot of math and a lot of well-understood design principles to design whatever it is you're creating before you create it. You're able to prove, based solely on the design, that when you get around to actually building it the thing is going to meet all applicable requirements. The PE signs off on that design as a guarantee that it's going to be good. And /then/ you build it.
Artists and Craftsmen just forge ahead into creating with little more than a general idea of what they're making. The design evolves as they go. Programming is almost always like this, because it's just too damn hard, time-consuming, and expensive to document the design in sufficient detail ahead of time. No requirements documentation is as detailed as the final source code, when it comes to describing precisely how the software must behave.
That, I think, is why software development will always be Art or Craftsmanship rather than a true Engineering discipline. If you're designing a bridge, it's much cheaper and faster to design it on paper than with steel, because paper drawings and specifications are able to capture all of the details that matter. If designing a bridge required specifying the exact position of every iron atom, no one would bother trying to do it on paper first. With software, there is no advantage to doing more than a high level design on paper first because every byte in the source code is significant. You get one wrong, and the software doesn't work. You can't capture that in the design without actually writing the source code, so we skip that level of design. We're craftsmen instead, designing as we go.
- jamesbritt 17y ago"Artists and Craftsmen just forge ahead into creating with little more than a general idea of what they're making. The design evolves as they go." Interesting. Any woodworkers here? I've been under the impression that furniture makers would first work out the design, careful cut the pieces, then assemble them. Likewise, many painters will do several sketches, then carefully build up the final piece when working on canvas. Of course there are artists who make stuff up as they go, but the suggestion that artists and craftsmen do not, as a rule, employ careful planning and detailed steps in the creation of their work is false. There's an art to engineering, and there's engineering in art. "If designing a bridge required specifying the exact position of every iron atom, no one would bother trying to do it on paper first. With software, there is no advantage to doing more than a high level design on paper first because every byte in the source code is significant. You get one wrong, and the software doesn't work. You can't capture that in the design without actually writing the source code, so we skip that level of design." Blueprints :: High-level source code Construction of physical bridge ::Compiler/interpreter Discuss. :)