Software engineering is not a discipline. Its practitioners cannot systematically make and fulfill promises to deliver software systems judged by their customers as usable and dependable, on time and fairly priced. The illusion that software engineers possess a discipline has produced the major breakdown called the software crisis.
This quote, from a 1992 paper written by Peter Denning and Pamela Dargan completely ticked me off the first time I read it. The authors essentially claim that we're neither capable nor professionals.
Then I read it again. Well, yeah, we can't actually fulfill promises, the software usually isn't on-time, yup, and it's often not all that useable.
Maybe they have a point. Are we professionals?
Dictionary.com defines the noun form of “professional” as a person following a profession, especially a learned profession . Though the definition is annoyingly recursive, the sense is that professionals are the highly educated wizards who routinely solve tough problems. Like an engineer, right?
Well, maybe not. Compare us to other professionals. Doctors, for instance–most people endow those authorities with the “professional” moniker. Sure, they have an enormous amount of education, but perhaps the defining aspect of their career, the one that truly merits the word “professional,” is their on-going education. Somehow doctors manage to incorporate the vast amounts of new research into their daily practices. Can you imagine being a doctor who learned medicine in the 1940s, before penicillin, who continued to practice through the 50s, 60s, 70s and 80s using the same skills he learned so long ago?
He'd be considered a butcher.
How about teachers? I've always considered them professionals. Despite the low pay teachers in most states must take a certain number of continuing education credits every year or two to maintain their certifications.
Plumbers, hair stylists, electricians and numerous blue collar jobs require certification and licensure.
We design nuke controllers, avionics, implanted medical devices, and if you can spell C, you've got a job.
Today few states have any sort of certification requirements for embedded systems developers, though some locales restrict the use of the title “engineer.” But, for better or worse, certification is surely coming.
Embedded is a stealth industry today. Consumers might be vaguely aware of the buried processor but give it little mind-share. As electronics becomes ever more pervasive, and as critical systems suffer more failures (for instance, pacemaker recalls due to firmware problems are going up) legislators will wield the usual blunt ax.
We can (we must ) stave off this impending revolution that will hit all of our careers, but only by acting more professional, by actively soaking up new ideas, concepts and approaches to building systems.
All of us are smart folks who are experts at learning new skills, like how to use a different processor or building faster ISRs. But we too often fail at finding and embracing new processes that can help us make better products.
For example–are you familiar with the CMM? In my opinion every professional software developer should be an expert at the Capability Maturity Model. The usual chorus will loudly protest here. Sure, the CMM is bloated and flawed, and even in the best of cases is impossible other than in large organizations. But it contains useful and essential ideas that we can incorporate into our daily work.
Have you read Watts Humphrey's A Discipline for Software Engineering and done the homework? It's a tough slog but the benefits are amazing. Though no silver bullet, the mechanisms Humphrey diagrams give big benefits to individual programmers.
How about any of the books about agile methods? Have you adopted any of the concepts? Though a few in the agile community makes whacky claims, and I remain unconvinced about some of the practices, there's a wealth of valuable ideas that will lead to better systems.
Are you a member of the ACM or IEEE? Both offer a wide range of useful (and some deadly dull) journals.
Books (here's my reviews of some: http://www.ganssle.com/bkreviews.htm), classes, conferences, magazines and on-line resources abound. Are you truly engaged with your profession?
If not why not?
Jack G. Ganssle is a lecturer and consultant on embedded development issues. He conducts seminars on embedded systems and helps companies with their embedded challenges. Contact him at . His website is .
Social events are important too.
I think there is a tendency for software designers to be introverted. They can get lost in the world of code. They need to attend conferences like the Embedded Systems Conference and the like. The events need to have a substantial social content.
– Tim Flynn
Director of R&D
RMS Welding Systems
What professionals guarantee results or time to results? Your doctor? He wants to be paid even if you're dead! When was the last time a psychiatrist told anyone when they would be cured? Professionalism is more of a state of mind by your clients than your own actions. Most of those [examples of] blue color professional licensing started [in order] to protect the Union members from having to compete with non-union people from underbidding them. There is some safety concerns for plumbers and electricians but it is not information that is difficult to learn. What is the reason to license a barber? Either he can cut hair well and make money or he will quickly go out of business.
Yes licensed professional engineers are needed to build that bridge or skyscraper and even licensed electrical engineers have their place, but even that does not prevent disasters from time to time.
I need to be able to get the continuing education needed to stay employed. Not the demands imposed by some bureaucrat that hasn't used any engineering skill in 20 years to tell me which classes are required to keep my profession.
Most states have changed requirements for licensed psychology therapist that require a master's degree with higher credit hours that many graduated with in earlier years. The fact that they had to take required continuing ed classes and have years of experience don't count for anything on top of their old master's degree; they no longer are licensed. Some states have given exemptions to those currently working only because there were NO qualified people to replace them. We don't need that kind of government help. Thank You.
If I can't be of use to my employer I should not have a job. Right now I could use the chance to show I can be productive, but that's a different problem.
– Frank Yarker
I agree that s/w is becoming more and more critical and life threatening. Currently the company that sells takes care of its quality to an extent, in spite of the EULA that says we are not responsible. They take care of quality for business reasons.
I think the important thing is product quality and not certification of people who develop, test, and use the product. Also it is impossible to monitor and control that every developer must be certified, especially in this world of distributed development, testing, and usage.
I would say the best thing is to have a certain 3rd party certify your product as a whole, including mech. electrical and s/w components. This does not mean that s/w Eng. Certification is useless; it is useful but impossible to make it happen within reasonable time frames that are acceptable to business needs.
– Sateesh K