10 ms·
Executing Software Engineers for Bugs
- deleted 11y ago[deleted]
- hlieberman 11y agoThose of you with a membership in ACM or IEEE, I'm interested in hearing your thoughts on why you do. Those of you who don't, would you consider pledging yourself to a code of ethics if they met your requirements? What would those requirements be?
- trentmb 11y agoIf it meant having a job or not, sure I guess.
- hlieberman 11y agoWhat if sticking to it meant that you'd have to resign? A code of ethics that you have to sign for work is one thing. A code of ethics that you hold above employment is quite another.
- trentmb 11y agoOn the spot? Probably not, no. I would begin looking for work elsewhere though, possibly in a different field.
- slavik81 11y agoProgrammers are well-paid and have excellent employment prospects. In the off chance I did encounter an unresolvable ethical issue, it would not be very hard to resign and find new employment elsewhere. Given how much better off I am than most other workers in this country, I think it's a small sacrifice. To address the thread topic, I'm a P.Eng, ACM member, and IEEE member.
- hlieberman 11y agoAre you a P.Eng in software, or something else? (I know there are only a few places in the United States where you can even challenge the PE exam as a software engineer).
- slavik81 11y agoI'm a Canadian. My degree is electrical, but my field of practice is software engineering.
- PhasmaFelis 11y agoAnd this is the problem in a nutshell: "I'm okay with trying not to hurt people, as long as it pays better than hurting people does." I wonder if the real difference between software engineering and other engineering disciplines is that they have a culture of responsibility--of saying "hey, public safety is more important than money"--and we emphatically don't.
- barrkel 11y agoShipping with bugs is a fact of life. Living with tech debt is an economic necessity because if you don't some other company will and they'll eat your lunch. The comparison with physical infrastructure doesn't really hold up. I've been a member of ACM primarily because I wanted easier access to ACM library papers, but not any more. I'm uninterested in turning software engineering into a gated discipline with a professional organisation acting as a monopoly keyholder. Software as a discipline affects too many areas of life for anything much more than a vague platitude as a code. Components may be used for good or evil in ways we can't control. Even something as potentially evil as Metasploit is also almost exactly the same thing you want to use to test for vulnerabilities (personally I would not write a plugin for it).
- WildUtah 11y agoIf it were possible to commit programmers to a code of ethics, it would be possible to do what most professions do an organize to protect the careers and incomes of professionals. On top of the code of ethics would soon be refusing to work on any team with H1-Bs, just as doctors, lawyers, and accountants don't work with any peers who haven't passed the same qualification hurdles as they have. I don't like the idea of extensive central regulation, but it might well be better for programmers' lives.
- lambdapie 11y agoEconomically putting up barriers for the sake of it (aside from valid issues of qualification required for the public good) is bad policy. It's good for the people who can get the qualification, but bad for everyone else. When you average it out, it's worse for society as a whole (this is roughly implied by the Welfare Theorem's of economics). Your argument that other professions do it is invalid. In fact the government should be more proactive in ensuring that professions only impose valid conditions on employment, and don't add spurious requirements in order to exclude people from the profession, in order to, as you say "protect [their] careers and incomes".
- WildUtah 11y agoProgrammers have to compete with doctors, lawyers, accountants, actuaries, nurses, dentists, schoolteachers, and pharmacists when we buy a house or seek to influence decisions of the companies where we work. We have to compete with them in income, prestige, bargaining power, moral influence, and credibility with financiers. We have to pay the higher wage rates they have achieved when we need their services. Unilateral disarmament has already led to a situation where 80,000 unregulated immigrants every year are competing with us while those regulated professions see few or none. We're not going to see them de-regulate in any of our lifetimes, because the theorems of economists don't persuade anyone -- except possibly computer programmers and we don't have any power or influence because we're not united to get any. So the best option is obviously to at least organize to get a fair shake. But so far there are few signs of that.
- tsotha 11y agoMy ethics are my own. I see no reason to make a public spectacle out of it one way or another.
- mannykannot 11y agoI think you are putting the cart before the horse here, because current practice of software development is in a different universe than the one in which it is done as responsibly as you propose, and a developer's code of ethics is not the tool to move us there. There have been projects of the sort you propose (the space shuttle software comes to mind), but they are few and far between, and it simply not possible to quickly change the industry in general without completely replacing it. Putting aside the technical challenges, it simply is not economically feasible - we don't have the resources. The situation was very different with the Quebec bridge. At that time, the practice of quantitative engineering had advanced to the point where large, safe bridges could be reliably built, and all that was needed to make it happen was to deal with some human problems leading to sloppiness. The desired outcome was within grasp, and the public demanded it. Until the practice of software development reaches those points, a code of ethics is not going to make it happen. The department store collapse shows that engineering ethics need to be supported by society to be effective (and by support, I mean more than just lip service, and the support has to come from the people who set the agenda.) Edit: Let me explain further what I meant by 'quantitative engineering'. Bridge designs are analytically verified to ensure that they meet a formal set of safety requirements before they are built. In contrast, almost all software is built and then tested (and fixed, and tested...) against an informal specification (even in iterative and agile methods, the building of parts precedes their testing, as it must.) Analysis is relatively much less important, and is generally informal.
- kabdib 11y agoWe can write software like this. The reason why we don't has been explained many times: It's too expensive, by many orders of magnitude.
- hlieberman 11y agoI don't mean to say that all code has to be bug free; certainly, I hope the life-safety critical code is. But I think we, as hackers and software engineers, need to consider the ramifications that bugs can have, and then making the decision based on that balance of risk. Take an anonymous currency system, for example. Handwave away whether or not that it's actually possible to build one -- let's say you have a way to create electronic, untraceable money, and let's go one step further and say that there's no personal risk to doing so (e.g., it creates no criminal or civil liability to doing so, and costs nothing). Do you build that, or not?
- WildUtah 11y ago"Take an anonymous currency system, for example....Do you build that, or not?" Obviously you do. I don't understand why that would be a question.
- hlieberman 11y agoEven knowing it's likely to be used for buying and selling drugs, child porn, and assassinations? I personally believe that, even given those potential ramifications, the benefits outweigh the costs -- but my personal balance of those is not everyone's.
- GauntletWizard 11y agoYes, because it will also be used by marginalized groups to buy groceries, by sex workers who would otherwise be stuck paying huge commissions to pimps, to help hide who is buying anti-goverment printings. Every tool can be used for evil - Your drill is just as capable of drilling through someone's skull as wood.
- Eridrus 11y agoWhen people bring up a code of ethics, actuaries seem to come up a lot because they can potentially lose their license for mis-evaluating risks, but anecdotally what I've heard is that in reality if your boss asks you to sign off on something, and you refuse they'll find someone else to sign off on it and just label you as not a team player. At which point you've harmed your career and had no real impact. I bring this up because when people propose a code of ethics, they assume it will help, but I'm not really convinced that we will really get to a point where codes of ethics are widespread and taken seriously enough that they will do anything but harm the altruists among us.
- hlieberman 11y agoThat's true. Is there a value to refusing to do work, even though it might not be able to stop something from being built in spite of it? If you know, a priori, refusing to work on something you consider to be unethical will have /zero/ effect on the overall project, but negatively affect you, is it then ethical to do the work, or are you required to fall on your sword?
- eloff 11y agoYou can draw parallels to the people who worked for the Gestapo in Nazi Germany. Was it unethical to follow orders to round up Jews and others for near certain death, if you knew you would be severely punished if you disobeyed? At the same time you know that if you refuse, the next guy won't. So why fall on your own sword? I think a lot of people flippantly say they would refuse the order, but it's easy to say that when it's not your neck on the line. Truly a deep moral dilemma.
- tgroshon 11y agoYou're so right! It's the worse kind of dilemma: the kind that people outside the situation will claim was easy. Personally, I think the Zero-effect case should not be cast aside lightly. Pragmatism is a legitimate ethical model.
- femto 11y ago
- zellyn 11y agoThere's no such thing as bug free code. So yes, I've deployed coffee I knew had bugs. And if I took twice as long, and spent the extra time checking, it would still have bugs...
- WildUtah 11y ago"Executing Software Engineers for Bugs" Never have I been prouder to be a plain old programmer. Those software engineers, architects, systems analysts, and data scientists can keep the capital punishment for themselves.
- exmicrosoldier 11y agoUntil it is the CEO..CTO..and vc that is standing under the bridge...nothing will change.
- roel_v 11y agoHow would they know whether the bridge is designed badly? What's the reasoning behind your underlying suggestion?
- TeMPOraL 11y agoThe reasoning is, I guess, that it's usually not engineers that introduce serious problems and vulnerabilities to software, but management and sales introducing unreasonable demands and not caring about the product any more than how much money it brings.
- lazyjones 11y ago> How would they know whether the bridge is designed badly? It's their responsibility. If it's not possible for them to comprehend the design and execution thoroughly enough, they'd better make sure they had someone check it whom they can trust to understand it. Like ancient builders, who didn't lay every stone themselves, but were still responsible for the outcome. Perhaps our standards for responsibility of leaders are a little low these days.
- tsotha 11y ago>But making the leap from that to "my code can't harm people" is a bridge too far. Meh. My application is an internal app for a large company. It's basically scheduling software for a part of our business process. To even start to hack it you'd first have to break into the corporate network, and in the end you'd have data you didn't care about. Hell, I'm not even sure the people who use it care. Worst case, a subtle bug (and it would have to be subtle for my users to miss it) might cost my employer a few thousand bucks. Again, meh. There are a whole lot of internal applications that fall into this category.
- nickcano 11y agoThat's not the right way to think about it. Just because you cannot imagine a way your software can be used to attack your company or harm the users, doesn't mean such a thing is impossible or unlikely.
- powera 11y agoNo! This is the equivalent of saying that kids shouldn't have chemistry sets or be able to play on jungle gyms. Saying that critical infrastructure needs to be "bug-free" is one thing, saying that dating site apps need to be is ridiculous by comparison. And even in the case of bridges and the like, they do have a tendency to collapse to earthquakes, wars, and the like. Given enough time, most everything has bugs.
- mannykannot 11y ago> Saying that critical infrastructure needs to be "bug-free" is one thing, saying that dating site apps need to be is ridiculous by comparison. I think you are right, up to the point of security. The problem comes when the handling of customers' credit cards is treated as if it were just a dating app.
- joe_the_user 11y agoOK, I think we all can agree that programmers almost never begin a project with the intention of causing harm. All the examples cited involved situations where immense pressure applied by higher-up impel a programmer to knuckle-under and agree to such approaches. The solution that is offered seems very specific to now - we take the fall guy who caved in to one sort of incentive and we put an opposite incentive on him to force a different behavior (btw without removing the first incentive). How fucked-up is that? Obviously, the better, saner solution is removing the existing perverse incentives, giving software engineers more leverage in decisions, punishing high-ups if they don't give software engineers autonomy to make decisions. And heck, execute the CEOs when the bridges collapse. The bucks should stop with them, right?
- hlieberman 11y agoThe problem becomes... what if the CEO is unaware of it? Volkswagen, for example. It is highly unlikely in my mind that some engineer somewhere in the trenches decided, in desperation, to add in a few lines of code to make sure the engine passed emissions tests. But, do I think the CEO of Volkswagen signed off on adding the code? No. There's a diffusion of responsibility that makes it hard to point to any given person after the fact. How can we arm people - software engineers, but product designers, project managers, QA engineers, CEOs, and the welders on the assembly line can say, "Hold on, stop, this isn't right!"?
- joe_the_user 11y agoI think that shows the limits of the punishment after the fact approach. The point is to demand that companies create an atmosphere where professionals have some autonomy to make decisions based on their expertise rather than the good of the company. Unfortunately, the trend is things going the other way for virtually all professionals, not simply almost-professionals like programmers.
- linuxkerneldev 11y agoThis author's first sentence is: "There is an apocryphal tale I've heard many times about how, in Ancient Rome (or, in some tellings, Greece), the engineers responsible for the construction of an arch were required to stand underneath it as the final wooden supports were taken out." This story is derived from Law #229 of the Code of Hammurabi (of Babylon). Babylon was not part of Greece, but it was very briefly part of the Roman empire. " 229 If a builder build a house for some one, and does not construct it properly, and the house which he built fall in and kill its owner, then that builder shall be put to death. " http://avalon.law.yale.edu/ancient/hamframe.asp http://avalon.law.yale.edu/ancient/hamframe.asp
- trynumber9 11y agoGood point. However, it was part of the Hellenistic empires for more than 180 years. Alexander the Great even died in Babylon. It was subsequently ruled by the Seleucus dynasty, even after the inhabitants of Babylon were transferred to Seleucia. Not that it has anything to do with the Greeks putting engineers under their arch.
- JoeAltmaier 11y agoMy Dad told the tale of a farmer coming to the repair shop with a tractor gas tank needing repair. The mechanic refused. The farmer insisted he'd cleaned the tank; no danger of explosion while it was being welded. The mechanic replied "Ok, I'll weld it, if you hold it while I'm doing that." The farmer left.
- lambdapie 11y agoI'm not a big fan of professional bodies or mandatory qualifications. I think these tend towards rent seeking, with these bodies existing mainly to justify their own existence. In the case of software engineering, I'm especially concerned about academics with little real world experience using valid security and privacy issues as an excuse to force their own view of how software engineering should be done on everyone else. That said, my employer has standards for security and privacy that go well beyond industry norms, so if I was working elsewhere maybe I would feel the need for better standards across the industry. In my experience, software engineers tend to be conscientious. Caring about the big picture is a big part of open source, hacker and nerd culture. But knowledge is hard to come by. I learnt from the experts, but I doubt most engineers would be able to build a simple CRUD app form scratch without major security holes. It would be nice to see some best practices around security and privacy emerge without forcing everyone to write Ada or Coq or completely change their approach to writing software.
- mirimir 11y agoSome Mexican drug gangs do execute engineers for fucking up. And they recruit by kidnapping family. Hardball capitalism, for sure :(
- studentrob 11y ago> Unlike our brothers and sisters in the other engineering disciplines, though, software engineering does not have the same history of mandatory formal education. Was there a time when other engineering disciplines were not formally schooled? Did they develop into having formal education or were they born that way? Is computer programming moving in the same direction via organizations like the ACM? Can we learn from other fields who have in fact experienced similar issues on some level? Do we need to reinvent the wheel of creating an effective culture that rewards all the values humans desire? What are those? Success, ability to express oneself, ... ?
- Kalium 11y agoIf anything, with the advent of bootcamps, software engineering is moving away from formal education and into trade schooling. Personally, I think this is a step backwards for the discipline.
- TheSpiceIsLife 11y agoI resent a little bit. I'm a boiler-maker / welder by trade (metal fabrication). My trade certificate actually says "Engineering Tradesperson". I operate a laser cutter, and have written scripts to automate some of my computer related tasks, and have a rudimentary understanding of Python. I've also worked at an ISP in NetOps doing physical security and infrastructure. I live in Australia so I can only speak for the system we have here: trade school is formal education, the on-campus component of trade education is delivered throughout the nation by TAFE[1] campuses. We are formally educated to build things that don't kill people, and can certainly be held responsible if our actions or omission of action leads to injury. We are expected to escalate anything we see on workshop drawings that could be problematic. Each of the tradesmen in our workshops are required to perform a weld test every six months, which is examined using ultrasound techniques, to ensure our work meets or exceeds AS1554[2] While us tradespeople aren't the ones engineering the bridges, we are the ones building them. Comparatively, the software development discipline is still in it's infancy, whereas the construction trades have been around for millennia. Structural Engineers and tradespeople build physical structures to withstand Category 5 cyclones, but my bank (in the top 10 globally by market cap) can hardly have a month go by where some software system doesn't fail. The advent of bootcamps is probably a side effect of 'coding' becoming relatively easy compared to it's more esoteric history, with the advent of high-level languages like Python and Ruby. Or maybe that stuff about the average IQ increasing over time is correct, and more people have the capacity to understand writing code. Probably both. Another comment here spoke about TDD - Test Driven Development, that's probably closer to the physical engineering disciplines with destructive testing of random batches of building materials. 1. https://en.wikipedia.org/wiki/Technical_and_further_education https://en.wikipedia.org/wiki/Technical_and_further_educatio... 2. https://infostore.saiglobal.com/store/PreviewDoc.aspx?saleItemID=2247480 https://infostore.saiglobal.com/store/PreviewDoc.aspx?saleIt...
- exabrial 11y ago140ce? What the hell does that mean?
- satori99 11y agohttps://en.wikipedia.org/wiki/Common_Era https://en.wikipedia.org/wiki/Common_Era
- studentrob 11y ago> If we were required to "stand under the arch", as it were, how many of us would have pushed back against things that our employers asked us to do? We can't achieve this consistently with privately owned software. Software must be public and transparent to have consistent accountability. In the case of Grindr, for example, I assume we don't know exactly who wrote the original code. And the company would probably protect that information. I believe those who contribute to open source software can and do subscribe to the author's desired level of accountability specifically because they know everything they write is available for public scrutiny for eternity.
- rumcajz 11y agoEffective code of conduct requires stable environment, people knowing each other and so on. No way it can be implemented in profession that's booming at the rate programming is.
- cronjobber 11y agoRegarding the various calls that it should really be the CEO who gets executed, I'd wager those ancient bridge builders probably were the "CEO" of the relevant bridge building operation. Specifically, they probably managed substantial funds obtained from some Royal and had plenty opportunity to trade-off between personal profit and structural integrity. Calls to transfer the idea to today's lowly programmer drone would be akin to ancient bridge builder absconding with substantial extra profit after convincing his Royal that it really should be the bricklaying crew who should line up under the bridge.
- kickingvegas 11y agoAn old observation, but still relevant: We really have no liability in our profession, compared to other licensed professions. Why does software quality suck? Because our customers almost never sue us if the work we do does not meet expectation.
- SolarNet 11y agoI think this is the problem, solving people caring about software would also make them more likely to prefer more open (e.g. open source) designs.
- incanter1 11y agoWhoever claims that he never saw his software deployed to production with bugs has never written anything of any complexity. Adding "... he knew about" to that statement softens it a little, but not too much. Problem comparing software engineers to the civil engineers lays in the ability of the latter to constrain their users, e. g. stating the weight limit for the bridge. Try to do that with software and enforce it.