Ask HN: What obstacles stand in the way for a “bar exam” for programming jobs?

32 points by ccajas ↗ HN
First, getting this out of the way. I'm well aware that software programming is a broad topic covering many different skills and knowledge domains.

But so is practicing law. You can be an expert on bankruptcy law, or media/entertainment law, etc.

The idea of the bar exam is that the expectation is that any lawyer, at the point of passing the bar, the point at which they actually become a lawyer, have a solid understanding of most, if not all, general aspects of the law. I know of one exception, patent law, that is covered in a separate exam, but I'm not aware of other exceptions.

If they later choose to invest time and energy into specializing, and later forget some of the other more niche concepts of the law they don't practice, that's deemed as being okay.

Like software engineers, lawyers are not bound to one practice area, and some (especially in smaller towns) have overlap in several areas.

Yet when it comes to examination, the legal industry has managed to create a "one to rule them all" for grant someone admission to practice law. And it's generally effective in doing so. In theory, the same would be possible for another large career field that share core concepts in common, for all the jobs in that field.

What prevents a general examination to be designed and formulated for software programming work? We, too, work all over the place, yet there is no standard "bar exam" for programmers. Maybe the field is still not mature enough and we have to wait it out a couple more years?

61 comments

[ 2.7 ms ] story [ 131 ms ] thread
Why do you think that increasing the barriers of entry into software work is a good idea?
Software that could kill. Medical, aerospace, driverless?
OP is clearly talking about a general exam for all software programmers. ("What prevents a general examination to be designed and formulated for software programming work?")

Software engineering for safety-critical fields like aerospace and automotive tends to be fairly regulated already.

Mission critical software is created by processes, not individuals - unlike, say, surgery or legal counsel, that are delivered in person.

A single programmer shouldn't be able to kill using his keyboard, and if he can, something is very wrong with the way that mission critical software is produced.

To maintain the analogy, if a law firm is using the services of paralegals that haven't passed the bar exam or have no formal training, I will not be concerned even if they handle most of the legwork in my case, because I assume they are part of a team and their work is well scrutinized.

> Mission critical software is created by processes, not individuals.

I worked on software for the military, which was under a process (heavily regimented, I might add), and yet US soldiers still died when the software failed. It wasn't one person with a keyboard, it was a group decision and politics that allowed it to happen.

Processes in the end are still run by people. Sometimes people do the thing they think is right, yet end up with a result which is very very wrong.

Adding certification to the mix won't fix the faulty process at all though.
If you don't have an audit trail of the decisions made, you can't fix the problem.
That is a small subset of software.

The vast majority of software written today has precisely 0 ability to kill anyone.

Even IF you are working at a company doing one of those things, only a subset of engineers that are working there are going to working on the "core" part of the software. Those companies have lots of web developers making code that isn't dangerous as well.

To put it another way, reading and writing can kill as well. If the person writing the airplane manual screws up, it could kill someone. But does that mean we need a bar exam of writing English?

> The vast majority of software written today has precisely 0 ability to kill anyone.

There's lots of ways software can cost corporations money if it fails to operate. The recent failures at Delta, Southwest, United, all come to mind. The IT industry has a myriad of certifications to, say, prevent some tech-idiot from touching the routing table on the routers.

The ISO has standards for software engineering (similar to ISO9001 for hardware) but so far the market does not feel that standard provides a competitive advantage. If I could guarantee my processes gave you 99.9999% uptime with our software, would you prefer that or another company that can iterate faster?

Software that could kill is a small subset of overall software being written, but software that can arguably ruin or at least cause moderate havoc on people's lives (via PII) encompasses maybe a majority of jobs in the software industry [citation needed].

I don't know that having a "bar exam" is the best way to approach that problem, either. I think laws need to be written that cripple companies that don't follow best security practices and the rest will largely follow.

Maybe that eventually results in a sort of "bar exam" that companies endorse in order to cover their asses, but what are the chances that it will end up being a positive thing for programmers and not a bureaucratic nightmare test that everybody knows is bs?

A large amount (a majority maybe even?) of software written outside of Silicon Valley is "boring" business logic-y stuff that has a very limited ability to impact anyone's lives in a meaningful way.

I haven't thought too deeply about this but the solution to the PII exposure problem, in my opinion, is to heavily disincentivize entities from holding any data that they don't absolutely need to (probably via punishingly them heavily for slipping up).

That is, unless you happen to be named Null. Which is a surprisingly common surname.
I would think that accountibility would probably be equally if not more helpful in these situations. If a document was signed stating liability similar to Sarbanes Oxley for CFOs those who would be cutting corners would likely do the thorough vetting of credentials themselves.
It could raise my wages.

Being a doctor was a rather modest middle income wage until the AMA came along to raise barriers to entry.

If you're a software engineer then you are most likely in the top 1% of earners globally so why do you want to spite others trying to start their career, just so you can earn even more?
I'm not sure about that. The thing about doctors is that people don't decide not to get sick. With programming, if regulation of the industry dampens innovation, it might reduce the demand for software, and consequently, depress wages.
Under the current paradigm where wealth is steadily and increasingly being consolidated to the owners of automation, I don't think demand will decrease until the singularity, which is still a long way off, if even possible given our current resource consumption.
It's already happened implicitly with the rise & spread of the "technical interview". By rote memorization of a body of knowledge which may or may not be applicable to the job at hand. Given the interchange between employers, these are more alike than different.

Why would further formalization be any more valuable than say the Interior Decorator exam and license in Florida?

Professional exams oftentimes cover subjects like ethics, which would undoubtedly help the industry
Do you really expect individual dissenting developers, who in many cases are more replaceable than ever, to be able to effectively resist the decisions of design leads and business managers?
Is there evidence that people actually act more ethically after taking a class on ethics?
Not that I know of but there’s evidence professional ethicists behave no more ethically than other philosophers.

Ethicists’ and Nonethicists’ Responsiveness to Student E‐mails: Relationships Among Expressed Normative Attitude, Self‐Described Behavior, and Empirically Observed Behavior

https://onlinelibrary.wiley.com/doi/abs/10.1111/meta.12033

I doubt that unethical people act unethically because it just never occurred to them to be ethical, and that they would've known better if there was a class.
The point of teaching ethics is to help people better recognize unethical situations, not to convince the strictly unethical to become what they're not.
I'm less worried about explicitly unethical people than I am about somebody just out of college in their first job whose boss asks them to build something ethically dubious. Professional ethics instruction would A) help determine if something was unethical ("My boss told me to add a feature to our social network app to vacuum up every call and text message made on a device that has our app installed. Should I do that?") and B) provide a framework for people to push back on and censure unethical requests.
(comment deleted)
Including ethics at the individual contributor level of licensing is utterly detrimental to software individual contributors. It gives cover to business management who almost always can override technical individual contributors and technical managers even on decisions with ethical import. Ethics at the individual contributor level is NOT our civilization's problem, it is at the leadership levels, even more so the closer that leadership gets to levels where they have enough wealth and power to peddle influence upon judiciaries and legislators.
Teaching ethics won't help, but providing financial and social support for dissidents would. So would requiring members to adhere to an ethics pledge that can get their membership revoked if they fail to comply.

The numerous repeated calls for ethics pledges taken by individuals I see on this site betrays a misunderstanding of how power works. Individuals can't fight the system alone, it takes a collective.

The membership revocation is key - the fact that you could lose your professional license for ethics violations is enough to keep everything above board. Also, the NSPE would provide support for an individual engineer in the dissident/whistleblower case.

As an Electrical Engineer, we went over this in school, as ethics is one of the cornerstones of the Professional Engineer license. (Though, personally I am not professionally licensed.)

See here for what it covers: https://www.nspe.org/resources/ethics/code-ethics

> Why would further formalization be any more valuable than say the Interior Decorator exam and license in Florida?

Why do you assume that programming is more like Interior Decorators than not more like Civil Engineering? There's been a number of cases in our history where software has killed people or cost people/corporations millions of dollars.

You would need a professional organisation to lobby for laws, but I don't see engineers in the industry coming together and forming one.

Professional organisations were a way to keep people out of a field by requiring them to have the connections or the money to afford the study materials and exam fees. And don't forget continuing education costs as well. This concept would turn away many of the anti-establishment types in the industry.

That said, we are seeing signs of standardisation in the hiring process. TripleByte is gaining traction and maybe in a few years applicants will need to be "TripleByte Certified™" before they're even considered for an interview at larger company.

However there will always be scrappy startups that eschew this and just hire whoever can code and think.

Personally, I don't have too many complaints with hiring in our industry. It's been criticised lately, but it's still more democratic than law, or finance. The sheer number of first-generation immigrants that are in Silicon Valley and NY working in the field are a testament to this.

In addition to TripleByte, there seen to be an increasing number of companies that require HackerRank online timed coding assessments as the first technical filter before you get to ever speak to an engineer.
Let me answer your question with another question.

What prevents a bar exam for reading and writing?

Would it be a good idea for such a thing to exist for the act of reading or writing books, news, or anything else involving language?

Why should this be treated any differently for speaking to a computer?

Because he isn't talking about speaking to a computer.

He's talking about self driving cars, drones, hospitals, utility grids, etc.

Admittedly, it is hard to determine where or how you draw the line.

Are they?

>What prevents a general examination to be designed and formulated for software programming work?

There's plenty of non safety-critical software programming work to be done in this world.

The argument that the field is still immature I think is not very convincing. Or in the very least, whatever needs to change is not going to do so within at least the next few decades, because otherwise they would have already done so. Things haven't changed that much, and software engineering is a many many decade long industry at this point. In other words, if you really care about this, push for it now, in your generation, because otherwise you won't be able to pluck from the fruits of the effort until you're already into retirement.
I think this is the same question of "Why isn't there a bar exam for medical doctors". "Being qualified" for software requires nothing less than hands-on training.

Until software moves to more apprenticeships/residencies, I'm afraid we stuck in this "infancy" of a field.

There are "bar exams" for medical doctors - they take four rounds of USMLE board exams before getting an MD.
Medicine requires board exams.
Sorry, you cannot just take a board exam and start practicing medicine. Law, you can.
Nor can you do that in law, other than a very few states, all of which require a lengthy, documented apprenticeship with a practicing lawyer. It's not just a matter of walking in off the street cold and taking the exam.

In 2014, 60 apprentices took the bar exam (out of 83,963 total examinees). 17 passed.

Almost all states do require law school nowadays, and you don't have a prayer of getting reciprocity to practice in another state without it.

https://priceonomics.com/how-to-be-a-lawyer-without-going-to...

What prevents it? Employers and trade organizations that demand it.
What makes bar exams work is an industry-wide agreement that they won't allow you to do the work if you haven't passed the bar exam.

It seems that it's not (and will not be) in the best interests of most employers to disqualify people who haven't passed such an exam but otherwise seem able to do the work. Thus an effective "bar exam" can not arise voluntarily, since the required factor - motivation by a critical mass of most employers - is not there.

The other alternative is a legal requirement imposed from above, but again, there seem to be no powerful forces lobbying to forbid every non-certified person from programming a computer, neither employers nor programmers themselves nor the general public seem to want that very much.

What makes bar exams work is not an industry wide agreement, it’s government licensing. I’m sure there are plenty of paralegals who are perfectly capable of doing standard, ordinary legal work like conveyancing or ensuring the registry of deeds is updated when property is sold. But there can be only one kind of legal practitioner with US government licensing as it stands. Anything else is illegal and you’ll go to jail for practicing law without a licence.
It's called a PE (Professional Engineer) License. They introduced one for Software a few years ago. Most engineering disciplines have this and you can take the test 5 years after passing your FE (Fundamentals of Engineering) with work experience. However they are not typically needed unless you work (and sign off) on something that could be dangerous to the public. Civil engineers almost require them to work, other fields not so much. As an Electrical Engineer with an FE, I have never really seen it as being worth pursuing and maintaining, and for the software side of things even less so...

https://ncees.org/ncees-introduces-pe-exam-for-software-engi...

I work for a company that makes electronic products. We outsource the signing-off kind of engineering to a company that also does electrical regulatory testing for us. Here's my impression about it.

The work is boring, as in mind-crushing boring. You don't get to invent or design anything. Your job is to watch other people invent things, and then run those things through a set of checklists, while documenting everything.

One thing about programming is that it's democratic, inasmuch as anybody can download Python and start programming. Including me. Nobody will stop me, and I will invent things. We already have the situation in my department, that I'm not "allowed" to program, meaning that I "prototype" things, and the programming department turns them into a product that can be shipped.

Programming is too important to be left to the programmers. ;-)

I would argue that the very nature of the math behind programming is cause for it not to be regulated easily. In other applied fields you don't run up against undecidable problems and Rice's theorem. If it is not possible to mathematically certify that a particular program has a particular property how can you regulate the programmers? Only allow them non-Turing complete languages?
What prevents a general exam? - Attitude

Unlike other fields, Engineering in general and software in particular are all about freedom. You can hack your car, hack your phone, WiFi etc without needing a certificate from someone. You're challenging this freedom and hacker attitude by imposing exams and creating a system that gives people 'permission' to write software (work in this field)

This will never fly. And I hope it never does.

Yes, just like Electrical Engineer exams killed hobby electronics. /s
If you're suggesting a law against hiring people who have not passed such an exam, the First Amendment would likely be an obstacle (just as the government cannot impose an licensure requirement on journalists), since source code is protected speech. However, in safety-critical systems (such as self-driving cars), the government probably can impose a regulation against using code developed by an unlicensed programmer in production.

If you're suggesting a de facto industry-standard exam, I think there just isn't enough wide agreement about what should be on the exam.

This first concert in my mind is that while programming core concepts have not changed much in 30 years, the stuff you put on your resume has. Laws don't change very often and only in small details ways. A lawyer can still reference a law passed hundreds of years ago and it's relevant in a real world in the job scenario. Programming on the other hand, is far less stable. Furthermore, employers are always looking for key words in the resume. Do you know this language and this framework? I don't think they care or evening look for core concepts (maybe a problem in it's in right).
There seems to be a belief that such an exam would produce uniformly high caliber practitioners. There are plenty of lousy members of every regulated profession.

The exams in regulated professions are designed to test that you know the jargon and general knowledge of the field (anatomy and physiology, case law, etc,). The day-to-day application of that knowledge is usually consistent with that knowledge. Outstanding members of the field are determined by years of experience and specialization.

Software doesn't meet any of those expectations. The jargon changes weekly and your expertise with O notation and hash tables means almost nothing in day-to-day practice. The fixation on evaluating candidates on those topics is more about what's handy as a way to narrow the hiring funnel than it is about measuring what's important.

Software development is a creative activity. You can't measure that. Safety critical software is developed under regulatory guidelines enforced by process requirements and certification of organizations that follow those processes.

Indeed. There could be a data safety cert too. (Data protection and data processing ethics, more and more important nowadays.)

Specific technologies? Not applicable really.

There're plenty of certification exams in the tech field though they're never required by law, and most companies wouldn't use them as a primary criteria in making decision of new hires.
High school kids program. Some of them are surprisingly good. High school kids don't practice law. The fields simply don't compare and should not attempt the same standards.
What prevents it is there is no need to for the general well-being of society. Would it help certain interests ? Sure, but every law has its unintended effects that the lawmaker doesn't understand.
Perhaps you are asking the wrong question. Perhaps it should be "do we need a bar exam for lawyers?" What do we gain from such an exam?
Fundamentally demand supply mismatch.

These exams succeed in professions where more people are looking to enter the profession than there are jobs that will afford a comfortable lifestyle.. so the existing professionals lobby the government to setup a guild like body to "certify" and thereby limit supply of "certified professionals". The point of the exam is to limit supply and competition, it is not to ensure lawyers, accountants etc "know enough" - look at how many clients are done in by poor professional advice.

There are far far more programming jobs than people available who can program today. So this won't happen.