On the other hand, if software engineers were interviewed like doctors, anyone who didn’t have a U.S. graduate degree would be immediately rejected. Anyone with great experience in another country would be immediately rejected. That is most of the good doctors in the world! The doctor interviewing process is simplified by rejecting the vast majority of qualified candidates before even interviewing them.
I think the field of software engineering is doing quite well with its interviewing compared to other fields. Having all of these rigorous interviews sometimes ends up evaluating people based on things that shouldn’t be so important, but the upside is that you can be far less reliant on credentials.
Software developers would also need malpractice insurance to protect them from bugs. This is the difference. What real engineering and medical disciplines enforce is personal responsibility for their actions. If you screw up then you're going to be sued big time. Software always claims zero liability. It's why software development is not real engineering.
Maybe in some industries there is no liability, but I’m in biotech and there is certainly a large amount of software issues that would qualify for litigation
Being less reliant on creds helps newer folks, while more senior folks have to maintain that ability for the sole purpose of interviewing.
To me, if you can't substitute a verified credential or experience in place of a technical interview, it just shows they implicitly prefer newer folks.
On my country (Portugal) Software Engineering is a professional title, universities are only allowed engineering degrees, including in anything computer related if validated by the order and anyone signing projects where they are liable must have the title validated.
To be fair, many skip the title validation because they don't sign such kind of projects, but they still get the title at one of those validated universities if they want most HR departments to actually care to read their CVs.
Architects and Engineers are protected titles in most countries there is an exemption for IT, the EU protected titles also exempts that but local countries may impose their own rules.
There are also often different types of protections, in the U.K. for example there is “registered” and “chartered” titles.
The registered usually deal with newer titles that didn’t have historic charters and recognition of non-UK accreditation.
So for architects for example you can be a registered Architect by registering with the ARB which usually means you need to be registered with a non-UK charter and have a recognized diploma, to be a charter Architect you have to go through the process that RIBA dictates which means getting your education in the UK or in RIBA accredited schools abroad which only gets you to RIBA part 2 and then complete the required experience and exams for Part 3 in the U.K.
This is a good point. Software engineering is one of the most open fields in that it cares relatively little about formal credentials, tests or historical background (what else you’ve worked on). Anyone who has picked up “coding” (etc.) can join in the fray and start adding value, while learning more while doing.
Doesn't invalidate the point that it isn't Software Engineering, unless you own the accreditation that validates your knowledge across Software Engineering domains and practice, with a degree taken in a certified university.
It isn't, but then one isn't entitled to call themselves Engineer, just like a village "doctor" isn't one.
There is no proof that the person in question would fair well in all domains that get taught during 5 years of engineering school, and follow up experience on the field, without a proper assessment from the engineer board.
I guess you are happy to go to anyone that calls themselves doctor as well, or buy a house from someone that has learned to put bricks together during weekends.
The assessment proves that one actually has the skills that are expected from any Software Engineer to fulfill the society expectations, technical, moral and ethical responsibilities, from the profession.
I'd love if software required a degree. I have a degree and pretty much everybody I ever worked with has a degree. Looking around the entire floor there's only one person without a degree I am aware of.
It's a myth that you can work without a degree, you'd never get a job interview in the first place. Seems to be mostly a US myth by the way, makes sense because degrees are crazy expensive there.
This just sounds like a heavy dose of confirmation and/or affinity bias. The best developers I've worked with had no degree at all or a degree in something completely separate from development. I think a healthy mix of both academic and purely practical experience is the best.
I will reply to this comment since this is probably the most relevant.
You're on point that there is a personal bias. Developers without degrees congregate together where they can, while developers with degrees congregate together to other places. There is a major self selection.
Saw a lot of the first when I was doing contracting in the UK, saw a lot of the later as permanent in tech companies. If you're interviewing for google you're way more likely to have 2 stanford majors in the interview panel than 2 developers without format education.
Something I never understood when I was younger is the professional networking side of getting a degree is just as or more important than the educational side. Yeah, it's good to have knowledge, but you can learn most of it after the fact, especially with the resources available online these days.
However, you can't learn or get a do over on getting in with the right social group. That's why so many "successful" people come from ivy league schools even though some of them seem to be pretty dumb. It's more about getting into a rich and powerful social group than getting an education. Once you're in with that group you have a very high chance of success as long as you're not a total fuck up.
How many of the incredibly successful people we know of in the industry were drop outs? I can think of quite a few, and I know of other engineers who thought their CS program was vastly inferior to devoting 100% attention to their company, which they could give maybe 33% to due to classes and undergrad life.
To be fair, you should do the exercice, write down the names and check if they had a formal education. You will probably find out that they all do.
The common figures (google/facebook for examples) are typical college graduates from a very top school, who happened to drop in the last year of bachelor or master to found a company, sponsored by their university network and connections.
By the way I was talking having having a formal education versus no formal education and you're trying to move the conversation to dropouts. Dropping in the last year of a top US school (because you were given half a million dollar to form a company) qualifies as having a formal education.
> "How many of the incredibly successful people we know of in the industry were drop outs
Knuth, Dijkstra, Kernighan, Ritchie, etc. all had degrees, although some are non-CS because CS degrees weren't a thing back then. Linus Torvalds, Dave Cutler, and Theo de Raadt all have degrees. The only hardcore coder (i.e. not a business person) without a degree I can think of is John Carmack.
There's not really a good reason I can think of to require a degree to write software. Sure it shows a basic level of competency, but there are still often graduates who can barely code.
There's also some absolutely incredible developers who come from non-traditional backgrounds that would not even be considered by this requirement.
While it's most likely currently the case where finding a job without a degree is hard, I don't think a hard requirement for a degree should be a valid means of evaluating job applicants.
It would make it much easier to find a job and the salaries would be a higher (assuming one has a degree).
Developers really don't realize how bad they have it. If you have friends who passed to be doctors, nurses, lawyers, they can all have a much easier and longer career.
You will see what are your prospects after 15 years of development, if you were not driven out of the industry, it's grim.
I'm sorry your observation leads you to have such a negative view of things. Clearly your lived experience must be radically different from mine.
I've been a software developer for 30 years now, and never got a degree. I do have friends that are doctors and lawyers, and I prefer my career path to theirs. I started working and earning at 18, rather than going through 8 years of expensive schooling. All these years later (your 15 years doubled), I'm still in-demand, still earning reasonably well, and don't experience the levels of stress or work the long hours my doctor and lawyer friends do.
But hey, when I was young, it was just doctors and lawyers who earned big money. Now it's doctors, lawyers, and software developers, so that's a huge gain for software! And still, only about 75% or so of software developers have degrees at all, let alone eight years of school and two degrees like are required to be a doctor or lawyer.
I've spent the last month interviewing for new "Senior Java Developer" positions, and I can assure you, having a degree does not mean one's prospects are automatically good. Or that one know what one is doing, even.
I'd take my financial experience as a college dropout software engineer over that of a doctor or lawyer any day. I get to spend my 20's debt free and mega rich (by young adult standards), and I've been able to save most of my considerable income. I think the average doctor's net worth might surpass mine in their late 30's, and would certainly accelerate beyond what I could ever keep up with. But so what? I get to spend an entire life never stressing about money once, while they have to stress over student debt for 15-20 years.
My "prospects after 10 years of development" are going to be "figuring out what to do now that my house is paid off and I don't need to make half as much as I do anymore". Compare those to a doctor's prospects after 10 years of college: "Time to start making money for the first time!"
Conversely, some of the best engineers I've worked with either didn't have degrees or had degrees in things like economics. It's pretty common in silicon valley, which should be no surprise given how many titans of the industry themselves didn't graduate college.
During my time as a manager at Facebook there at least 4 different engineers on my team who did not have a college degree. It’s certainly harder to break in without one, but it’s possible.
Actually, these kind of stuff do get asked at the various interviews to becoming a doctor.
* Working for free because it is a passion.
Actually a big part of the medical school interview is making sure you are passionate about medicine. You are pretty much expected to be doing some type of medical volunteering on an ongoing basis to demonstrate your passion. In addition, once you are in medical school, interviewing for residency, demonstrating passion by volunteering or leading a journal club is often a big boost to your chances.
* Whiteboards
As part of the USMLE (US Medical License Exam) there is a clinical skills section. You go into a recorded room with a standardized patient who pretends to have a certain illness. You are expected to ask them the right questions and do the correct exam. You are graded on how well you do.
In addition, before you can get board certified in your specialty (especially in surgery) and be allowed to practice on your own without any supervision, you undergo what are called oral exams. It is kind of like whiteboarding. There you are given hypothetical patient cases and are asked to walk through how you would diagnose it. What questions will you ask, what exams would you do, what imaging or other tests would you order. You are also asked about your treatment plan. If you are a surgeon, you will be asked to walk through how you would do the surgery, including what type of incision and the surgical approach. The examiners may throw in some complications (such as a lot of bleeding) and ask how you would deal with it.
In reality, the medical doctor interviews are much more demanding than the software developer interviews.
Source: I am a medical doctor and software developer and have done both the doctor interviews and the whiteboard interviews.
I can think of one exception, which is certain consulting firms (eg. Booz), where you may have to constantly interview to get on new projects when you wrap the prior one up.
"We have a lot of redheaded patients, we're looking for someone who has at least 7 years experience working with redheaded patients on a regular basis"
I can't speak to doctors, but I know a few nurse practitioners and jobs will auto-reject if you don't have the correct specialty. A quick search reveals there's at least 13 specialties [1]. "We need an adult gerontology nurse practitioner, not orthopedics."
I thought this was interesting because a common programmer hiring model assumes you can train an exceptional programmer to your specific stack regardless of their existing specialty. I'd argue programming specialties are still broad, maybe frontend, backend, iOS, android, and embedded. Perhaps as the software development matures, we'll see more specialized fragmentation.
All of those specialties exist, true, but they add up to almost nothing. I'd wager that better than 95% of software developers are either web frontend or backend with a small sprinkling of mobile mixed in.
You can train programmers because there is time and there aren’t often lives at stake. Nurses have to hit the ground running in specialist areas where there is (I’d assume) often little time to acquire all necessary skills in order to perform at the required level
I don't think doctors are a useful analogy for software developers. You mention doctors, then people are going to say "we need licensing for software developers" (which for the majority of programming jobs is silly IMO), and the conversation goes off the rails. Doctors are an unusual profession, leave it at that.
plumbers, electricians, civil engineers, architects, structural engineers, etc. All these occupations have licensing requirements. Why is software different?
Chances of people dying from my web app is super slim. Chances of people dying because I bladly wired their house is and it caught fire is a lot higher.
Chances of me dying while developing my web app is super slim. Chances of someone frying themselves with wiring something up when they don't know how is a lot higher.
chances of being miserable in an administrative job^W^Wordinary life because some software product you have to use is making your job worse rather than better are close to 100%.
If you only count deaths, yeah, bad programming has negligible impact maybe. If you extend it to general suffering, it's quite a drag on everyone actually.
And incidentally, good programming can make a world of a difference, too.
So wanting to select for good programming, with even just having a good minimal standard, is a reasonable goal.
The problem is that we're not even sure what makes good programmers and how to spot them, as evidenced by the continuous stream of "I think..." and "Well actually" stories & comments here on HN.
Is bad programming a net negative? I'm not convinced (and it's not just because I'm a bad programmer, I swear!), I think if you only had good programming, you'd have very little programming and that would be concentrated of the areas that the powers that be deem most important: military, finance, police, factories.
Having bad programming gets you a lot of programming. I'd rather have a million people who can each build a house a day that will stand reasonably reliable for ten years than having a thousand people that can each build a house a day that will stand for a hundred years.
GP doesn't say it's never happened, just that the typical programmer isn't going to kill someone with a buggy password complexity validator. By and large, the standard programmer does not hold life and death in their hands when navigating callback hell.
Again, the typical programmer doesn't kill someone when they write a bug. Judging from the backlogs of each company I've worked at, not a single PaaS, SaaS, BaaS, CaaS, DaaS, FaaS, GaaS, HaaS, JaaS, KaaS, LaaS, MaaS, NaaS, QaaS, RaaS, TaaS, VaaS, WaaS, XaaS, YaaS, ZaaS, or other would have a living customer base if one bug == one death.
There are edge cases and there are certainly plenty of times when software bugs can kill people. However, to say that the typical programmer holds life and death in their hands with every keystroke is an extreme over-exaggeration and I think you know that.
These two examples are interesting. They're both cases where what was being created was a system where software was an important component, as opposed to the software written by the vast majority of us where the hardware components of the system are always the same (monitor, keyboard, etc.) This is the same distinction in Diamond v Diehr for when software might be included in a patent. I always thought the US Supreme Court made a good decision there. Unfortunately they were later overruled by lower courts. (For legal experts out there about to correct me and say that lower courts can't overrule higher courts, I wish you were right.)
web apps are a small fraction of the software development world. Software Engineers are responsible for code that runs in hospitals, aircraft, power switching stations, and many many other safety critical systems. In many cases code that was never written for safety critical work is deployed in those environments. What OS and software runs the elevator controls in a hospital or military base? We never know the real impact of our work.
That's really not true. At NASA for example there are standards that need to be followed when designing a system, implementing the code for it, reviewing and testing it, and releasing it. [1]
Yes there will always be bugs but no practice or method is invulnerable to this.
Software in general, in these high risk environments, has been extraordinarily successful in terms of reliability and safety.
At NASA, sure. You can't say that with any certainty for all the other systems in the world where software has a huge impact on daily life and human wellbeing. We can't know for sure because there is no regulation or independent monitoring.
Medical tech has similar standards as does flight control and many other mission critical code bases. Static analysis requirements, limits on certain trusted compilers, libs, etc.
I think you may need more time in the field and observing the reality here. There are unbelievably high standards and practices in many places. Maybe CRUD codebases for a consumer website has critical failures but that doesn’t really matter. People will stop using their site if it’s too large a problem.
Software is different than many technical and engineering fields. Codebases change over time as new requirements come in to extend functionality. Things can be patched. When standard engineering practices are required they are implemented. Yes, mistakes happen too but bridges fall down on occasion.
The whole point of my last comment was that the impact of bad software cannot be fully understood if we don't have ways to monitor and measure it. You are correct that many industries have high standards and many other industries have no need for any standards as market forces will decide, but there's likely a huge grey area in between that we don't know much about.
This is a solved problem per our tax laws. Just because you write code that runs on a server in another state, doesn't mean you pay the taxes in that state.
Different states have dramatically different taxes. Some states have no income taxes.
So in one sense, it's a "solved problem", with the solution being that licensing requirements would be dramatically different based on locality, but in the sense that people want — a uniform standard for hiring software developers — it's not solved at all.
> but in the sense that people want — a uniform standard for hiring software developers — it's not solved at all.
Exact same thing can be said about the hiring process in general. Taxes and employment legal contracts vary from state to state. I am sure employers would love a single contract, no matter where they hire an individual, but that is not currently the case.
I think "Why is software different?" is the wrong question. Why is software the same? Most professions don't need professional licensing, and it's not clear that the economy would be served well by adding licensing requirements.
if you look at it economically, maybe. It's a complex problem. The economy doesn't benefit from contractor licensing either, but the consistency reliability and quality of our infrastructure does.
The reliability of licensed contractors is... questionable. ;-) In some cases it seems pretty silly. For example, beauticians need to be licensed, even though they make very low average salaries, so it's not particularly helpful to them, and it doesn't stop some of them from giving bad haircuts.
The mention of contractors brings up an important point though. Many people support software developer licensing because they believe (mistakenly IMO) that it would make hiring easier, but not all software development is done by employees. In a licensed profession, you cannot legally practice the trade, not even as an entrepreneur, unless you have a license. Are we to apply this same standard to software development? Nobody can write software without a license from the state? Is that even possible? What about the people writing consumer software alone at home? Can nobody even publish a web site with HTML and JavaScript without a license? A web site is essentially all you need to create a billion dollar business, so either licensing prevents that from happening, or licensing won't really be a uniform standard for the software industry.
Mark Zuckerberg was a college dropout. Thus, he wouldn't have a license. No Facebook. Maybe you're ok with that, if you hate Facebook, but nobody really thinks the problem with Facebook is that Zuck was an incompetent programmer. In any case, software development licensing would put up a major barrier to entrepreneurship in the tech industry.
All these roles have certain code they have to work to. A plumber can't just go into a home and install something outside of code.
Software is generally rather ephemeral and without a code to write or build to. We have "best practices".
Yes, some software is built under engineering assumptions - airplane software, etc. NASA has a standard they write code to and software engineers are expected to work within these confines. Part of the code requires reviews of written software, etc. [1]
>A plumber can't just go into a home and install something outside of code.
That is....not true at all. A plumber/carpenter/electrician works to code under threat of losing their license. Additionally your building could be exempt from code for numerous reasons (grandfathered/historical, outside of city limits and no county building codes/etc.)
Developers and Software Engineers don't have this threat.
Right, if they continue to do things short of code (when required, etc) they'd lose their license. They have to work within the confines of the code, where applicable.
Software engineers will certainly lose their job if they don't ship code to standards set by the company they work for. Someone writing code for an airplane is going to have a different type of standard than someone writing code for video game, however.
Why would it make sense for a government agency to set a code for software? It literally makes no sense as different problems have different requirements.
In an ideal world, yes, at least to a certain extent. How many times has the security of entire phones been compromised because of an app?
Obviously software written for use in medical devices and banking systems should be held to a higher standard, but the same can be said for other licensed professions. A plumber installing a fire suppression system in a 50 story high-rise would similarly have their work held to a higher standard than someone setting up a rain barrel for their garden.
Personally I find the quality and vetting process of software designed to be installed on the same device that most people use to manage their online banking and carry on their most intimate conversations (often using said software) to be so low as to be considered criminally negligent by the standards of any other respectably industry.
> plumbers, electricians, civil engineers, architects, structural engineers, etc. All these occupations have licensing requirements. Why is software different?
There are plenty of journeyman carpenters that do not have a license, this is not a problem as long as they work for a company that is licensed.
How do you define mature? Is it about stability? There are newer and more modern methods of construction and engineering and the field is always evolving. Maturity in those fields is about consistency and agreements of best practices enforced by standards and regulations. Software is not mature because it's not regulated. If you want software engineering to mature and stabilize, it needs more regulation.
Are you sure? Construction materials are evolving and changing every few years (engineered lumber, modern environmentally friendly methods, etc) whilst we still use base operating systems designed in the 60's for most of our services.
yep, both are significantly different in many way, houses built 50 years ago have a lot of differences to modern houses. Software from 50 years ago, is also significantly different but the fundamentals of both are the same, foundations, walls, roof trusses, siding, filesystems, operating systems, processes, threads, data structures etc. We may use Go instead of C and we may use engineered lumber instead of Douglas Fir for door headers.
last 50 years of change includes modern nail guns, engineered lumber, hurricane anchors, plywood roof sheathing, vapor barriers, and countless other differences in how homes are built and the tools we use to do it. There is nothing special about software, other industries also evolve and grow their methods and tools. We just change software with reckless abandon and little regard for the reasons we started down any given path in the first place.
exactly - it is time for the computer science and software engineering professions to have trade orgs and unions so those who are qualified can practice the profession and get paid and respected like other professions that require years of college education.
On the other hand, if software developer were trained as doctors...
Doctors spend many years doing hands-on work under more experienced doctors, free clinic hours, 30+ hours shifts, lot's of grunt work and specializing on a very narrow field.
They end up training for 10-15 years at least before they can really be independent.
Lots of people show up at software engineering interviews with barely any training, and sometimes with really bad habits. If you do a lot of interviewing, you'll find there's many people who have been working for years, basically ripping off employers, and in many ways they're unaware of their shortcomings.
The saddest cases are when you have someone with some seniority, smart and some potential, but they grew up alone (to put it somehow). Either without a mentor (where they're smart but work in a vacuum) or with a bad mentor and picked enough bad habits to make them dangerous.
They have so many things to unlearn, that you should hire them for a much junior position than their resume experience would indicate. In general that's a no hire situation, it's much better to hire inexperienced developers and just train them properly.
If doctors were really interviewed like programmers, it would be possible to get into top medical position without a major degree. I only have a BS in computer engineering from a mid-tier college, but I was able to get into two FAANGs based on passing the interviews and using skills I learned outside of college. And I know people in similar positions who have a worse formal education but were also able to get into positions that pay better than most doctors in the US because they were able to teach themselves the required skills and learn the rest on the job.
This doctor vs programmer comparison would also be more useful if there was an order of magnitude difference in effectiveness of doctors. Compare that with the order of magnitude difference in the utility of the systems that programmers can build. There are no real "10x" doctors except for those with medical + management training that can do things like set up a new hospital in an impoverished country and revamp their medical system. But it's much more likely to have programmers that can build systems with many orders of magnitude difference in terms of QPS or a similar utility metric. That is, there is no version of Big-O notation for doctors that matters as much as the big O notation for programmers.
What is your salary? What is the salary of a doctor?
You're probably aware of the first but not the second. Just so you know, doctors are not paid little and developers are really not paid that much in comparison.
You should also consider that FANG are 4 extremely selective companies only existing in the valley (the cream of the crop) while doctors can work pretty much anywhere in a country and do very well.
For the hours they have to work and the conditions they have to work in... doctors are paid ok.
You'd have to pay me a hell of a lot to have to drive to a hospital each morning and stand around on my feet for a 48-hour shift dealing with high-risk problems and real people all day. No thanks.
I think they do it for pretty reasonable compensation considering.
Medicine does have a strong culture of ongoing technical interviewing.
The OSCI is done on a weekly basis by most first and second-year medical students in the US. By the time you come in contact with real patients (as a student), you've done the equivalent of nearly a hundred technical interviews. It's increasingly common to be doing them both in Spanish and English as well.
"It is designed to test clinical skill performance and competence in skills such as communication, clinical examination, medical procedures prescription, exercise prescription, joint mobilisation/manipulation techniques, radiographic positioning, radiographic image evaluation, and interpretation of results."
"An OSCE usually comprises a circuit of short (the usual is 5–10 minutes although some use up to 15 minute) stations, in which each candidate is examined on a one-to-one basis with one or two impartial examiner(s) and either real or simulated (actors or electronic patient simulators) patients.
Each station has a different examiner, as opposed to the traditional method of clinical examinations where a candidate would be assigned to an examiner for the entire examination. Candidates rotate through the stations, completing all the stations on their circuit. In this way, all candidates take the same stations. It is considered to be an improvement over traditional examination methods because the stations can be standardised enabling fairer peer comparison and complex procedures can be assessed without endangering patients health."
If getting into school for CS was as hard as med school applications, we wouldn't need tech interviews. Also you totally need to do unpaid bullshit to become a doctor! Plenty of med students have to volunteer at clinics or do unpaid/low paid lab jobs. I don't get this assumption that other careers don't have bullshit unpaid labor. Pretty much every career requires some.
The difference is we entrust doctors with ethical and moral power predicated on hundreds of innovations which can kill or harm their patients.
In contrast, we entrust SWEs with massively scaled applications with moral and ethical implications that can lead to societal change like misinformation and indirect death.
On a similar note, there was a satirical interview about hiring a carpenter with an experience working on brown rounded rectangles or something like that - can anyone find it?
I think the field of software engineering is doing quite well with its interviewing compared to other fields. Having all of these rigorous interviews sometimes ends up evaluating people based on things that shouldn’t be so important, but the upside is that you can be far less reliant on credentials.