In discussing Scott Bain’s book: Emergent Design: The Evolutionary Nature of Professional Software Development Martin Heller asks Is “professional software developer” an oxymoron?
In the book (which I’ve not read yet), Scott makes the case for the use design patterns, test driven development, coding style and readability. This sounds like the book we all wish our colleagues would read (not ourselves of course – we’re already perfect).
Martin then hones in on Scott’s suggestion:
that software development is by nature a professional activity, and should be conducted as a professional activity. He also says that we’re not yet conducting it as a professional activity.
He finishes by asking the question ‘Is the phrase “professional software developer” an oxymoron?’ My answer is no, but I think the question misses Scott’s point. Scott is asking to consider what it would take to become a profession as a way to force us to start wrestling with difficult questions. I agree that we need to start asking difficult questions especially with the mounting numbers of costly failures in large out of control projects (both public and private sector).
But I would argue strongly against seriously considering becoming a profession. My concerns are two fold: would standardisation limit the testing and adoption of new ideas and look what happens in the name of a profession in some other fields.
- Consider if we had become a profession 10-15 years ago. Waterfall development and lengthy reviews of every output would be mandatory. How Agile, Lean and the related engineering practices have grown up in that environment? If we standardised today how would we improve on what we have now.
- Also be careful of the professional bodies you seek to mimic. The American Psychiatric Association has in recent years defined a number of diseases largely based on the lobbying of drug companies that wish to cure them. I shudder to think what the right people with money would do to the Software Professional Association.
So I agree with Scott this industry needs a shake up and we need to seriously consider how to get better. But I think that becoming a profession is the wrong path to take.
I look forward to hearing other opinions.
I trained first as a mechanical engineer, working in the field for 16 years as a research engineer. At one stage I even managed to qualify as a Registered Engineer, which in NZ was the qualification to prove that I was worthy of joining the Institute of Professional Engineers here (though I never joined — I regard myself as an “uncivil engineer”).
That experience left me with the view that “professionals” in that sense were overly elitist. Of course, it is financially self-centred for them to make entry into their “club” as difficult as possible, to minimise competition.
In contrast, the software industry seems to be far more open, with a greater encouragement to continuing education (perhaps because software technologies change more rapidly). I don’t think that “professionalism” would necessarily calcify the development process.
In fact, I’d credit the Agile community for raising the standards of software, by the emphasis on unit testing, and the better designs that result from coding for testability.
My view is that your development “portfolio” is the principle measure of your professionalism — the projects that you were a part of, and the contribution that you made to them and their success (or otherwise).
Not sure how things should go for “professional” software development. I would very much like quality of software projects to go up, but I agree that subscribing to one set of standards must not happen. If we are to move forward with this we would need to redefine how a profession works.
Really It was an Interesting conversation! about the software. I was wondering here, is the software is the professional activity ? Hmm…..
I was discussing this with a good friend at work just the other day… software development has neither a code of ethics, really, nor a set of professional standards and practices. My friend blamed Microsoft (as the 800 pound gorilla that shaped the industry in the last 25 years) for lowering expectations. I think he’s right but for a complicated reason: the hurdles developers have to go over have gone down, so it becomes much easier than it would otherwise be for someone to deliver enough value to earn a paycheck. It’s much easier now than it was, say, 20 years ago to produce a program that more or less works and does something useful most of the time.
When I think about professionalization I think perhaps the way to come at it would be certification in different methodologies and technologies as they emerge, not an overall certification of “Software Engineer”. Perhaps getting and keeping a ‘developer license’ would require some combination of certs from a minimum number of methodologies and technologies, continuing education credits each year, etc.. “You must do at least one dev technology course plus one architectural methods course plus one QA methodology course each three years to keep your license, but they can be focused on any of the following (long) list of technology vendors…”
Not a perfect answer but one that at least makes possible the emergence of new methods and their integration into the world of “acceptable” practices.