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.<p>But so is practicing law. You can be an expert on bankruptcy law, or media/entertainment law, etc.<p>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.<p>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.<p>Like software engineers, lawyers are not bound to one practice area, and some (especially in smaller towns) have overlap in several areas.<p>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.<p>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 <i>still</i> not mature enough and we have to wait it out a couple more years?
You would need a professional organisation to lobby for laws, but I don't see engineers in the industry coming together and forming one.<p>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.<p>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.<p>However there will always be scrappy startups that eschew this and just hire whoever can code and think.<p>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.
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.<p>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.<p>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.<p>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 <i>organizations</i> that follow those processes.
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.<p>Why would further formalization be any more valuable than say the Interior Decorator exam and license in Florida?
What prevents a general exam? - Attitude<p>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)<p>This will never fly. And I hope it never does.
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.<p>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.<p>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.
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...<p><a href="https://ncees.org/ncees-introduces-pe-exam-for-software-engineering/" rel="nofollow">https://ncees.org/ncees-introduces-pe-exam-for-software-engi...</a>
Fundamentally demand supply mismatch.<p>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.<p>There are far far more programming jobs than people available who can program today. So this won't happen.
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).
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 <i>using</i> code developed by an unlicensed programmer in production.<p>If you're suggesting a <i>de facto</i> industry-standard exam, I think there just isn't enough wide agreement about what should be on the exam.
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 <i>that</i> 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.
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.
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.<p>Until software moves to more apprenticeships/residencies, I'm afraid we stuck in this "infancy" of a field.
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.
i find it much more valid each company running it's own technical interviewing process. Adapted to the specific knowledge ( and social skills ) required by the job at hand.<p>personally i like joel spolsky's model: <a href="https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guide-to-interviewing-version-30/" rel="nofollow">https://www.joelonsoftware.com/2006/10/25/the-guerrilla-guid...</a>
Let me answer your question with another question.<p>What prevents a bar exam for reading and writing?<p>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?<p>Why should this be treated any differently for speaking to a computer?
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?