Ask HN: How would you set up national certification for software engineers?
78 comments
>A professional certificate is not a quality grading tool, it's a pricing mechanism.
Is it? At one time, physicians, too, were not all that keen on the idea of licensing.
"David A. Johnson and Humayun J. Chaudhry's surprisingly engaging Medical Licensing and Discipline in America: A History of the Federation of State Medical Boards was published to commemorate the centennial celebration of the Federation of State Medical Boards (FSMB). It opens with the infamous John Brinkley, known for transplanting live goat testicles into men in order to 'cure' impotence, and segues neatly into demonstrating how vital licensure and discipline continue to be for the medical profession and the general public. The authors pepper the book with many other such examples, making the dry remote process of licensure absorbing and pertinent to the reader..."
Having seen (allegedly) senior software developers do architectural things equivalent to said ghastly transplant, I'm not so sure licensure for software engineers would be a bad thing anymore.
Is it? At one time, physicians, too, were not all that keen on the idea of licensing.
"David A. Johnson and Humayun J. Chaudhry's surprisingly engaging Medical Licensing and Discipline in America: A History of the Federation of State Medical Boards was published to commemorate the centennial celebration of the Federation of State Medical Boards (FSMB). It opens with the infamous John Brinkley, known for transplanting live goat testicles into men in order to 'cure' impotence, and segues neatly into demonstrating how vital licensure and discipline continue to be for the medical profession and the general public. The authors pepper the book with many other such examples, making the dry remote process of licensure absorbing and pertinent to the reader..."
Having seen (allegedly) senior software developers do architectural things equivalent to said ghastly transplant, I'm not so sure licensure for software engineers would be a bad thing anymore.
I think licenses makes sense for doctors because they are working on people, their solution is generally specific to one person, and a mistake that they make can have dire consequences. Software engineering can also have large consequences but in those cases it's probably significantly more effective to test the actual product than test the engineers.
Not sure how your value analysis differs. Clearly "test the product" isn't good enough with empirical evidence. Otherwise we wouldn't have large security and data breaches that result in money and productivity loss.
I'm talking about regulation and those failures don't seem to be regulatory failures. I guess you could try to regulate to stop having data beaches but I think it would be too broad and largely ineffective anyway but in the case you regulated essentially every web app then a license might be more efficient than actually testing everything. I was thinking more along the lines of things that could cause physical harm (e.g. medical devices) where it makes a bunch more sense to test the device than test the engineers
Thanks, I think this is the most clear cut analysis of values at play.
The goat testicle treatment reference is grand,sir!
I'm not so sure medicine is the best example in managing a rational body work. It's still riddled with eminence rather than evidence based treatments. The disparity between the stuff that works - which is friggin amazing - and between what is at best invasive placebo is quite large.
But yeah, I agree, licensing if done properly can cut the tail of total nutjobs and incompetents. I'm not still sure if that can be the foremost motivator, though.
I'm not so sure medicine is the best example in managing a rational body work. It's still riddled with eminence rather than evidence based treatments. The disparity between the stuff that works - which is friggin amazing - and between what is at best invasive placebo is quite large.
But yeah, I agree, licensing if done properly can cut the tail of total nutjobs and incompetents. I'm not still sure if that can be the foremost motivator, though.
Were you working in 2008? Demand can ebb.
Yes, but it's not as if we can fabricate these events.
I'm a Chartered Engineer in the UK and no employer has ever cared. Perhaps they might if I worked in a safety critical arena such as aviation but certainly not in suit and tie business software land.
The problem is that although people moan about rubbishy software it very rarely physically hurts anybody and can be fixed in future releases. This means people are unwilling to pay the extra cost of software being more mature and 'engineered' on delivery. There's a lot of software that would be not be economically viable if it was to be held to a higher standard. If a bridge failing could be guaranteed not to hurt nobody and could be put right in a day or so but be like 1/10th of the cost structural engineers would be held to a lesser standard to.
That said, the financial cost of poor security that comes from a lower accepted quality may change what is acceptable over time for internet facing software. Even that is seemingly a long way off, look at the actual consequences for recent privacy and security breaches.
The problem is that although people moan about rubbishy software it very rarely physically hurts anybody and can be fixed in future releases. This means people are unwilling to pay the extra cost of software being more mature and 'engineered' on delivery. There's a lot of software that would be not be economically viable if it was to be held to a higher standard. If a bridge failing could be guaranteed not to hurt nobody and could be put right in a day or so but be like 1/10th of the cost structural engineers would be held to a lesser standard to.
That said, the financial cost of poor security that comes from a lower accepted quality may change what is acceptable over time for internet facing software. Even that is seemingly a long way off, look at the actual consequences for recent privacy and security breaches.
The problem with this is that badly written software actually costs more to write than a properly engineered product.
Sure, the initial impulse is cheaper if you hire all greenhorns but after a year? after five years? When the business decides that they want to move from AWS to Azure for X immutable reason?
Sure, the initial impulse is cheaper if you hire all greenhorns but after a year? after five years? When the business decides that they want to move from AWS to Azure for X immutable reason?
If technical debt becomes outward facing, the market punishes those involved. As long as technical debt is something engineers complain about but can keep putting the fires out on, then it does make business sense (after a fashion) - a wiser or more apt management might arguably do better, but if it isn't sufficient to make a company uncompetitive then it can at least be argued to be a worthwhile strategy, especially if you get smart young people for cheap who are willing to work brutal hours and then you just replace them when as they wise up and burn/age out.
All sectors or organisations being "disrupted" have become slow moving or invested in the status quo. No quicker way to get slow moving than have huge amounts of tech debt.
Here is the Tunisian approach:
1- Let private and public schools be. They can issue their engineering diploma as they like (to a certain extent).
2- Have a national committee that evaluates graduates and gives "national diploma of engineering" based on a number of criteria.
3- Watch the committee slowly become irrelevant as the private sector companies don't care about the national diploma and just wants qualified people.
1- Let private and public schools be. They can issue their engineering diploma as they like (to a certain extent).
2- Have a national committee that evaluates graduates and gives "national diploma of engineering" based on a number of criteria.
3- Watch the committee slowly become irrelevant as the private sector companies don't care about the national diploma and just wants qualified people.
The system in France is similar in a way. There are private and public schools, if they are certified, they can issue an Engineering degree but there are non-certified schools who just issue their own diploma.
Private sector companies do care about the actual Engineering degree so people who graduate from non-certified schools tend to have a lower starting salary.
Private sector companies do care about the actual Engineering degree so people who graduate from non-certified schools tend to have a lower starting salary.
In Tunisia in order for the school to be able to operate it needs to be certified by the state in the first place.
There is another organism that does the "equivalence" of diploma called "ordre des ingénieurs", I never bothered to do it.
There is another organism that does the "equivalence" of diploma called "ordre des ingénieurs", I never bothered to do it.
> people who graduate from non-certified schools tend to have a lower starting salary.
I graduated from a non-certified school and my starting salary was higher than friends from a certified school, for an identical software engineering position.
I graduated from a non-certified school and my starting salary was higher than friends from a certified school, for an identical software engineering position.
you'd need laws to disallow non-certified from working. but a lot of people won't like it, and so any non-law enforced committee won't ever be relevant.
If you're not certified you can't work as an engineer for the state.
But the state can't afford to piss-off the private sector, otherwise unemployment rates will go through the roof.
But the state can't afford to piss-off the private sector, otherwise unemployment rates will go through the roof.
I wouldn't. Software development is not fundamental. It is a blended trade incorporating art/design/marketing with engineering. If it were something that could be nailed down like plumbing I might could see it, but currently software developers are a rather diverse group serving a diverse market.
Edit: I would be curious to see, if more people are willing to indicate their years of field experience in this particular thread. I'm crowding 23.
Edit: I would be curious to see, if more people are willing to indicate their years of field experience in this particular thread. I'm crowding 23.
Heh. 33 since I started programming, 29 since I first got paid for it.
For the record, I am completely against any kind of certification in this field... which is actually already a dozen different fields, at the least. (I have no experience in Machine Learning or Wordpress plugins, both of which are actual jobs you can make money with.)
For the record, I am completely against any kind of certification in this field... which is actually already a dozen different fields, at the least. (I have no experience in Machine Learning or Wordpress plugins, both of which are actual jobs you can make money with.)
Do what they do for all other engineering fields: require a certified engineer sign off on a product delivered to a regulated entity, and be able to hold that engineer criminally liable if someone comes to harm from the product they signed off on.
The quality of software for lolzcat apps could remain shitty, but the quality of firmware for FCC approval would go way up.
In order for quality to increase for infrastructure software, engineers need to risk going to prison. It worked for civil, chemical, mechanical, etc. engineers. A lot of people died on shitty bridges before they started locking shitty engineers up. Software engineering will be no different.
The quality of software for lolzcat apps could remain shitty, but the quality of firmware for FCC approval would go way up.
In order for quality to increase for infrastructure software, engineers need to risk going to prison. It worked for civil, chemical, mechanical, etc. engineers. A lot of people died on shitty bridges before they started locking shitty engineers up. Software engineering will be no different.
That's an excellent way for software to be 100x more expensive and controlled by a cartel of incumbents. We could also send to jail those users who don't RTFM.
If your software could potentially kill people, it should absolutely cost significantly more, and require criminal liability risk for the maker. If your software couldn't ever kill people, you have no liability.
The cost of developing the software should include the inherent risk it poses if it fails.
Criminally liable? There do not exist schedules or tools or processes that would allow me to put my freedom on the line for my work. I'm a solid developer, too, but I am pretty open-eyed at the challenge of zero-defects.
I think the premise, "engineers need to risk going to prison." is facially ridiculous. I'm down with prosecuting actual fraud but you can't legislate quality. You can only protect diligence.
I think the premise, "engineers need to risk going to prison." is facially ridiculous. I'm down with prosecuting actual fraud but you can't legislate quality. You can only protect diligence.
This is one of the reasons why a lot of electrical/mechanical/civil engineers don't get their certification. Same reason. No amount of money would make them take that risk.
Do what they do for all other engineering fields: require a certified
engineer sign off on a product delivered to a regulated entity, and be able
to hold that engineer criminally liable if someone comes to harm from the
product they signed off on.
Right, but that's not what OP asked. OP is already assuming that we're in a situation where we recognize the need for certification for software engineers. Let's say, for example, that a plane crashed because of a software bug, and now people are saying that there should be a certification program to ensure that certified engineers have to sign off on software delivered for the aviation industry. The only problem is that no certified engineers currently exist, since this is the first year of the certification program. How would you proceed? Requiring certified engineers to sign off on code is great, assuming you already have a pool of certified engineers available to train up new certified engineers. It doesn't answer the question of how you get that initial pool.I don't see any other way than to grandfather in all or most current practitioners. Take, say, everyone with five years of documented experience and a relevant degree. Congratulations, they are now certified engineers. Provide ways for workers who don't quite meet those standards to get themselves in compliance. But enforce requirements for all incoming graduates from then on. And there might be requirements for ongoing training for everyone, too, the way there are for lawyers and doctors.
As to who would do this, there are organizations like the IEEE and the ACM that would be only to happy to help.
As to who would do this, there are organizations like the IEEE and the ACM that would be only to happy to help.
The NCEES which maintains Professional Engineering certification in the US does support Software PEs already.
The question would indeed be one of bootstrapping: processes to convert on the job experience into more certifications and conversely to add appreciable demand for the certifications into the job market.
The question would indeed be one of bootstrapping: processes to convert on the job experience into more certifications and conversely to add appreciable demand for the certifications into the job market.
Same way every other engineering profession did it. Grandfathering + an initial ramp up period.
There's the benefit/detriment of scale to consider. One guy who contributes to a widely used piece of software stands to affect millions if not almost billions. How do you mediate the difference in impact and infinite liability on a single person? One method is to stop relying on only a single person, but we neither have the manpower to do so, nor would it mitigate the damage per person significantly. Software is also far more complex to inspect, with an explosion of execution paths for every line of code.
We do need software engineering. But we simply cannot treat it like every other discipline. We need better techniques, we need formal methods. We're still in the dark ages, and every other discipline has sacrificed many to get where they are. But we're simply not there yet, despite the fact that we've protected many already thanks to the likes of Parnas and Boehme etc.
We do need software engineering. But we simply cannot treat it like every other discipline. We need better techniques, we need formal methods. We're still in the dark ages, and every other discipline has sacrificed many to get where they are. But we're simply not there yet, despite the fact that we've protected many already thanks to the likes of Parnas and Boehme etc.
> Do what they do for all other engineering fields: require a certified engineer sign off on a product delivered to a regulated entity, and be able to hold that engineer criminally liable if someone comes to harm from the product they signed off on.
Dunno about the USA but the aerospace companies I've worked for in Europe already require multiple sign-off from engineers.
"Engineers" meaning people who got an engineering degree (typically 5-6 years for a master) from an accredited university.
Dunno about the USA but the aerospace companies I've worked for in Europe already require multiple sign-off from engineers.
"Engineers" meaning people who got an engineering degree (typically 5-6 years for a master) from an accredited university.
The contractor gets sued these days its not always the designer that is at fault - I have worked on a project where we had a problem with a bridge collapse I built a special tool to reanalyse some of the survey work to try and prove it wasn't down to us.
That is NOT what they do for all other engineering fields. PEs are required for civil engineering, but not for many other types such as electronics and much of mechanical engineering.
It's been done several times. For example:
https://m.ieee.org/education_careers/careers/certified_softw...
No one bothers or cares much. Just call yourself an "engineer" if you want to.
https://www.theatlantic.com/technology/archive/2015/11/progr...
https://m.ieee.org/education_careers/careers/certified_softw...
No one bothers or cares much. Just call yourself an "engineer" if you want to.
https://www.theatlantic.com/technology/archive/2015/11/progr...
I would prefer an apprenticeship system. Possibly have several levels. To get to the next level you would have to create an independent project that you submit to the committee. The committee would review it and then interview you. This would culminate in a master-level project at which point you would be allowed to refer to yourself as a "master programmer".
As others have said, there are already engineering societies and you can become a professional/certified engineer but there is not really much demand at the moment. I'd really prefer trying to set up a parallel system that achieves other goals (improving the overall ability of programmers).
As others have said, there are already engineering societies and you can become a professional/certified engineer but there is not really much demand at the moment. I'd really prefer trying to set up a parallel system that achieves other goals (improving the overall ability of programmers).
> To get to the next level you would have to create an independent project that you submit to the committee.
What use is it to be able to create an independent project when 100 per cent of your work consists of delivering implementations according to specifications created by other people, using interfaces created by other people?
Being able to create a single-developer green field project takes you about one fifth the way to being able to survive in large projects (where "large" may also mean a very simple project embedded in layers over layers of process, politics and regulations).
What use is it to be able to create an independent project when 100 per cent of your work consists of delivering implementations according to specifications created by other people, using interfaces created by other people?
Being able to create a single-developer green field project takes you about one fifth the way to being able to survive in large projects (where "large" may also mean a very simple project embedded in layers over layers of process, politics and regulations).
Engineering certification managed by the NCEES (the Professional Engineer certification), used by most other engineering disciplines outside of software, has an apprenticeship of sorts in that one much work for several years as an Engineer-in-Training before being able to get your PE credentials. They do offer Software PEs as of recent.
Yes, the real question is more one of bootstrapping demand than finding associations to provide credentials. I considered trying for a Software PE because my current job (which is an environmental engineering firm where PEs in civil/environmental/electrical/et al are required/needed/present) would give me a small salary bonus for a PE title (and job title distinction that matters to my ego), but the effort involved doesn't seem worth it if the distinction is largely ignored by the software industry itself.
Yes, the real question is more one of bootstrapping demand than finding associations to provide credentials. I considered trying for a Software PE because my current job (which is an environmental engineering firm where PEs in civil/environmental/electrical/et al are required/needed/present) would give me a small salary bonus for a PE title (and job title distinction that matters to my ego), but the effort involved doesn't seem worth it if the distinction is largely ignored by the software industry itself.
Generally these sort of systems are in place to maintain a high price of labor. As demand exceeds supply it's unlikely there is much need for this process in the near future. If there was more supply than need, then people would quickly pine for a certification and start fighting to restrict employment of non-certified programmers.
I would not. As annoying as competition with a lot of people is, it is better then industry wide gatekeeper and resulting politics. IMO, if you think you have good test to distinguish between good and bad, build a company around it.
Kenya tried to introduce such a law last year, but the community quickly shot it down. some of the issues were
1. what makes a certified software engineer? - eg. will embedded, back-end guys, front-end guys, SREs, have similar certification processes, or will they differ, and if they differ, what happens when someone, wants to move?
2. who does the certification, the community or some bureaucratic board?
3. what guarantees that the certification process keeps pace with the ever changing landscape?
4. what guarantees that those with the authority to certify don't use it selfishly?
1. what makes a certified software engineer? - eg. will embedded, back-end guys, front-end guys, SREs, have similar certification processes, or will they differ, and if they differ, what happens when someone, wants to move?
2. who does the certification, the community or some bureaucratic board?
3. what guarantees that the certification process keeps pace with the ever changing landscape?
4. what guarantees that those with the authority to certify don't use it selfishly?
I wouldn't. See:
https://mises.org/system/tdf/Liberalism%20In%20the%20Classic...
... for an explanation of why.
https://mises.org/system/tdf/Liberalism%20In%20the%20Classic...
... for an explanation of why.
Wait for something to go very wrong. You want flaming wreckage, the lights going out state-wide, or at least a major business failure. And the problem has to be software. Then when the politicians are flailing around looking for something, anything, to do about it, point out that other safety-critical areas require designs to be done by certified engineers who have to meet training and practice standards. There is no reason something similar couldn't be done for software, and indeed a lot of engineering schools now offer software engineering programs. Require that all designs for life-critical software be done by certified software engineers. Maybe expand it to all software that handles more than $1MM/year, too. Grandfather most existing practitioners, say those with an undergraduate degree in a relevant field.
Ugh. If you really want to do this, try a whole bunch of nasty heuristics on github profiles - analyze how "carefully" they code (kind of apis they use, coding style, defensive programming, etc.); how much care they take polishing their projects (frequency and type of commits, comment sentiment, refactoring, etc.); how well they write documentation and unit tests, and such. It would be an interesting academic project, but I doubt you can really create an acceptable scoring model out of it.
In many ways the "certification" for software engineers is a misnomer. For me, github is a certification of sorts - a (biased) view: good engineers code for passion not money. I'm sure there's lots of good engineers that don't have a github, but I prefer those that do.
In many ways the "certification" for software engineers is a misnomer. For me, github is a certification of sorts - a (biased) view: good engineers code for passion not money. I'm sure there's lots of good engineers that don't have a github, but I prefer those that do.
I can imagine it now. An alternate reality where all programmers are "certified software engineers" except for a handful of hobbyists. I log onto hacker news, click on the top article, and read about how "certified" programmers cannot fizz buzz.
It can go the other way too. Here in Uruguay the local ("free") state university was for a long time the only place to get an engineering degree.
They somehow decided that they needed to set insanely hard exams, so that 97% of the students fail (not an exaggeration). So they had a nice monopoly and could command huge salaries.
Most of those students that fail now transfer to private universities and end up being perfectly acceptable engineers, programmers, etc.
But the very few that end up graduating (about 1 in a 1000) are really very good at problem solving and I doubt that any one of them that chooses CS would fail fizz buzz. They're required to write their own compilers, write a hardware driver, and other stuff, up to what would be postgraduate level in the U.S.
The market doesn't really recognize the insane stuff they had to go through and often pays them the same as a graduate from a private university (which is "easier" by virtue of being sane, I'd say most are perfectly acceptable in the exigence level)
http://www.elpais.com.uy/informacion/ingenieria-solo-3-6-de-...
http://noticias.universia.edu.uy/en-portada/noticia/2013/05/...
They somehow decided that they needed to set insanely hard exams, so that 97% of the students fail (not an exaggeration). So they had a nice monopoly and could command huge salaries.
Most of those students that fail now transfer to private universities and end up being perfectly acceptable engineers, programmers, etc.
But the very few that end up graduating (about 1 in a 1000) are really very good at problem solving and I doubt that any one of them that chooses CS would fail fizz buzz. They're required to write their own compilers, write a hardware driver, and other stuff, up to what would be postgraduate level in the U.S.
The market doesn't really recognize the insane stuff they had to go through and often pays them the same as a graduate from a private university (which is "easier" by virtue of being sane, I'd say most are perfectly acceptable in the exigence level)
http://www.elpais.com.uy/informacion/ingenieria-solo-3-6-de-...
http://noticias.universia.edu.uy/en-portada/noticia/2013/05/...
I wouldn't. It's not necessary and will be co-opted by people who care too much about irrelevant stuff and not enough about delivering.
1) I'd move to a country which I wanted to be forced to import all its software
2) I'd propose a tiered system of software development licenses, involving passing tests such as "sort this linked list". Preferably do them on a whiteboard, just like in the real world.
3) I'd forbid access to a compiler to anyone without their software development licenses.
Or maybe I'd just go with an amorphous mess of university degrees, short courses and on-the-job experience.
2) I'd propose a tiered system of software development licenses, involving passing tests such as "sort this linked list". Preferably do them on a whiteboard, just like in the real world.
3) I'd forbid access to a compiler to anyone without their software development licenses.
Or maybe I'd just go with an amorphous mess of university degrees, short courses and on-the-job experience.
Do you want to certify someone's mastery of S/W dev techniques? Or their compliance with a S/W dev process? Or establish S/W standards for deliverables?
Frankly only a guild cares whether you're a master craftsman. I see greater value to customers in the latter two, especially if S/W products were held to a standard of 'quality', esp efficacy and reliability. Then the S/W dev process could adopt a quality assurance process like that of housing construction, in which a building code exists and defines metrics of product performance that must be met by the builder through iterative inspections and a formal compliance process.
Should such a process exist for all software? No. But I believe it should for some software products, like those in automobiles, medical devices, and essential infrastructure, etc. Do such formal dev processes benefit from their practitioners having some sort of formal certification themselves? Probably not. It's the process and product that's needs certification, not the craftsman.
Frankly only a guild cares whether you're a master craftsman. I see greater value to customers in the latter two, especially if S/W products were held to a standard of 'quality', esp efficacy and reliability. Then the S/W dev process could adopt a quality assurance process like that of housing construction, in which a building code exists and defines metrics of product performance that must be met by the builder through iterative inspections and a formal compliance process.
Should such a process exist for all software? No. But I believe it should for some software products, like those in automobiles, medical devices, and essential infrastructure, etc. Do such formal dev processes benefit from their practitioners having some sort of formal certification themselves? Probably not. It's the process and product that's needs certification, not the craftsman.
The problem with software is that there are thousands of certifications and none of them have any authoritative weight. If you are a security engineer there are 4+ different certifications you can get and almost none of them prove you know your stuff, they are just excuses to charge you per year for "Continuing Eductation Credits"
But on the other topic. The PE, which is the engineering certification in the US has a software specialization already. And I don't plan to get it. Even though I meet one of the most difficult qualifications which is having a degree from a school where Computer Science is accredited as an engineering program. Same reason my wife who is a Process Engineer (an electrical and/or mechanical engineer that engineers processes and machines for mass production) doesn't plan on getting her's despite having a Master's degree in biomedical engineering. No employer is looking for it and it is absurdly expensive in both time and money.
I think this XKCD applies: https://imgs.xkcd.com/comics/standards.png
But on the other topic. The PE, which is the engineering certification in the US has a software specialization already. And I don't plan to get it. Even though I meet one of the most difficult qualifications which is having a degree from a school where Computer Science is accredited as an engineering program. Same reason my wife who is a Process Engineer (an electrical and/or mechanical engineer that engineers processes and machines for mass production) doesn't plan on getting her's despite having a Master's degree in biomedical engineering. No employer is looking for it and it is absurdly expensive in both time and money.
I think this XKCD applies: https://imgs.xkcd.com/comics/standards.png
First of all, determine what value you bring with the certificates to various parties. In certified fields such as law, accounting, medicine, service providers benefit from high barrier of entry to market and high quality of the profession, whereas customers benefit from consistent quality and check & balances by law (via revocation of licenses if found to do malpractice). Governments benefit from increased surveillance and ability to regulate practices.
In software development, these and other benefits are not as critical or very hard to achieve even with strong enforcement.
In software development, these and other benefits are not as critical or very hard to achieve even with strong enforcement.
In that case why is Jeff Sessions still a lawyer? any reasonable system would have debared him by now.
It is my understanding that the Alabama bar is not very quick to disbar attorneys. It is also my understanding that no court has ruled that Sessions perjured himself.
Being disbarred by your peers from being a judge for racism should have been the end of Mr Sessions legal career - bringing the profession in to disrepute
I have no idea who Jeff Sessions is, but I am sure that the rule tries to make sure that these kind of situations are the exception.
Jeff Sessions is the current Attorney General of the United States of America.
It was a fairly controversial appointment.
I'm not entirely sure what specifically the poster thought he should have been disbarred for, but a number of his views have made it easy to argue about the quality of service he has given.
It was a fairly controversial appointment.
I'm not entirely sure what specifically the poster thought he should have been disbarred for, but a number of his views have made it easy to argue about the quality of service he has given.
When the actual behaviour of software diverges from its expected behaviour we call it a bug. The reason we have bugs is that we humans are very bad at reasoning about the expected behaviour and projecting the actual behaviour of a computer program, and that is because of the humongous complexity that is involved.
Unbounded complexity is a distinct trait of software. The most important, most regulated and most prestigious software engineering tasks are hands down mostly about doing relatively simple things but controlling complexity. To a lesser degree, when writing code every programmer is actually working to control complexity.
Once things get complex then nobody, not even the brightest brain, can get anything done anymore. So the first priority is to actually avoid too much complexity and to reduce it further will cost time and money.
This means we can do simple things well if we want to. We do this for narrowly scoped projects such as aviation-grade software, rocketry and medical software et cetera. It costs, and we can do it, but that's only because we already slashed out most complexity out of the window before we even started. Instead of general-purpose software we're writing very specific-purpose software.
Using the same principle but working on top of abstractions we can do complex things well in software, too. But those always come with a caveat about when and where the abstraction might fail. Most software is like this but that is also the sort of software which is no longer bridge-building grade. We don't build bridges whose design is theoretically sound given a few hasty assumptions, but with the possibility that when those assumptions might fail the bridge would come down. Certified software engineering can't fix that because they would have to start from the ground up to cover all their bases and then they couldn't get very high from there.
Certification is no silver bullet. Complexity is already managed where absolutely necessary and where there is the money to back it up. Requiring a certified engineer with legal responsibility in the general case would just make most software development stop entirely because anyone with the slightest understanding of programming would never sign off the software we currently want to run, and writing properly engineered software to handle what we currently want to run would be just prohibitively expensive.
Unbounded complexity is a distinct trait of software. The most important, most regulated and most prestigious software engineering tasks are hands down mostly about doing relatively simple things but controlling complexity. To a lesser degree, when writing code every programmer is actually working to control complexity.
Once things get complex then nobody, not even the brightest brain, can get anything done anymore. So the first priority is to actually avoid too much complexity and to reduce it further will cost time and money.
This means we can do simple things well if we want to. We do this for narrowly scoped projects such as aviation-grade software, rocketry and medical software et cetera. It costs, and we can do it, but that's only because we already slashed out most complexity out of the window before we even started. Instead of general-purpose software we're writing very specific-purpose software.
Using the same principle but working on top of abstractions we can do complex things well in software, too. But those always come with a caveat about when and where the abstraction might fail. Most software is like this but that is also the sort of software which is no longer bridge-building grade. We don't build bridges whose design is theoretically sound given a few hasty assumptions, but with the possibility that when those assumptions might fail the bridge would come down. Certified software engineering can't fix that because they would have to start from the ground up to cover all their bases and then they couldn't get very high from there.
Certification is no silver bullet. Complexity is already managed where absolutely necessary and where there is the money to back it up. Requiring a certified engineer with legal responsibility in the general case would just make most software development stop entirely because anyone with the slightest understanding of programming would never sign off the software we currently want to run, and writing properly engineered software to handle what we currently want to run would be just prohibitively expensive.
Introducing politics is the best way to corrupt a system.
Why would you want to do that?
One thing that comes to mind is job interviews. When you apply to, say, a surgeon opening, certification and previous job experience is enough, no one asks you to perform homework surgery or list all the bones in human body.
They check references. A surgeon has to keep his/her hands wet or face hurdles getting back into any OR.
True, but still, it's not like you are going to say "here's my github, CS diploma and references from previous jobs" and hear "alright then, let's skip reversing those red-black trees on a whiteboard for 4 hours, welcome aboard".
I understand why those are not enough, but it would be nice not to have to prove you are competent from ground up every time you want to change a job. Hence, certification, etc. But I have no idea how to do it well, though I do hope someone else spends couple of years figuring it out :)
I understand why those are not enough, but it would be nice not to have to prove you are competent from ground up every time you want to change a job. Hence, certification, etc. But I have no idea how to do it well, though I do hope someone else spends couple of years figuring it out :)
Actually I've had jobs like that, and hired roles in that way. It works better than you think when those references are really there.
The first thing you'd need to setup is a lobby to make it mandatory to have it be legally required to have a licensed software engineer sign off on code going into a production system. Generally the rest of the engineering professions have this requirement. You must legally have a licensed engineer sign off on the drawings for a bridge for example.
The rest of the engineering professions != designing bridges.
As a Software Engineering student, I can't decipher whether the comments here are sarcastic or honest.
"It is difficult to get a man to understand something, when his salary depends upon his not understanding it!" --Upton Sinclair
A lot of people currently in the industry wouldn't qualify if Professional Engineer-style certification were instituted and even those that do would be held to a lot higher standard than they are now.
A lot of people currently in the industry wouldn't qualify if Professional Engineer-style certification were instituted and even those that do would be held to a lot higher standard than they are now.
If they seem cynical, they're honest.
Perhaps you should take a couple of psychology courses, as well.
A certificate is barely anything more than a hoop that employers make prospective employees jump through. In the current job market, it's very unlikely to catch on.
I wouldn't.
Do you want government intervention when you talk about "national"?
A set of good engineers vouching for someone is about as good as it gets.
I'd make it an international certification.
Thus the demand for the certification needs to come from the selfish needs of the certified profession.
First requirement is that there is an oversupply of qualified candidates. As the demands for software engineers shows no signs of abating I would claim attaining this first requirement would be quite hard. On the other hand, if supply of eligible candidates exceeded demand we would have a certification program done almost by itself - unless the big tech incumbents fought terribly against it, of course.