http://www.perlmonks.org?node_id=710310


in reply to Re^4: Programming is more like:
in thread Programming is more like:

We'll have to discuss what 'engineering' means over a pint of beer sometime

I'll offer the following distinction between Engineering and Art&Craft.

If you can draft a design specification for a product and then send that to companies in (say) the US, Germany, South Africa, India, China & Japan, and receive back 6 functionally identical and interchangable parts, then yours is an engineering discipline. Otherwise, it is at best an art or craft.

Whether it is a car part, or a bridge stay, an MP3 player, a spectacle lens, a prescription medicine, a food additive, a size 9 slipper, or a reel of 3-core, 5 Amp electrical cable. All these can be manufactured to and tested against a specification alone. These engineering disciplines have the nomenclature and standards to allow this.

There is not (yet) an equivalent for software.

Musicians have a pretty well honed and universal nomeclature, but send a piece of sheet music to 10 different musicians and you'll get 10 different interpretations of it back. Even the same musician will play it differently, on two different occasions, and neither need be 'incorrect'.

Even a simply specified software component like a sort, has a million variations. Even if you specify a quicksort, should it be in-place or copying? How should it handle nearly sorted input? What if the dataset is larger than memory?

Look at the back of your user manual for your TV, fridge or mp3 player and it probably carries a specification of max and min working temperatures; max & min input voltages; EM radiation limits; and dog knows what else.

What "spec and guarentees" does software carry?

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

In other words: "It don't matter whether you paid good money for this or not, it may not work at all, or it may fail, with possibly fatal consequences, at any time, and we deny any and all responsibility or liability."

Which in turn, is tantamount to saying: We don't give a flying F whether you paid us money or not, we don't give a flying F whether this works right, or kills people.

You wanna talk about "professional"?

<side track> Until programmers, individually and collectively, are prepared to warrenty, and take liability. for their code, the terms "professional" and "engineering" should not be associated with "software".

I almost added, "copyright" in there, but you are not allowed to copy even bad books and music, so that doesn't fly.</end aside>

Finally, developing a web site is rarely a cookie cutter operation -- just try and develop web sites for a living. It's brutal -- no two are alike: a template will only take you part way.

Please excuse my use of the idiom, but I was so not describing a "use a template" process. If you followed (and read:), the link to 'The last One' I posted earlier in this thread (there is a lighter description here), then you'll get some idea of the kind of thing I am envisaging.

RubyOnRails has shown that many web apps can be created by mix'n'matching a few well designed and written library routines. Imagine a fairly sophisticated Q&A-style, interactive front end that generated the RoR code. It generates the CGis, the schema, the queries, and some barebones html&javascript to get you up and running. All the business logic is generated according to the answers supplied. You then skin the generated html to provide branding and specials.

Now imagine the GWT underlying the GWebDesigner(TradeMark Pending :).

It doesn't exist yet, but I predict it will before decades end. And within 5 years there will be a GWebDesigner Certification Programme and the vast majority of web apps will be built that way. And will run in the GCloud(TMP).

Sure, the banks and major retailers will hold out, writing their own, usually awful web apps. And the premium brands, like Ferrari and Gucci et al. will continue to pay through the nose to have 'view only', functionally useless websites designed by 'art house' programmers. But those who want functional, usable, scalable, affordable web applications will employ a certified GWeb programmer to develop them.

There will still be the place for the Master Programmers. You know, those guys that we all admire and aspire to become. The ones that seem to put together 10 lines of code in half the time, that does twice as much in half the time. And they'll be the ones writing the programs that generate the tools that the rest of us will use to design and generate applications.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.