6 ms·
Our industry needs to take the 'Engineer' part of Software Engineering a lot more seriously. A professional certification to use the title is looking more and m
by cameronbrown 7y ago
Our industry needs to take the 'Engineer' part of Software Engineering a lot more seriously. A professional certification to use the title is looking more and more important with each incident like this, otherwise developers have no teeth to push back when flaws like this are brushed aside by management to save money/reduce costs/etc.. Cyber security, data ethics,.. many things in programming could benefit from certification, and having to legally sign off on your own work.
- jhayward 7y agoMCAS was designed by aeronautical engineers, not software engineers. The exact sensors, function, and responses were all specified by aero engineers. The software, as far as we know, was produced using acceptable software engineering processes and functioned exactly as designed. What, exactly, do you think a PE cert for a software engineer would have done here? Do you think the software people should have refused what the aero people certified as safe?
- mjevans 7y agoRequire signing off on something as an Engineer that they understand the scope for which this unit is being utilized and that it is reasonably safe according to the best practices known at the time and their own full and complete understanding of the context. It gives legal teeth for them to say; "No, this has not yet been proven to be safe, I cannot sign on to that". However at the same time a union or guild is required so that management doesn't penalize for being a moral engineer versus a rubber-stamp engineer.
- jhayward 7y agoAre you suggesting that these hypothetical software engineers would substitute their opinion for the expertise of domain expert engineers? Or would a software engineer doing flight control software have to first be certified as an aero engineer before touching the keyboard? (Aero engineers do not use the PE system, btw). How about people doing software for medical systems? Would they have to go to med school, do a residency, and pass medical boards before coding? How would this work? Because refusing to accept specifications from domain experts and substituting your own is a great way to attach personal liability to yourself for something which you are not trained as an a reasonably knowledgeable lay person, much less an expert. I doubt any software engineer could obtain professional liability insurance if that was the practice.
- mjevans 7y agoIn such a case the Avionics Engineer (or whomever's actually designing the flight worthiness and characteristics of the overall system) would produce a white paper that fully describes the operational limits of the system under various conditions. Such a white paper (and it's attached references alone) should be enough to create a fully working simulator; it would also be what is used by the software engineer to confirm that the model they have made behaves within anticipated limits; and probably also would require human review (pilots in the sim, running against the real software with simulated inputs). That's the TYPE of thing I expect to happen in this context.
- jhayward 7y agoAnd how, exactly, did the software engineers at Boeing stray from this hypothetical process, one which is not used in any specialty? The job of the software engineer is to correctly implement the given spec. As far as anyone knows, that was done. There is no one, in any industry, that wants their software engineers to say "I'm not moving forward until I've seen the validated medical testing and lab results that this design is based on. I will also need you to run a several year safety trial, provide multiple attestations that the design is correct by end users, regulators, and independent auditors, before proceeding." What you are suggesting is ridiculously impractical. The specialties rely on one another, and if the controls and human factors people have signed off on the design spec that's what the software engineers should faithfully implement. During implementation, if it becomes apparent that there are states the system can get in to that are not called out in the spec that obviously requires re-engagement. But that's not what you are suggesting as far as I can tell.
- jeremyjh 7y agoWith this power, comes serious responsibility. If an engineer signs off on a design that they know to be fundamentally unsafe, that engineer has liability regardless of the internal pressures placed on them.
- ummonk 7y agoThe incentives just aren’t there though. Performance reviews are all about impact, and engineers who focus on quality instead of impact are worse off in career advancement. Likewise with the incentives on companies; companies that do slow but careful development get overtaken by faster moving competitors which reward impactful employees. And it isn’t even clear to me that most consumers would prioritize security / stability over feature-sets when choosing software.
- cameronbrown 7y agoCouldn't you make this argument about a mechanical engineer?
- jeremyjh 7y agoThis is already the case for mechanical engineers, or any other Professional Engineer.
- olliej 7y agoHow does a software engineer know that something is safe? Do they need to be aerospace engineers as well? Do they need to go over the full schematics of the hardware their software is running on?
- salawat 7y agoYes! If you are in a context where your software has significant implications on the state of a physical system, you must be willing to work with the other engineers to make sure you've accommodated all the eventualities you can. Part of being an Engineer is knowing what you don't know, yet following through and making sure you connect with the people who do in order to ensure all relevant questions are asked and answered.
- booleandilemma 7y agoMost software engineers don’t even have a college degree in computer science, and now we want them to get a professional certification? Good luck with that. https://stackoverflow.blog/2016/10/07/do-developers-need-college-degrees/ https://stackoverflow.blog/2016/10/07/do-developers-need-col...
- mattr47 7y agoThe title 'Software Engineer' is an over used term imo that describes any developer out there. That title should be reserved for those that have the same credentials as an ME, EE, etc. Someone who is a CS degree holder or a self taught comp dev have in no way the same training as someone with a CE degree. Engineers are able to take their PE exam in either CE or SE. https://ncees.org/engineering/pe/ https://ncees.org/engineering/pe/
- barbecue_sauce 7y agoLooks like they are discontinuing the SE exam.
- kevin_thibedeau 7y ago> Engineers are able to take their PE exam... Provided you have a PE credentialed coworker who can vouch for you. That is a chicken and egg problem for most people in an organization with no PEs.
- edoo 7y agoI'm self taught and blow most out of the water with software and hardware engineering. Most college degrees, even for CS majors, are a joke.
- cameronbrown 7y agoIf anything you've just reinforced my point that there needs to be a higher barrier to entry when dealing with software that can critically affect human life.
- 7y ago
- flattone 7y agocertifications are nonsense I hear this everywhere I go any time I mention oh I'm thinking about doing XYZ certification it's like don't waste your time doing that just learn what you're talking about and prove it certifications have a lot of work around sort whatever anybody can study and pass a test doesn't mean you can do the work
- thrower123 7y agoSoftware certs have a bad name because of things like Oracle and Microsoft multiple choice tested certifications that are cheated outrageously, and crap like one-day certified ScrumMaster nonsense. Probably the better model would be the apprentice/journeyman/master progression from the medieval trade guilds.
- epicureanideal 7y agoBut how do you establish the ranks, and who oversees the process and ensures friends don't up-rank their friends?
- flattone 7y agoUpranking/Promotions: At search arm of alphabet don't they do reviews by not directly involved employees - eg relevant enough to review your perf - distant enough to avoid some bias. This may have been interview only, and may have been even further limited in scope than across search arm itself.
- antt 7y agoSo one so outdated that no discipline uses?
- flattone 7y agoanti degree anti cert anti everything arbitrary $ barrier
- olliej 7y agoFirst off, this is nonsense: the software was doing exactly what it was meant to (and designed to) do. Hardware engineers chose not to provide multiple sensors to validate AoA, hardware engineers did not provide a human-capable override. MCAS was designed to not be disabled by pilots, because doing so would make the plane a different aircraft according to the FAA. Anyway I have yet to see a software related “certificate” that isn’t rote-learnable, comically high level, or both. You also have to ask, what are you certifying? All of these are fairly trivial to avoid in small programs: * Use after free * time of check/time of use * out of bounds * numeric overflow Especially in any kind of test environment where you are being extra careful. Then there’s the language problem: many engineers have to use multiple languages, some only have to use “safe” languages. Should you require a different cert for each? You’re also saying “not everyone gets to write software anymore” because the certification won’t be free. How does open source then work? Clearly people working on the Linux kernel should be certified, so now you’re saying Linux should only accept patches from people who live in countries that can provide the required certs.
- tjr 7y agoYou also have to ask, what are you certifying? Currently, the avionics software is certified, not the software engineer. The FAA-delegate safety reviewers get special training, but otherwise a bachelor's degree in a related discipline is the standard for an individual contributor's formal education. There is arduous process in place to help ensure that commercial avionics software is produced to an acceptable level of quality. Problems can still get through, but the process helps weed out a lot of issues that you'd likely see in non-safety-critical software.