Saturday, January 17, 2009

Why society needs a software engineering professional body.

Definition of a Profession:
A profession is a vocation founded upon specialised educational training, the purpose of which is to supply disinterested counsel and service to others, for a direct and definite compensation, wholly apart from expectation of other business gain"[1]. According to the Oxford English Dictionary, professions involve the application of specialised knowledge of a subject, field, or science to fee-paying clientele.[2] It is axiomatic that "professional activity involves systematic knowledge and proficiency."[3] Professions are distinguished from other occupations represented by trade groups due to their level of legal recognition.

Software Development:
Software are applications that run on computer processors that enable the hardware to perform functions. Software development includes all the activities involved in creating software products or systems. These activities may include requirements gathering, design and architecture, actual development, quality assurance and release cycles. I emphasize may as there are IT departments that do things in a very ad-hoc way; I see this a lot in small companies. Although it provides their customers quick turnaround, there are almost always quality issues associated with such ad-hoc releases, and the knowledge is almost always held in one resource, which is not good for the company as a whole.

Software Engineering:
In one sentence, it is the application of engineering principles to software projects. More specifically, it means using a systematic, disciplined and quantifiable approach to managing and executing software projects. This is more normally seen in large corporations, where cross functional teams exist to properly gather requirements and do the technical analyses to provide an estimated delivery date.

Why should software engineering behave as a profession?
The same reason physicians and accountants behave as professionals; their work is not easily understood so ethics and honesty are essential. Unless you study computer science and software development in a distinguished post-secondary institution, it is highly unlikely you will understand the concepts and problems faced by software engineers as they try to build, maintain and deploy complex software systems. Software systems are black boxes to the general masses, and are employed in a variety of critical systems, from life saving medical systems to critical military defense systems. The people who work on these systems must be accountable and honest, else costs could spiral out of control or a life threatening function could be widely released to the general public. Therefore the public is forced to rely on the word of the software engineer as to whether the system was properly tested or not, as they have no way of verifying themselves without using it. If someone’s word must be relied upon, they must uphold themselves to a higher standard and speak nothing but the truth.

Therefore, the only way to encourage (and hopefully guarantee) complete honesty from the software engineer is to treat the role as a profession, with qualifying examinations and a professional body to oversee it. The professional body would manage the qualifying examinations, which would include content to verify the technical concepts a software engineer must possess, as well as the ethics and morals someone in the software field should adhere to. If there was ever a question as to a software engineer’s qualifications or ethics, an organization could file a complaint with the professional body for investigation. If the professional body verified the plaintiff’s accusations, then it could bar the individual from practicing software engineering.

Which software engineering roles should be taken from members of a professional software engineering society?
The software developer, quality assurance and leadership (management) roles should all be members of a professional software engineering society. Accountability is required from these 3 roles to ensure the highest quality software is released, and that honest reporting is delivered to senior management. As I mentioned earlier, in a publishing company in which I was formerly employed, the web solutions manager fabricated his status reports to the executive and provided no transparency to his organization, which resulted in wasteful expenditures and the eventual collapse of the systems he was responsible for in production. If he was a professional, he would at least have the extra fear on his back, though realistically it would still be no guarantee as to whether he would attempt the same deception or not.

What are the drawbacks of a software engineering professional body?
First of all, just because they have a code of ethics does not guarantee all members will follow them. There are many physicians who have violated the Hippocratic oath; however, those that have been caught have been barred from practicing medicine ever again. Therefore, not all the culprits will be caught, but at least several will be rooted out and prevented from causing further damage.

Secondly, a professional body tends to act as a labour union also, so the costs of employing software engineers will go up. This is not a good thing when competing against the cheap information technology labour in India and China. However, given all the product quality concerns recently with imports from China, I think this is a small price to pay. In the long run, with more discipline applied to the software development process, quality will go up and costs will go down. Look at how cheap it is today to purchase a PC which is probably a hundred times more powerful then the 486, which was over $2000 CDN when it first came out in 1990’s. Note that computer hardware architecture and design is done by computer engineers, not computer hardware developers.

Conclusion
With a software engineering professional body there will be oversight on software engineers to reduce dishonest reporting and make the software development lifecycle more transparent, predictable and manageable. These benefits alone make it worthwhile for public corporations to support and sponsor the development of a software engineering professional society. With more manageable software projects, quality will improve and costs will go down, providing benefits to society in general.
Finally, please add your comments. I would be very interested in knowing whether you feel society needs a software engineering professional body or not and why.

Acknowledgements:
1 New Statesman, 21 April 1917, article by the Webbs quoted with approval at paragraph 123 of a report by the UK Competition Commission, dated 8 November 1977, entitled Architects Services (in Chapter 7).
2 Oxford English Dictionary, Second Edition (Oxford University Press, 1989).
3 http://www.ethical-perspectives.be/page.php?LAN=E&FILE=ep_detail&ID=100&TID=909 Asa Kasher, Professional Ethics and Collective Professional Autonomy A Conceptual Analysis, Ethical Perspectives, 12/1 (March - 2005), pp.67-97.
4 a b c Perks, R.W.(1993): Accounting and Society. Chapman & Hall (London); ISBN 0412473305. p.2.

1 comment:

intercad said...

Hi guys,. . I'd just like to ask what CAD (computer aided design) software is used at University level? . . Are there any other useful programs which are used at University for design/engineering?. I'm going for Aeronautical/Aerospace Engineering.. . I'm not sure if i'm going to specialise in the material side or the systems side..

Solidworks Support