Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

When a building without enough exits burns down and kills 100 people, blaming the construction workers who built it isn't going to help anything.

It's rare that it's developers who actually come up with these ideas, they're usually just employees implementing someone else's plan.

Unless we're talking early startups--then there's a good chance the developer is responsible.



What a strange comparison. Would you consider it equally unjustified to hold construction engineers and architects responsible for constructing a death trap? Even if that is what the customer ordered?

It's probably not a coincidence that engineers and doctors are professionals well known to place their own ethical standards above their customers. It is expected that a doctor refuse to carry out a procedure that puts innocent people at harm.


A doctor can lose their license for malpractice. A lawyer can be disbarred. Architects and civil engineers will lose their license if they knowingly create an unsafe structure.

These professions have codified standards, licensing, and membership requirements for practitioners. There is a real incentive to conform and maintain your license because otherwise you cannot work. In these professions you know the standard of ethical behavior and you can reasonable expect your fellow professionals to also refuse questionable requests. An unethical client is going to have a hard time going down the street to find someone else who is willing to do what you won't.

I'm not trying to excuse the bad behavior of some software developers. My point is that the software industry and profession lacks much of what other professions have established in order to maintain high standards.


You're comparing situations where ethical violations put lives truly at risk with situations where someone is possibly induced into (but can fully opt-out of) a larger sales transaction?


Yes, and it seems to be a fair comparison to me. Both the unsafe situations and fraudulent situations can be avoided by the adherence to standards, which the software industry currently does not have. The other industries mentioned do, and they seem to work quite well.


Of course it seems like a fair comparison to you, it's your comparison. To everyone else, putting it as nicely as possible, it's very off. Software that has the potential to cause serious, directly attributable material harm to lives is already heavily regulated: The FDA regulates medical device software, the FAA regulates flight software, the FTC regulates communications software, etc. For everything else, there is court. If you buy a laptop with a lithium ion battery that explodes and causes you burns, you will probably be rewarded handsomely in a suit. If you want to sit here and try to argue in front of a judge that dark UI patterns are causing you some sort of material harm, by all means go for it in court. My advice to you is you probably won't get very far / laughed at.


Fine, substitute "accounting fraud" then. That's a more direct comparison: fraudulent accounting practices or fraudulent e-commerce practices. Nobody dies; somebody gets ripped off.

The point is that accountants are professionals and have professional standards that they adhere to. Software devs are not and do not.


"Nobody dies; somebody gets ripped off."

One often overlooked relationship I find to this sort of argument is that economic harm is somehow independent of physical harm.

While in the purest theoretical sense, its obviously clear/true, the more we abstract parts of life away to monetary valuation and control, the more economic effects have real serious indirect physical consequences.

So someone lost a few bucks due to a manipulative ad? Most the time this has no serious consequences as devious as it may be. However, when lost assets become more significant or lead to serious economic distress, it can and does directly result in health effects that have physical consequence.

Obvious extreme examples include cases of financial ruin that lead to mental health distress leading to suicides. Small repeated loss could also lead to unhealthy lifestyles over time coupled with poor financial choices resulting in limited to no access to preventative healthcare... directly leading to a cause of death (say heart disease from poor dieting).

Practices of advertising from the tobacco industry in the past provide a good model for how these can effect peoples choices which over time had serious physical consequences--the main difference being the tobacco industry actually provided a dangerous product that their behaviours pushed. Arguably consumers have to actively make a choice to follow through but with enough data, people are tending to be more and more easily manipulated.


Software developers are not professional lawyers, businessmen or psychologists. It is therefore not their job to judge whether to implement functionality that sells things you don't have. The only way they could be held accountable in the ways tou want is if we force them to be expert in every field in existence so that whenever they implement software related to it they understand the implications fully.


> it's your comparison

Nope

> To everyone else, putting it as nicely as possible, it's very off.

As one of the other people, I disagree.

Also note that a lot of the trade regulation groups like the bar associations also ensure a good standing in the "community", so they would sanction whatever equivalent lawyers have to dark patterns, if they were frequent enough/egregious enough.


If I adhered to standards I would have forced password rotation (a shit policy) because the standards are behind me. They only recently changed. I was right all along. I literally protected people's data when the standards would have put them at risk. No, thank you.


It's a perfectly apt comparison. Software "engineers" are not actually engineers. We are not professionals, we are wage labor.

* No professional code of ethics.

* No professional body that oversees the profession and sets standards.

* No licensing or certification (except maybe in Canada).

I'm sure I'll get a bunch of flack for this, but it's well past time developers stopped indulging in classist self-flattery pretending they're the peers of doctors, lawyers, or accountants.


Lawyers are notorious for being mercenaries for hire. The most successful firms contract with corporations that take advantage of the law to their gain and society's detriment.

Medical doctors work for an industry that bankrupts sick people for being sick and and a huge number (if not a majority) of practicing doctors can be implicated in the opioid epidemic that has killed thousands and ruined countless lives.

Ethical contracts usually just lead to more politics imo. At the end of the day, we all bow to money in one way or another (some are just willing to bow lower than others).

Maybe we should stop pretending a profession can somehow make a person better than someone else in some sort of meta/ethical way.

Addendum: Personally I wish the law were more open to allowing people to defend themselves. A few years ago I went to court to defend myself in what I was sure was a simple misunderstanding in traffic court. Halfway through my second sentence (not in the legal sense), the judge interrupted me. Then the police officer tried to explain what he put in the ticket may not have been comprehensive. The judge cut him off too and decided it was in my best interest to "learn a lesson" and found me guilty of a violation I was not guilty of. The lesson I learned was if I had paid a lawyer $500 I would have gotten an honest hearing. I don't see the ethics or standards in that.


I don't follow your argument. Existence of the things you mention are not really the main distinguishing features of different socio-professional classes.

A programmer is still more like a lawyer in almost every conceivable way than they are like a bricklayer: level of education, social circles, work environment, pay, cultural values, etc.

(This has nothing to do with "self-flattery" unless you think I'm making some sort of value judgment about these different classes, as opposed to just describing them).


Lawyers will not commit malpractice because they would open themselves up to liability and damage their professional reputations.

In contrast, most software devs will code up whatever evil garbage features their bosses tell them to. They don't even have a concept of malpractice. Very rarely, one might quit, but they have no standing to say "no" to their employers and remain employed.


Michael Cohen had a law degree, dude. Christopher Duntsch had a medical degree. It's just people. They're not gods because they have some degree.

And that's only the named people. I don't know how many people you know in medicine or in law.

If you're unfamiliar with things being upcoded or out of network doctors substituting in late and then having patients incur massive fees, then maybe it's best to familiarize oneself.

And there are lawyers who specialize in getting the right rich guilty people out. The Razor didn't get the name by chance.


Why are you comparing coding up dark pattern feature to the malpractice? It's more comparable to, e.g. a patent troll's lawyer drafting a letter intended to bully a troll's victim into paying out of fear of litigation costs. Or reviewing a forcing arbitration agreement that a company intends to make all its employees to sign. Or other things that can be considered morally 'evil' but completely legal and wont get anyone sued for malpractice.


Was writing the Volkswagen's emissions cheating software malpractice?

https://www.nytimes.com/interactive/2015/business/internatio...


Was arguing the Government's position before SCOTUS in Korematsu legal malpractice?


Amen! And as someone who is an actual licensed P.E., it still makes me a little angry when I see computer programmers who call themselves "engineers." This is technically illegal under some circumstances in many states, but rarely enforced.


I was curious about your background and you don't have a profile summary so I looked at your brief comment history

From a few days back:

>Back in Web 1.0 (1999 or so) I worked for what was then a large Social Network. There was no security. Any engineer could look at anything.

I'm assuming you weren't using the word engineer there to refer to Professional Engineers?


The original meaning of engineer was: "A constructor of military engines; a person who designs and constructs military works for attack and defence."

It is first found in English in 1380, when I doubt any professional certification bodies existed.

Eventually it evolved to mean what you got your license in, and then evolved further to include things like "software engineers".

Unless you build engines, the word engineer to describe what you do is etymologically inaccurate. So why is your particular stage on the path of organic evolution of this word more valid than anyone else's?


Because PEs have a legal definition under the law.


That's true, which is why you wouldn't put P.E. after your name or represent yourself as a Mechanical Engineer etc... No one who knows what a PE is going to be confused by someone calling themselves a software engineer, and audio engineer, or a sanitation engineer.

I understand the other argument that the job title "Engineer" is being diluted, but that ship sailed a long time ago. There are way more people with engineer in their title than there are PEs so I doubt any widespread legislative attempt to change this would be successful. And it's not just software engineers. Plenty of people working as engineers with ABET accredited engineering degrees haven't passed the PE exam either.


Because I have a state licence from a previous life as an EE.


Did your state exist in 1380?


It's not possible to actually become a licensed/professional software engineer as of April this year, at least in Florida. Florida requires that you pass the NCEES PE exam - not sure if there are other exam vendors used elsewhere in the US - and NCEES elected to stop offering the software engineer exam citing low demand:

https://ncees.org/ncees-discontinuing-pe-software-engineerin...

It was only ever administered 6 times.

I've spent all of 30 minutes studying this, so, hardly an expert. But it seems like the genesis and ongoing purpose of P.E. accreditation is to protect the health and safety of the public. There have certainly been some high profile examples of poor software engineering affecting health and safety - thinking about the Toyota acceleration issue and the VW emissions scandal - but I am wondering if people really think an accreditation body would prevent this sort of thing from happening. What would a Professional Software Engineer be, and why would they be inherently better or more qualified than what we have today?


> It's not possible to actually become a licensed/professional software engineer as of April this year, at least in Florida. Florida requires that you pass the NCEES PE exam - not sure if there are other exam vendors used elsewhere in the US - and NCEES elected to stop offering the software engineer exam citing low demand...

There's no demand because they made the process more or less impossible for developers to ever get to to the point where they take the PE exam.

First, the candidate has to pass one of the Fundamentals of Engineering exam to become an engineer-in-training. Except, whoops, there isn't a software specific FE; the most relevant one is the EE/Comp. E. exam. Take a look at the list of topics: https://ncees.org/wp-content/uploads/FE-Ele-CBT-specs.pdf Most developers aren't going to pass that even with a CS degree.

Secondly, you need 4-8 years of supervision by a licensed engineer. Again, whoops, there are barely any software developers with a PE license, so who would they get to supervise them?

Frankly, the situation was so absurd that one has to suspect that NCEES didn't want to certify software developers as PEs.


You can't really use engineering methodologies to guarantee public safety from software. Engineering wants to model behavior and add margin on the worst case scenario to make failure unlikely.

Provably correct software development is too slow and specialized to be economically feasible. Even formal correctness is not enough, you also need to defend against unpredictable hardware faults. No traditional engineering discipline needs to do this.


I disagree. An engineer is someone who applies a science to build a solution (aka a product). Mechanical/Electrical/Nuclear engineering is applied physics. Petrol/Chemical engineering is applied chemistry. Pharmaceuticals are applied biology. And finally, Software engineering is applied Computer Science.


The situation in Canada is that you cannot legally call yourself an "Engineer" unless you have a P.Eng license. While you do not need an engineering degree to undertake this, if you don't have one you will have to ask the licensing body to adjudicate on "equivalent experience" - not sure what happens if they don't agree but I expect you'd have to take some courses. The licensing itself requires at least a professional practice exam (and possibly technical ones) and work experience overseen by a P.Eng. Software developers can take this certification but it is not particularly useful to their career except in narrow circumstances.


I think this is a great point and perhaps if developers thoughts of it that way more they would take more initiative to create those things. If we don’t, they will and by they I mean people who will have limited understanding of the impact of those codes.


Pretty much every countries engineering certifying body does have a track for it professionals.

I do have to ask why all the self hate here why would a rational person what to degrade there profession do you want to be working in a blue collar job with worse working conditions?


For myself, I want software devs to recognize that they have more in common with blue collar workers than they do with their capitalist employers and act in solidarity. If it were up to me, there'd be a software guild akin to the Hollywood screenwriters guild, and it would set ethical standards and advocate for better pay and working conditions for people writing software.


I think that developers would have more in common with other professions than blue collar workers.

Whilst both types how workers have problems at work - they express themselves quite differently.


In the case of most front end dark patterns, management or a designer is the equivalent of the architect and there is no Engineering involved to implement the design--just skilled labor.

In the case of something more complex, developers don't have the leverage of established regulatory bodies and guilds.


Developers don't always come up with dark patterns or fraud, but they implement them. It's possible to say no on ethical grounds, isn't it?

I was once asked to finish and deploy code that the previous dev had stolen from his old employer. I said no because the code was paid for by someone else and belonged to them. It wasn't a big deal -- my career didn't suffer.


I would find somewhere else to work if I had ethical concerns over what they were asking me to do. For example, the UK’s department of work and pensions was a contract the company I work for had at the time when there was a huge furore over IDS (a politician)’s policies.

If i had been assigned to work on that project I would have resigned.


It's hard to distinguish between something being explicitly shady and just a bad system though.

"As a user, if I arrive on a booking page and the live API data shows our cached pricing data is stale, I expect the difference to be acknowledged."

Developer implements animation callout and an approximate, non-technical explanation

Cached pricing data continues to often be stale


I call those asshole user stories unless there is a logged story “as a user, I expect inventory prices to be accurate in real time.”

I don’t like user stories that are anti-customer and in the developer’s favor unless it’s clear that there’s a path to fairness.

The motivation to a system should be to have as current as possible pricing, not some nightly batch that shows cheaper, unavailable prices and pisses off people when the real price is actually checked.


I think it's not going to be so obvious. If you write a feature that is intended to deceive then sure, but the developer who wrote that feature was probably told "ok, if the inventory is below a certain threshold, then add this behavior". The feature itself is benign. Should a developer resign anytime they can concoct a theoretical way in which a feature they're writing could possibly be exploited?


"I was just following orders" is an excuse that fell very out of favor last century.


Don't worry, it's coming back in fashion. Ask ICE.


So do you think that the correct way to make sure buildings have enough exits is to shame construction workers into not working on buildings that they think have too few exits? Keeping in mind that an individual worker may only have knowledge of a small section of the overall building.

To your point specifically how many low level German laborers were prosecuted for following orders to build a prison camp or lay railroad track?


I assume that you refuse to be paid more than a construction workers then?

Part of the legal definition of a salaried professional is that the job entails the use of judgment.


Every job requires judgement of some kind.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: