Ask HN: How would you set up national certification for software engineers? - jayfid
======
fsloth
A professional certificate is not a quality grading tool, it's a pricing
mechanism.

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.

~~~
ThrowawayR2
> _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.

~~~
tdb7893
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.

~~~
rafiki6
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.

~~~
tdb7893
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

------
jleask
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.

~~~
yarper
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?

~~~
analognoise
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.

~~~
yarper
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.

------
Raed667
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.

~~~
gommm
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.

~~~
Raed667
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.

------
spacemanmatt
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.

~~~
mdpopescu
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.)

------
diafygi
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.

~~~
antaviana
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.

~~~
diafygi
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.

------
gregjor
It's been done several times. For example:

[https://m.ieee.org/education_careers/careers/certified_softw...](https://m.ieee.org/education_careers/careers/certified_software_development_professional.html)

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://www.theatlantic.com/technology/archive/2015/11/programmers-
should-not-call-themselves-engineers/414271/)

------
mikekchar
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).

~~~
_pmf_
> 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).

------
watwut
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.

~~~
fsloth
A certification is a not a stamp of quality. It's a social demarcation line.

------
am_yc
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?

------
duncan_bayne
I wouldn't. See:

[https://mises.org/system/tdf/Liberalism%20In%20the%20Classic...](https://mises.org/system/tdf/Liberalism%20In%20the%20Classical%20Tradition_3.pdf?file=1&type=document)

... for an explanation of why.

------
mvpu
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.

------
johan_larson
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.

------
danielhooper
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.

~~~
GFischer
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://www.elpais.com.uy/informacion/ingenieria-solo-3-6-de-
nuevos-estudiantes-salva-matematicas.html)

[http://noticias.universia.edu.uy/en-
portada/noticia/2013/05/...](http://noticias.universia.edu.uy/en-
portada/noticia/2013/05/06/1021263/96-4-nuevos-estudiantes-ingenieria-no-
aprueba-matematicas.html)

------
arjie
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.

------
nl
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.

------
randcraw
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.

------
throwaway2016a
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](https://imgs.xkcd.com/comics/standards.png)

------
leonth
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.

~~~
walshemj
In that case why is Jeff Sessions still a lawyer? any reasonable system would
have debared him by now.

~~~
vostok
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.

~~~
walshemj
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

------
yason
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.

------
rafiki6
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.

~~~
jpindar
The rest of the engineering professions != designing bridges.

------
Entangled
Introducing politics is the best way to corrupt a system.

------
kobeya
Why would you want to do that?

~~~
elmigranto
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.

~~~
spacemanmatt
They check references. A surgeon has to keep his/her hands wet or face hurdles
getting back into any OR.

~~~
elmigranto
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 :)

~~~
kobeya
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.

------
pesfandiar
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.

------
mordant
I wouldn't.

------
id122015
Do you want government intervention when you talk about "national"?

------
yarper
A set of good engineers vouching for someone is about as good as it gets.

------
billpg
I'd make it an international certification.

------
HeavenBanned
As a Software Engineering student, I can't decipher whether the comments here
are sarcastic or honest.

~~~
ThrowawayR2
" _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.

