The Forum for Discussion about The Third Manifesto and Related Matters

You need to log in to create posts and topics.

Inappropriate responses to points about language design in SQL

Quote from dandl on November 11, 2019, 12:13 am

That so-called analyst got his degree just as much as the dentist did.  I'll try ***not*** to think of that when I'm there.

The analyst presumably didn't have to pass an examination controlled by members of his own profession in order to practice, however, unlike dentist, doctors, lawyers, and actual engineers.  (I never liked being called, or calling anyone, a software engineer.)

Not even someone with a degree in Software Engineering from a reputable university? What would you call them?

With pride, a computer programmer.

Computer programming is a noble craft, having little in common with engineering practices. Even so-titled Software Engineering is more about refining the craft and/or doing it in teams than engineering practice and rigour.

I'm the forum administrator and lead developer of Rel. Email me at dave@armchair.mb.ca with the Subject 'TTM Forum'. Download Rel from https://reldb.org
Quote from Dave Voorhis on November 11, 2019, 7:08 am
Quote from dandl on November 11, 2019, 12:13 am

That so-called analyst got his degree just as much as the dentist did.  I'll try ***not*** to think of that when I'm there.

The analyst presumably didn't have to pass an examination controlled by members of his own profession in order to practice, however, unlike dentist, doctors, lawyers, and actual engineers.  (I never liked being called, or calling anyone, a software engineer.)

Not even someone with a degree in Software Engineering from a reputable university? What would you call them?

With pride, a computer programmer.

Then you're way out of line with accepted usage. A programmer is a coder plus/minus a few related activities; a software engineer applies engineering discipline to the creation of software, of which coding is a part. In my circles a dev is the most skilled artisan of the craft, but will avoid the responsibility that comes with engineering. But you already knew all that, and you know where to find the definitions; this is just trying to start an argument.

Computer programming is a noble craft, having little in common with engineering practices. Even so-titled Software Engineering is more about refining the craft and/or doing it in teams than engineering practice and rigour.

I don't buy 'noble', that means something else entirely, but craft it certainly is. The craftsman pours beautiful concrete or lays gorgeous tiles, but the engineer puts it all together in the form of bridges and buildings that don't fall down. Same for coding.

 

Andl - A New Database Language - andl.org
Quote from dandl on November 11, 2019, 8:14 am
Quote from Dave Voorhis on November 11, 2019, 7:08 am
Quote from dandl on November 11, 2019, 12:13 am

That so-called analyst got his degree just as much as the dentist did.  I'll try ***not*** to think of that when I'm there.

The analyst presumably didn't have to pass an examination controlled by members of his own profession in order to practice, however, unlike dentist, doctors, lawyers, and actual engineers.  (I never liked being called, or calling anyone, a software engineer.)

Not even someone with a degree in Software Engineering from a reputable university? What would you call them?

With pride, a computer programmer.

Then you're way out of line with accepted usage. A programmer is a coder plus/minus a few related activities; a software engineer applies engineering discipline to the creation of software, of which coding is a part. In my circles a dev is the most skilled artisan of the craft, but will avoid the responsibility that comes with engineering. But you already knew all that, and you know where to find the definitions; this is just trying to start an argument.

Computer programming is a noble craft, having little in common with engineering practices. Even so-titled Software Engineering is more about refining the craft and/or doing it in teams than engineering practice and rigour.

I don't buy 'noble', that means something else entirely, but craft it certainly is. The craftsman pours beautiful concrete or lays gorgeous tiles, but the engineer puts it all together in the form of bridges and buildings that don't fall down. Same for coding.

I meant "noble" as in having the finest qualities. Computer programming is a fine craft, requiring unusual expertise and attention to quality to do it properly. I use "noble" to distinguish it from, say, hobby macramé.

I work with certified engineers, have them in the family and in my circle of friends. Despite computing having borrowed terms from engineering -- and your deprecation of its craftsmanship notwithstanding -- what we do could be called software development but there's a growing trend toward using that phrase to include activities that are primarily UX design or systems analysis and that may or may not include computer programming. I had multiple requests last year to help organisations find a mix of computer programmers (sometimes erroneously called software engineers, and sometimes correctly called computer programmers) and software developers. That distinction, as was explicitly emphasised at the time, was intentional.

Computer programming is what we do. We should proclaim it proudly, loudly, and at every opportunity. We should reclaim it from those who use it as a synonym for code monkeycoder and other dismissive deprecations. If and when it acquires the self-reflective scientific rigour and recognised standards and internal (and maybe external) validations needed to be considered an engineering discipline, then we can call it software engineering.

Until then, no. It isn't.

I'm the forum administrator and lead developer of Rel. Email me at dave@armchair.mb.ca with the Subject 'TTM Forum'. Download Rel from https://reldb.org
Quote from dandl on November 11, 2019, 12:13 am

I think that was the intent of PL/I. Didn't quite work out, as I recall.

PL/I got a bad rep, but it is really a strongly statically typed programming language that happens to have a lot of built-in coercions.  So is Algol 68, so is C++, and so is Scala; the latter two let you add your own coercions.  A lot of good work (and shitty work) has been done in all of them.

Not even someone with a degree in Software Engineering from a reputable university? What would you call them?

Whatever they deserve to be called.

(I'm avoiding the words qualified and qualification, because they mean different things in different Englishes.  If someone looks good on paper but may not be actually competent, a North American will say "He's got the diploma/certificate, but is he qualified?" whereas anglophones elsewhere will say "He's qualified, but can he do the work?"  Each of these sounds tautologous to someone who uses the other form.)

And in my personal experience, entry to the profession is governed by the  educational establishment and government regulation, all teachers and public servants.

Lawyers and doctors are taught by other lawyers and doctors.  In his 89 years, my father was only in practice for 18 months; the rest of the time he was either being taught (Thomas A. Cowan, A.B., B.A., M.A., Ph.D., LL.B., S.J.D. — it was the Depression, and schooling was cheap and jobs hard to find) or teaching, mostly law, sometimes philosophy, often both.  After universities wouldn't hire him because he was too old, he went to work for a management consulting company run by some of his students and their students.  But a lawyer?  Oh yes.  He was a lawyer from the middle of his first year in law school until he lost everything to dementia in his last two years.

There are standardized tests now, too.  In my father's day, Harvard Law admitted any male with a high school diploma and a vaccination certificate, and washed out about 1/3 of all students in their first year.  Admission tests came about when the most prestigious law schools decided that was too wasteful.  For that matter, it wasn't so long ago that you could still get a license without a law degree by convincing a judge you knew the law, though few did.  But the content of both admissions and licensing tests are written by lawyers.  In addition, it is well understood that law school teaches you the law: you learn to lawyer in your first job.  Medicine formalizes this as internship/residency, but it's basically an apprentice system in either case.

More fundamentally, a profession (and this very much includes engineering) is a system of people with an autonomous ethical code.  A doctor who kills too many patients, a lawyer caught taking money from both sides (in the 16C such people were called "daffy-down-dillies" or "ambidexters"), or an engineer whose bridge falls down through his negligence isn't just punishable by the public authorities, but by his own people who don't want the profession to come into disrepute.  (The exact contents of the ethical codes vary for both practical and historical reasons.)  Professional licensing is in their hands because they don't want to be associated with incompetent or unethical colleagues and take measures to keep them out.  (There's also an element of monopoly and regulatory capture in this, to be sure; but that isn't the only reason, as it is for food truck licenses, a subject currently being much discussed in New York.)  Falsifying X-rays of welds to show a bad weld as good to save time and money isn't just sharp practice: it's evil, and one of the most important lessons a testing engineer learns is how to detect this and what to do about it, including mandatory whistleblowing.

When computer programmers have that, they may consider calling themselves engineers with some legitimacy.

 

As usual, Dave said what I wanted to, but more briefly and with more grace.  I'd also add that if "the engineer puts it all together in the form of bridges and buildings that don't fall down", then we certainly do not qualify as such, because not only do our bridges creak and crack and fall down all the time, we or our employers make sure we are explicitly not liable to anyone when they do.  We are still servants: professionals serve their employers as well as their profession and the public, but they are not servants.

Gerald Weinberg put it even more snappily:  "If builders built buildings the way programmers write programs, then the first woodpecker that came along would destroy civilization."

 

Quote from Dave Voorhis on November 11, 2019, 9:09 am

I meant "noble" as in having the finest qualities. Computer programming is a fine craft, requiring unusual expertise and attention to quality to do it properly. I use "noble" to distinguish it from, say, hobby macramé.

Check your dictionary. Programming is a fine craft, but neither associated with nobility, nor being directly associated with any high moral principles, nor being practised by moral people. Some of the finest programming is done in pursuit of evil purposes.

I work with certified engineers, have them in the family and in my circle of friends. Despite computing having borrowed terms from engineering -- and your deprecation of its craftsmanship notwithstanding -- what we do could be called software development but there's a growing trend toward using that phrase to include activities that are primarily UX design or systems analysis and that may or may not include computer programming. I had multiple requests last year to help organisations find a mix of computer programmers (sometimes erroneously called software engineers, and sometimes correctly called computer programmers) and software developers. That distinction, as was explicitly emphasised at the time, was intentional.

I'm happy to accept developer as a broader term, encompassing both coding and a range of other skills. No argument there.

Computer programming is what we do. We should proclaim it proudly, loudly, and at every opportunity. We should reclaim it from those who use it as a synonym for code monkeycoder and other dismissive deprecations. If and when it acquires the self-reflective scientific rigour and recognised standards and internal (and maybe external) validations needed to be considered an engineering discipline, then we can call it software engineering.

Programming is not software engineering. Your paper tiger, not mine.

 

Andl - A New Database Language - andl.org
Quote from johnwcowan on November 11, 2019, 3:17 pm

As usual, Dave said what I wanted to, but more briefly and with more grace.  I'd also add that if "the engineer puts it all together in the form of bridges and buildings that don't fall down", then we certainly do not qualify as such, because not only do our bridges creak and crack and fall down all the time, we or our employers make sure we are explicitly not liable to anyone when they do.  We are still servants: professionals serve their employers as well as their profession and the public, but they are not servants.

I'm not sure what point you're trying to make, I'm only sure you're not addressing mine. I can't tell whether you're talking about the engineers who build bridges or the ones who build software. Over the past 50 years or so, two of the bridges built here in Melbourne did indeed fall down, one of them with major loss of life, but I don't recall anyone using that as an argument for demoting the engineers to some lower form of life, such as 'steel monkey' or 'concrete jockey'.

Gerald Weinberg put it even more snappily:  "If builders built buildings the way programmers write programs, then the first woodpecker that came along would destroy civilization."

 

He probably never said it, but if he did it was in around 1971, it was said for dramatic effect with no concern for accuracy, and he said it about programmers, not software engineers.

Andl - A New Database Language - andl.org
Quote from dandl on November 11, 2019, 10:39 pm
Quote from Dave Voorhis on November 11, 2019, 9:09 am

I meant "noble" as in having the finest qualities. Computer programming is a fine craft, requiring unusual expertise and attention to quality to do it properly. I use "noble" to distinguish it from, say, hobby macramé.

Check your dictionary. Programming is a fine craft, but neither associated with nobility, nor being directly associated with any high moral principles, nor being practised by moral people. Some of the finest programming is done in pursuit of evil purposes.

I mean lofty as opposed to base -- akin to the use of "noble" in "noble gasses", etc. -- and code is amoral. Its application may be evil, but it is not. Code as a tool for evil no more makes code evil than a knife used to murder makes metal evil.

I work with certified engineers, have them in the family and in my circle of friends. Despite computing having borrowed terms from engineering -- and your deprecation of its craftsmanship notwithstanding -- what we do could be called software development but there's a growing trend toward using that phrase to include activities that are primarily UX design or systems analysis and that may or may not include computer programming. I had multiple requests last year to help organisations find a mix of computer programmers (sometimes erroneously called software engineers, and sometimes correctly called computer programmers) and software developers. That distinction, as was explicitly emphasised at the time, was intentional.

I'm happy to accept developer as a broader term, encompassing both coding and a range of other skills. No argument there.

Computer programming is what we do. We should proclaim it proudly, loudly, and at every opportunity. We should reclaim it from those who use it as a synonym for code monkeycoder and other dismissive deprecations. If and when it acquires the self-reflective scientific rigour and recognised standards and internal (and maybe external) validations needed to be considered an engineering discipline, then we can call it software engineering.

Programming is not software engineering. Your paper tiger, not mine.

Programming encompasses what we call software engineering, because what we call software engineering isn't engineering, it's just various ways of getting working code into computers. Getting working code into computers is computer programming.

Again, when programmers collectively accept rigorous ethical responsibility and professional standards, then it will deserve to be called software engineering. The few wispy efforts made by the BCS, ACM, etc. barely count.

I'm the forum administrator and lead developer of Rel. Email me at dave@armchair.mb.ca with the Subject 'TTM Forum'. Download Rel from https://reldb.org
Quote from johnwcowan on November 11, 2019, 3:10 pm

And in my personal experience, entry to the profession is governed by the  educational establishment and government regulation, all teachers and public servants.

Lawyers and doctors are taught by other lawyers and doctors.  In his 89 years, my father was only in practice for 18 months; the rest of the time he was either being taught (Thomas A. Cowan, A.B., B.A., M.A., Ph.D., LL.B., S.J.D. — it was the Depression, and schooling was cheap and jobs hard to find) or teaching, mostly law, sometimes philosophy, often both.  After universities wouldn't hire him because he was too old, he went to work for a management consulting company run by some of his students and their students.  But a lawyer?  Oh yes.  He was a lawyer from the middle of his first year in law school until he lost everything to dementia in his last two years.

There are standardized tests now, too.  In my father's day, Harvard Law admitted any male with a high school diploma and a vaccination certificate, and washed out about 1/3 of all students in their first year.  Admission tests came about when the most prestigious law schools decided that was too wasteful.  For that matter, it wasn't so long ago that you could still get a license without a law degree by convincing a judge you knew the law, though few did.  But the content of both admissions and licensing tests are written by lawyers.  In addition, it is well understood that law school teaches you the law: you learn to lawyer in your first job.  Medicine formalizes this as internship/residency, but it's basically an apprentice system in either case.

I have no idea how this is relevant. Ignored.

More fundamentally, a profession (and this very much includes engineering) is a system of people with an autonomous ethical code.

A doctor who kills too many patients, a lawyer caught taking money from both sides (in the 16C such people were called "daffy-down-dillies" or "ambidexters"), or an engineer whose bridge falls down through his negligence isn't just punishable by the public authorities, but by his own people who don't want the profession to come into disrepute.  (The exact contents of the ethical codes vary for both practical and historical reasons.)  Professional licensing is in their hands because they don't want to be associated with incompetent or unethical colleagues and take measures to keep them out.  (There's also an element of monopoly and regulatory capture in this, to be sure; but that isn't the only reason, as it is for food truck licenses, a subject currently being much discussed in New York.)  Falsifying X-rays of welds to show a bad weld as good to save time and money isn't just sharp practice: it's evil, and one of the most important lessons a testing engineer learns is how to detect this and what to do about it, including mandatory whistleblowing.

No, I'm not chasing that rabbit. I try not to have these arguments descend into a battle of definitions, but at least the dictionary/Wikipedia provides a source of reasonable authority about what words mean and how they are used.

  • Engineering: the branch of science and technology concerned with the design, building, and use of engines, machines, and structures.
  • Engineer: One who is trained or professionally engaged in a branch of engineering.
  • Engineer: professionals who invent, design, analyze, build, and test machines, systems, structures and materials to fulfill objectives and requirements while considering the limitations imposed by practicality, regulation, safety, and cost.
  • Software engineering: the systematic application of engineering approaches to the development of software.
  • Profession: a paid occupation, especially one that involves prolonged training and a formal qualification.

So are these agreed, or do you want the words to mean something different?

When computer programmers have that, they may consider calling themselves engineers with some legitimacy.

Then you miss the mark totally. Programmers are not software engineers, and most never will be. See definitions above.

Andl - A New Database Language - andl.org
Quote from dandl on November 11, 2019, 11:10 pm
Quote from johnwcowan on November 11, 2019, 3:10 pm

And in my personal experience, entry to the profession is governed by the  educational establishment and government regulation, all teachers and public servants.

Lawyers and doctors are taught by other lawyers and doctors.  In his 89 years, my father was only in practice for 18 months; the rest of the time he was either being taught (Thomas A. Cowan, A.B., B.A., M.A., Ph.D., LL.B., S.J.D. — it was the Depression, and schooling was cheap and jobs hard to find) or teaching, mostly law, sometimes philosophy, often both.  After universities wouldn't hire him because he was too old, he went to work for a management consulting company run by some of his students and their students.  But a lawyer?  Oh yes.  He was a lawyer from the middle of his first year in law school until he lost everything to dementia in his last two years.

There are standardized tests now, too.  In my father's day, Harvard Law admitted any male with a high school diploma and a vaccination certificate, and washed out about 1/3 of all students in their first year.  Admission tests came about when the most prestigious law schools decided that was too wasteful.  For that matter, it wasn't so long ago that you could still get a license without a law degree by convincing a judge you knew the law, though few did.  But the content of both admissions and licensing tests are written by lawyers.  In addition, it is well understood that law school teaches you the law: you learn to lawyer in your first job.  Medicine formalizes this as internship/residency, but it's basically an apprentice system in either case.

I have no idea how this is relevant. Ignored.

More fundamentally, a profession (and this very much includes engineering) is a system of people with an autonomous ethical code.

A doctor who kills too many patients, a lawyer caught taking money from both sides (in the 16C such people were called "daffy-down-dillies" or "ambidexters"), or an engineer whose bridge falls down through his negligence isn't just punishable by the public authorities, but by his own people who don't want the profession to come into disrepute.  (The exact contents of the ethical codes vary for both practical and historical reasons.)  Professional licensing is in their hands because they don't want to be associated with incompetent or unethical colleagues and take measures to keep them out.  (There's also an element of monopoly and regulatory capture in this, to be sure; but that isn't the only reason, as it is for food truck licenses, a subject currently being much discussed in New York.)  Falsifying X-rays of welds to show a bad weld as good to save time and money isn't just sharp practice: it's evil, and one of the most important lessons a testing engineer learns is how to detect this and what to do about it, including mandatory whistleblowing.

No, I'm not chasing that rabbit. I try not to have these arguments descend into a battle of definitions, but at least the dictionary/Wikipedia provides a source of reasonable authority about what words mean and how they are used.

  • Engineering: the branch of science and technology concerned with the design, building, and use of engines, machines, and structures.
  • Engineer: One who is trained or professionally engaged in a branch of engineering.
  • Engineer: professionals who invent, design, analyze, build, and test machines, systems, structures and materials to fulfill objectives and requirements while considering the limitations imposed by practicality, regulation, safety, and cost.
  • Software engineering: the systematic application of engineering approaches to the development of software.
  • Profession: a paid occupation, especially one that involves prolonged training and a formal qualification.

So are these agreed, or do you want the words to mean something different?

When computer programmers have that, they may consider calling themselves engineers with some legitimacy.

Then you miss the mark totally. Programmers are not software engineers, and most never will be. See definitions above.

I don't disagree with how the words are used; that should be clear from the other posts in this thread. I disagree with whether or not they're used correctly, and I argue that as software professionals who should be concerned about the standards of our profession, we should be pushing for:

  • Professional standards and science-based reflective processes in everything we do, along with taking responsibility for what we do including self-regulation, i.e., the same as for electrical engineering, mechanical engineering, aeronautical engineering, building engineering, etc; and
  • Appropriate, responsible, and respectable use of terms like engineering in the context of our profession.

What we currently have is a situation akin to an imaginary (and hopefully ridiculous) one: Imagine carpenters and construction workers were called building engineers (per the UK definition, see https://en.wikipedia.org/wiki/Building_engineer#United_Kingdom_and_Ireland) and building engineers didn't exist. That's exactly what we've got in the software industry, only replace "carpenters and construction workers" with "software engineers" -- when the equivalent to "carpenters and construction workers" should be called "computer programmers", and their application of genuine engineering principles should be inherent in the craft -- and there is no equivalent to a "building engineer."

I'm the forum administrator and lead developer of Rel. Email me at dave@armchair.mb.ca with the Subject 'TTM Forum'. Download Rel from https://reldb.org