> Only those whose programs might “endanger the public health or safety, security, property, or the economy will need to be tested,” continues Thornton.
It's perfectly sensible to introduce this when Software Engineers will be working alongside people who are also licensed and accredited. So, software engineers in safety-critical fields -- writing firmware medical devices, or shutdown routines for nuclear power plants, or pacemaker firmware -- would definitely benefit from this. Whether software engineers working on consumer-grade electronics need something like this is more hazy (Pebble smartwatch firmware? Probably not. But what about the people writing the iOS app for a diabetic's glucose blood monitor? Hmm.)
I'm under the impression that Software Engineering has been licensed by certain local engineering bodies for at least a few years now (Professional Engineers Ontario comes to mind), so this is nothing new. Not going for the accreditation won't harm your chances of being hired by a Google or Facebook, nor will it prevent you from starting your own company.
There's nothing "sensible" about asking any computer scientist to pass the fundementals of engineering exam. That has aboslutely nothing to do with anything in the computer science curriculum.
If the software you write controls a pacemaker, I would want you to be able to pass the fundamentals of engineering exam. If you're writing routines for SolidWorks, or AutoCAD, I would want you to be able to pass the fundamentals of engineering exam. If your program will be used by Civil Engineers to figure out the composition of soil that needs to be placed under a brick pathway that students like me will use every day, I would want you to be able to pass the fundamentals of engineering exam.
If you're going to be the next Mark Zuckerburg, I give negative fucks about whether you have an engineering degree. Go take a speech communication course.
I'm all for it, as long as it doesn't become a supply control mechanism that has onerous BS requirements like "X years experience with a licensed union tradesmen". Software is notorious for the "1 year of experience repeated 10 times" problem. Theses tests should be about pure aptitude.
Warning: If certification becomes more about permission than proficiency, you'll get corruption instead of competence.
Spoiler alert: it does. According to the article, it's another sub-specialty of the PE license. here's the california website for getting a PE license: http://www.bpelsg.ca.gov/
Well of course it's a supply control mechanism. That's a whole point of a guild.
It's also an IEEE money-minting mechanism, a state licensing board revenue-generating mechanism, and a small-company and freelancer screwing mechanism. (Large companies are exempted from the screwing, of course.)
"Most software engineers, including those who work for a government entity or large company, won’t be affected by the licensure requirement"
Well the rent seekers are coming apparently, as much gain as I see coming from this I also see a lot of malaise from it.
"I'm only doing what the best practices say I should." Sounds somewhat like a cya mechanism akin to what architects do. Along the lines of sprinklers every N feet, walls have to be buttressed no longer than N feet and with Y giant bolts etc...
I tried to register for the exam, but didn't find software engineer as one of the options. Turns out the SE exam is not offered in California.
I think it may be reasonable because this kind of certificate can be disruptive to the current way of things. The government may not want to take the risk on something so vital to California's economy.
Well I looked at doing the professional development in the the UK but the BCS/IEE kept changing the rules on prior experience.
The main question is whats in it for me? what benefits do you get and what since brunell died have the professional bodies done for engineering profession in the UK.
Ps and I already have gone part of the way down the mech eng track
I wonder how this will fare compared to the efforts of the BCS (British Computer Society), who have tried to push 'certification' for years with their MBCS (Member of the British Computer Society), Chartered Engineer and Chartered IT Professional certifications. I got all three years ago and then ditched them because (i) I have yet to find an employer who gives a flying XXXX about them, (ii) some employers see them as a 'warning sign' of mediocrity like 'Sun Certified Java Programmer' became and (iii) I had to pay every year to renew them.
Pointless, no matter how you spin it. Real engineers deal with measurable items like gravity and wind and light that don't change. Software can be anything, any language, any target, any industry, any size, any skill level required, etc. There is nothing practical to test that relates to everything. In my 3 decades of being a programmer there is absolutely nothing meaningful remaining from my first job: if I had had some magical license it would be pointless today.
What a terrible idea. Software is a rapidly evolving field which simply can't be captured by a single examination or a set amount of experience.
Indeed, apparently "four to six of experience" would be required. So suddenly no 20-somethings can work in software which might impact "public health or safety, security, property, or the economy." Say goodbye to half the tech teams at health and fintech startups...
They could, as long as the work was overseen by a senior developer with the appropriate paperwork.
However, since when was the IEEE an outlet for computer science? Where does the ACM stand on this?
From en.wikipedia.org/wiki/Software_engineering_professionalism
"In 1993 the IEEE and ACM began a joint effort...to explore making software engineering into a profession...The ACM pulled out of SWECC in May 1999...ACM determined that the state of knowledge and practice in software engineering was too immature to warrant licensing"
Granted, that was in 1999. I haven't heard anything since.
The ACM article explaining why they pulled out is here:
dl.acm.org/citation.cfm?id=581602 (paywall)
Two states adopted the IEEE's recommendation (against the ACM). Florida and Texas. In Texas, it's illegal to call yourself a "Software Engineer" without 16 years' experience. It's absurd.
sce.uhcl.edu/helm/SWEBOK_IEEE/papers/10%20reprint%205.pdf
“Just as practicing professionals such as doctors, accountants, and nurses are licensed, so should software engineers,” Thornton says. “The public needs to be able to rely on some sort of credential when choosing a contractor to write software.”
Yep, and thank God America's healthcare is so affordable because of these licensing requirements!
What a horrid idea.
EDIT:
Here's the deal. I'm a mechanical engineer by training, and could've after several years of paying dues gotten my Professional Engineer cert. There are technical fields where I demand that the products I consume (especially those which service thousands of people every day, as is the case with public infrastructure) have a very strong line of qualification.
The fact is that >>99% of software (as it is consumed today) does not require anything near the formal qualifications of civil or structural or chemical engineering.
If you want a really poignant reminder of how having professional engineers with quality control and certification can result in bad progress, go look at what's become of NASA and Armadillo Aerospace.
We are so lucky to be in a field where our ability to ship working code is valued above our ability to get off whoever the current power broker is (and this includes investors).
Let's not willfully throw away that windfall.
EDIT2:
If we expect to conduct business as has become the norm these days--move fast, break things, learn, repeat--and as has done so well for us as an industry, doing anything which artificially limits the supply of potential hands is bad. Doing anything which prevents people from trying new things with minimum investment is bad.
They don't understand us, and they're greedy bastards, so Something Must Be Done (and this is not only for .gov folks--the professional groups have a lot riding on being seen as useful. Jane and Bob the Bad Coders stand a lot to gain by collecting dues for the American Society of Software Engineers).
Actually, that's kind of funny. American Society of Software Engineers. ASSEs. Huh.
The solution for this is to solve it in the domains where it is necessary. If you want to write or adopt software for use in a critical system in aerospace then you need to be a licensed aerospace engineer, etc.
There is absolutely no need to license web developers or those who write the usual line of business software etc.
Are you sure? The description you just gave is unreasonably broad. What does "security, property or the economy" even mean, and what justifies their inclusion?
Yes for the domain knowledge, but what about the software? Do you expect an aerospace or biomedical engineer to understand also how to write safety-of-life system?
Why is that an unreasonable expectation if their job is to write such a thing? If you want to write software for aircraft then I don't see it as unreasonable that you be expected to understand both software and aircraft.
So, most of the failures in your first link did not result in loss of human life.
There are cases where I need to have software that absolutely cannot fail--and in those cases, I'm going to have a process, and I'm going to have a test suite, and I'm going to have a justification for all the code that makes it into production.
Some bozo with a software engineering license is not somehow magically going to save my ass in that case, and having those things in place let me hire whoever can write code.
This sounds well and good, but again, most of these disasters are the result of bad systems engineering--one of the most famous software errors, the Therac-25 race condition, actually killed people and could have been prevented with hardware failsafes. Having qualified software engineers is at once both overkill and not enough if you're actually serious.
Just look at all the nice folks in IT with Microsoft certs.
To add a point, licensing will shift the blame from corporations and their management to workers. This will mean that the blame won't be placed on management cheaping out on processes to ensure safety, but instead the 'bad apple' developer. This is bad for both consumers and workers.
Licensing in all industries, especially in medicine and law needs to be abolished ASAP. it has devastated many lives (it's too costly to get multiple opinions) and robbed the middle class in every town across America.
Because the consumer won't buy from you if you don't have a good track record. If a big company with a good brand name like Boeing or Airbus hired you for that, they might buy it. A company with reputation on the line will be more likely to invest in quality control than your local hospital (which usually refuses to publish any statistics or prices).
Is software development a branch of engineering or mathematics?
I'm ok with them forcing me take additional coursework to pass the FE exam as long as they also have to go back to school and take a year of real analysis, a year of abstract algebra, and a semester of complex analysis. I'd prefer to see number theory, with proofs, as well. I'm sure we can come up with a difficult and expensive comprehensive exam as an extra hurdle.
This has about as much to do with software "engineering" as the FE exam.
Right now I tend to think of Software Engineering as an ad-hoc guild, where one can gain entry simply by proficiency and talent and recognition of those attributes by your peers, fellow software engineers. It's a system that seems to work relatively well.
This licensing business seems to be an attempt to cut software engineers out of this peerage for the sake of HR, in addition to being a cash-grab as mentioned by other posters.
No, this is not the right way to look at it. Everything started in the state of Texas, where you have to be licensed to have the word "engineer" in your official job title. Since there were a number of "software engineers" running around in the state, they figured that something needed to be done to ensure that such engineers were licensed.
TBH I don't really care what the State of Texas thinks is appropriate in this matter, despite being a citizen of the state and a software developer.
If you happen to agree with the State's opinion, then fine. But don't tell me my opinion is incorrect. It's an opinion and presented as such.
If you know anything about Texas government, you'll know that their licensing schemes are another way they soak the little guy while bending over backwards to help out the big guy. Certification by my peers in the form of their acceptance and recommendations are much more important than some arbitrary test.
The most powerful part of state licensing of professionals is the ability to punitively delicense people for actions the state disapproves of which have nothing to do with their competence in their field of work, depriving them of their career because of any arbitrary act of noncompliance in their lives.
Funny, I don't see coding ability, distributed systems, or algorithms anywhere in the exam spec, which is what most engineering teams actually interview on. Also, though I've been an "engineer" for the past five years, I don't have a college degree which means I'm ineligible for taking this test. Therefore, "the public" won't be able to trust me to write code for them, whatever that means. Thank goodness I never plan on taking a government job.
I'm a freelancer in Virginia. I work on web apps for companies that want to figure out their sales figures better. I work on reports for non-profits who want to see how they are raising money. What hospital in its right mind would buy a heart monitor from someone like me? What car manufacturer in their right mind would want me to work on their control systems?
I could do it, but that's not the point. Those examples they provide, they are already controlled. They're already covered by very large corporations that have these sorts of controls in place. If they subcontract out to me, the responsibility lies with them to verify that my work is suitable.
This is just about preventing people like me from doing what we're trying to do: quit our jobs, make some money, bring their friends in and bootstrap a company.
This has nothing to do with you writing webapps as a side job. It's about having some way for those corporations to prove the people who are verifying your work are competent to do so. That is the _whole_ point of the PE stamp!
They said the people working for government and big corps wouldn't be subject to the license. The very people most likely to be writing or verifying code that might hurt people are exempted under some hand waiving "big corps will certify themselves", under some sort of code review process or something. So why don't they just certify themselves? Why the license?
And it's not my side job anymore. It's my full livelihood. It doesn't seem any of this has teeth yet, but when will it? And yearly fees? This is so obviously nothing more than rent seeking.
Fuck it, I'll just move. Oh, wait, I can't. My wife has an electrical engineering job with a branch of the government. They also are not required to license themselves, and they write code that affects more lives than I do.
Software Engineers in Canada are already able to become licensed Professional Engineers after graduating from an accredited Software Engineering program, writing the ethics exam, and gaining the prerequisite experience working under another engineer.
However, because there is no current requirement for any software to be certified by an engineer, most graduates don't care much to get it, and won't end up working directly under a P. Eng. anyway. So in my experience it hasn't really taken off as a licensed discipline. I have an Iron Ring, but that's as far as my P. Eng. path has progressed.
> because there is no current requirement for any software to be certified by an engineer
Certifying software is difficult, even under the best of circumstances.
Edit: Er, I didn't substantiate the first sentence. So here's an example. Apparently the reason that most medical devices run on Windows NT (as opposed to, say, Linux) is that Windows NT is already certified for that use, so it becomes easier to certify your custom MRI scanner because you can just include the pre-certified Windows NT part and only have to get the new code your company wrote certified. Similarly, seL4 is the only OS I can think of that has been formally verified (i.e. proven correct mathematically); I'm quite certain none of {Windows, Darwin, Linux} has been formally proven to be correct.
When I attended a recent talk at my local university, I found out that the shutdown routines for a local nuclear power plant were running on 40-year-old mainframes because those mainframes were certified to survive earthquakes and things. Work was in progress to find new hardware and rewrite those routines, although the Engineer I spoke to was under the impression that none of the hardware made in the last decade was certified to operating under the same level of confidence.
As if this is going to make the slightest lick of difference. Those that are already employed and producing good quality code aren't going to get canned from a company. Managers are going to evaluate those that deliver and make a choice "can I afford to lose this guy just because he hasn't got a license?" No! Likewise, those who are moving fast and breaking things are those that are starting their own companies and finding lucrative exit strategies by getting aquihired.
The funny thing is, once you're proven, it doesn't matter what your credentials say. Demand speaks volumes more than paperwork, and it always will. Risk is all about perception, that little license says "the State thinks this guy is less of a risk than another," but let's face it, when it comes down to it, would you hire the guy who started the last Twitter/Facebook/Foursquare that isn't licensed, or the guy that just moved in next door you never heard of that has the license?
Just like the MCSD/MCSE, it'll go out of the window the minute everyone realizes that the piece of paper doesn't actually mean this guy can deliver, it just means that he can pass an exam.
an activity's being called "software engineering" does not make it any more likely to be a form of engineering than one's being called "armstrong" makes one more likely to be strong. we might as well call it "software writing." it is obvious that lives will depend on some software working as expected. the solution is not to license the writers of the software, but to make sure software doesn't fail in ways that could end lives. a certification scheme doesn't add anything to the solution of this problem if the solution doesn't already exist.
I'm sure few people remember the Certified Data Processor exam (CPD) but I thought it was hilarious. I took the practice exam in high school in the 70's and passed. It was more about data management practices than actual computer knowledge, interestingly by knowing how computers worked you could infer what the best practices would be, and hence my ability to pass it by just figuring out what would "make sense" to any of the 250 multiple choice questions.
However, it has also been a source of disgust for me that companies would refuse any sort of warranty for their software at all. What sort of company sells you a widget and tells you, "By the way the box may just contain air for all we know, we don't warrant that it does anything!"
The risk of liability was too huge. Nobody wanted to sign up for their operating system crashing when you're rocket took off, or their spreadsheet getting the numbers wrong because binary really wasn't a great system for representing fractional decimal numbers.
I would be all in favor of fixing this total "get out of jail free" card first before we try to figure out who to license software professionals.
How would this work with "software engineers" who are educated as Computer Scientists? Not everyone who writes important software was necessarily trained as an engineer, nor do they really need to be.
51 comments
[ 2.9 ms ] story [ 137 ms ] threadIt is, nonetheless, a good article. The software engineering exam is offered once a year, in April; the first one was in April, 2013.
I wonder how quickly it's catching on and who requires them.
It's perfectly sensible to introduce this when Software Engineers will be working alongside people who are also licensed and accredited. So, software engineers in safety-critical fields -- writing firmware medical devices, or shutdown routines for nuclear power plants, or pacemaker firmware -- would definitely benefit from this. Whether software engineers working on consumer-grade electronics need something like this is more hazy (Pebble smartwatch firmware? Probably not. But what about the people writing the iOS app for a diabetic's glucose blood monitor? Hmm.)
I'm under the impression that Software Engineering has been licensed by certain local engineering bodies for at least a few years now (Professional Engineers Ontario comes to mind), so this is nothing new. Not going for the accreditation won't harm your chances of being hired by a Google or Facebook, nor will it prevent you from starting your own company.
If you're going to be the next Mark Zuckerburg, I give negative fucks about whether you have an engineering degree. Go take a speech communication course.
Warning: If certification becomes more about permission than proficiency, you'll get corruption instead of competence.
It's also an IEEE money-minting mechanism, a state licensing board revenue-generating mechanism, and a small-company and freelancer screwing mechanism. (Large companies are exempted from the screwing, of course.)
"Most software engineers, including those who work for a government entity or large company, won’t be affected by the licensure requirement"
"I'm only doing what the best practices say I should." Sounds somewhat like a cya mechanism akin to what architects do. Along the lines of sprinklers every N feet, walls have to be buttressed no longer than N feet and with Y giant bolts etc...
I think it may be reasonable because this kind of certificate can be disruptive to the current way of things. The government may not want to take the risk on something so vital to California's economy.
The main question is whats in it for me? what benefits do you get and what since brunell died have the professional bodies done for engineering profession in the UK.
Ps and I already have gone part of the way down the mech eng track
Things like control software for elevators and pacemakers.
Indeed, apparently "four to six of experience" would be required. So suddenly no 20-somethings can work in software which might impact "public health or safety, security, property, or the economy." Say goodbye to half the tech teams at health and fintech startups...
"In 1993 the IEEE and ACM began a joint effort...to explore making software engineering into a profession...The ACM pulled out of SWECC in May 1999...ACM determined that the state of knowledge and practice in software engineering was too immature to warrant licensing"
Granted, that was in 1999. I haven't heard anything since.
The ACM article explaining why they pulled out is here: dl.acm.org/citation.cfm?id=581602 (paywall)
Two states adopted the IEEE's recommendation (against the ACM). Florida and Texas. In Texas, it's illegal to call yourself a "Software Engineer" without 16 years' experience. It's absurd. sce.uhcl.edu/helm/SWEBOK_IEEE/papers/10%20reprint%205.pdf
Yep, and thank God America's healthcare is so affordable because of these licensing requirements!
What a horrid idea.
EDIT:
Here's the deal. I'm a mechanical engineer by training, and could've after several years of paying dues gotten my Professional Engineer cert. There are technical fields where I demand that the products I consume (especially those which service thousands of people every day, as is the case with public infrastructure) have a very strong line of qualification.
The fact is that >>99% of software (as it is consumed today) does not require anything near the formal qualifications of civil or structural or chemical engineering.
If you want a really poignant reminder of how having professional engineers with quality control and certification can result in bad progress, go look at what's become of NASA and Armadillo Aerospace.
We are so lucky to be in a field where our ability to ship working code is valued above our ability to get off whoever the current power broker is (and this includes investors).
Let's not willfully throw away that windfall.
EDIT2:
If we expect to conduct business as has become the norm these days--move fast, break things, learn, repeat--and as has done so well for us as an industry, doing anything which artificially limits the supply of potential hands is bad. Doing anything which prevents people from trying new things with minimum investment is bad.
They don't understand us, and they're greedy bastards, so Something Must Be Done (and this is not only for .gov folks--the professional groups have a lot riding on being seen as useful. Jane and Bob the Bad Coders stand a lot to gain by collecting dues for the American Society of Software Engineers).
Actually, that's kind of funny. American Society of Software Engineers. ASSEs. Huh.
I understand your point that you might write software that has few consequences if it fails, but thats not always the case.
There is absolutely no need to license web developers or those who write the usual line of business software etc.
I don't think the people pushing for licensing disagree with you that web developers don't need a license.
There are cases where I need to have software that absolutely cannot fail--and in those cases, I'm going to have a process, and I'm going to have a test suite, and I'm going to have a justification for all the code that makes it into production.
Some bozo with a software engineering license is not somehow magically going to save my ass in that case, and having those things in place let me hire whoever can write code.
This sounds well and good, but again, most of these disasters are the result of bad systems engineering--one of the most famous software errors, the Therac-25 race condition, actually killed people and could have been prevented with hardware failsafes. Having qualified software engineers is at once both overkill and not enough if you're actually serious.
Just look at all the nice folks in IT with Microsoft certs.
To add a point, licensing will shift the blame from corporations and their management to workers. This will mean that the blame won't be placed on management cheaping out on processes to ensure safety, but instead the 'bad apple' developer. This is bad for both consumers and workers.
Licensing in all industries, especially in medicine and law needs to be abolished ASAP. it has devastated many lives (it's too costly to get multiple opinions) and robbed the middle class in every town across America.
Word of mouth from previous clients. In the beginning a company with needs hires you and your reputation builds over time.
As I said above, I think Boeing does a fine job of minimizing errors. The AMA, teaching hospitals and local hospitals don't.
I'm ok with them forcing me take additional coursework to pass the FE exam as long as they also have to go back to school and take a year of real analysis, a year of abstract algebra, and a semester of complex analysis. I'd prefer to see number theory, with proofs, as well. I'm sure we can come up with a difficult and expensive comprehensive exam as an extra hurdle.
This has about as much to do with software "engineering" as the FE exam.
This licensing business seems to be an attempt to cut software engineers out of this peerage for the sake of HR, in addition to being a cash-grab as mentioned by other posters.
If you happen to agree with the State's opinion, then fine. But don't tell me my opinion is incorrect. It's an opinion and presented as such.
If you know anything about Texas government, you'll know that their licensing schemes are another way they soak the little guy while bending over backwards to help out the big guy. Certification by my peers in the form of their acceptance and recommendations are much more important than some arbitrary test.
I could do it, but that's not the point. Those examples they provide, they are already controlled. They're already covered by very large corporations that have these sorts of controls in place. If they subcontract out to me, the responsibility lies with them to verify that my work is suitable.
This is just about preventing people like me from doing what we're trying to do: quit our jobs, make some money, bring their friends in and bootstrap a company.
And it's not my side job anymore. It's my full livelihood. It doesn't seem any of this has teeth yet, but when will it? And yearly fees? This is so obviously nothing more than rent seeking.
Fuck it, I'll just move. Oh, wait, I can't. My wife has an electrical engineering job with a branch of the government. They also are not required to license themselves, and they write code that affects more lives than I do.
However, because there is no current requirement for any software to be certified by an engineer, most graduates don't care much to get it, and won't end up working directly under a P. Eng. anyway. So in my experience it hasn't really taken off as a licensed discipline. I have an Iron Ring, but that's as far as my P. Eng. path has progressed.
Certifying software is difficult, even under the best of circumstances.
Edit: Er, I didn't substantiate the first sentence. So here's an example. Apparently the reason that most medical devices run on Windows NT (as opposed to, say, Linux) is that Windows NT is already certified for that use, so it becomes easier to certify your custom MRI scanner because you can just include the pre-certified Windows NT part and only have to get the new code your company wrote certified. Similarly, seL4 is the only OS I can think of that has been formally verified (i.e. proven correct mathematically); I'm quite certain none of {Windows, Darwin, Linux} has been formally proven to be correct.
When I attended a recent talk at my local university, I found out that the shutdown routines for a local nuclear power plant were running on 40-year-old mainframes because those mainframes were certified to survive earthquakes and things. Work was in progress to find new hardware and rewrite those routines, although the Engineer I spoke to was under the impression that none of the hardware made in the last decade was certified to operating under the same level of confidence.
The funny thing is, once you're proven, it doesn't matter what your credentials say. Demand speaks volumes more than paperwork, and it always will. Risk is all about perception, that little license says "the State thinks this guy is less of a risk than another," but let's face it, when it comes down to it, would you hire the guy who started the last Twitter/Facebook/Foursquare that isn't licensed, or the guy that just moved in next door you never heard of that has the license?
Just like the MCSD/MCSE, it'll go out of the window the minute everyone realizes that the piece of paper doesn't actually mean this guy can deliver, it just means that he can pass an exam.
However, it has also been a source of disgust for me that companies would refuse any sort of warranty for their software at all. What sort of company sells you a widget and tells you, "By the way the box may just contain air for all we know, we don't warrant that it does anything!"
The risk of liability was too huge. Nobody wanted to sign up for their operating system crashing when you're rocket took off, or their spreadsheet getting the numbers wrong because binary really wasn't a great system for representing fractional decimal numbers.
I would be all in favor of fixing this total "get out of jail free" card first before we try to figure out who to license software professionals.