One well-known problem in the field of ComputerScience
/programming/what-have-you (and alleged to be one of the UnsolvableSoftwareDevelopmentProblems
, though this is ultimately a political
problem) is the set of terms used within the profession. Many terms (like object
) are words borrowed from ordinary English (like it or not, English is the lingua francia
of computer science discourse) and given different meanings in our field. In many cases, these terms arrive via way of other fields of steady (most notably electrical engineering and mathematics), and the definitions used in CS may differ than in these other fields. For example, a set
to a mathematician is an abstraction describing an unordered collection of unique identities; to a computer scientist it can mean that, or an object/module intended to model a mathematical set, etc.
In many cases, practitioners cannot agree on the definition for a term; there are many DefinitionsForOo
which have been proposed, and the debate over which ought to be correct is frequently heated and fractious. (In many cases, moreso than necessary; much of the debate seems to be caused by one particular segment of the OO community seeking to exclude competing technology that they deem inferior). Other disagreements are caused by vendors trying to hawk products and redefining terms to suit their commercial purposes; or just by harmless and unintentional happenstance (authors providing precise definitions which they only intend to apply to their work; with multiple such authors developing multiple such definitions -- which often overlap but are not identical).
In other professions, such as law, accounting, and medicine; a standard set of terminology exists which is generally followed. While conflicts and interpretations do come about, these professions have ways to resolve these conflicts. In all three professions, there are professional societies with legal authority over practitioners which can serve to mediate conflicts -- bar associations, licensing boards, the FinancialAccountingStandardsBoard?
(in the US), etc.
Would such ProfessionalConsensus
be beneficial to us? What if the cost of having it were to replace the relative "anarchy" and freedom from regulation with a professional organization, similar to FASB, whose pronouncements were to have legal weight (and disregarding them would be considered professional malpractice)? And if that were done, how would international disputes get resolved?
Such a thingie was already tried and already failed (or is on life support?). It is called SWBOK (SoftwareEngineeringBodyOfKnowledge). Well, I'd rather not be standardized with UML and CMMi PseudoScience, so I was more than happy when ACM retired its support for the project.
- It should be pointed out the SWBOK (which I've never heard of before, which kinda proves both points) was a voluntary organization, with no power whatsoever. I'm sure that numerous similar societies have been proposed, created, and subsequently ignored by all and sundry. A society with teeth might have different results - though they might not be good. (Many regulatory agencies are well-known for attempting to benefit the large players in the domain being regulated, rather than the profession - or society - at large).
- Note: the IEEE has continued SWEBOK which can be found at http://www.computer.org/portal/web/swebok
- SWEBOK Guide Set - Volunteers are gearing up to refresh the Guide to the Software Engineering Body of Knowledge—SWEBOK—intending to add new knowledge areas (KAs) and to revise others.
- Developed concurrently, the SWEBOK Guide, the Software Engineering 2004 (SE2004) curriculum guide, and the Certified Software Development Professional (CSDP) certification each provided a characterization of the discipline of software engineering. Despite nearly independent development, the three instruments agreed to a remarkable extent. The primary purpose of the current revision of the SWEBOK Guide is to perfect the correspondence between the three items, notably by adding a KA on professional practices—a subject currently covered by the CSDP—and adding “foundation” KAs on related subjects that software engineers learn about during their undergraduate education—subjects currently covered by SE2004.
- To achieve this alignment and to maintain the currency of the SWEBOK Guide, the IEEE Computer Society’s Professional Practices Committee agreed in 2008 to the following changes:
- a new KA on Professional Practice—similar to material currently in the CSDP
- four new education KAs: Engineering Economy Foundations, Computing Foundations, Mathematical Foundations, and Engineering Foundations—similar to material currently in SE2004
- removal of three related disciplines: Computer Science, Mathematics, and Software Ergonomics—obviated by other changes
- added material about Human-Computer Interfaces in the Software Design and Software Testing KA
- removal of the Software Tools section from Software Engineering Tools and Methods, and distributing it to the other KAs
- a renamed Software Engineering Methods KA to focus on methods that affect more than one KA
- redistribution of some other material into different KAs.
The problem is that ProgrammingIsInTheMind
. There are multiple possible definition models for the same thing. One would have to be arbitrarily chosen over the other, which may slant thinking and tick off fans of alternative viewpoints.