
The responsibility we have as software engineers - ingve
http://benlog.com/2015/05/23/the-responsibility-we-have-as-software-engineers/
======
jacquesm
We have superpowers _we_ don't usually properly understand until the shit hits
the fan and something goes horribly wrong.

Software isn't engineering unless you're in aerospace, most software is so
fragile if you look under the hood it should properly scare you. Some code you
look at and you wonder how on earth it made it this long in production without
breaking or anybody stumbling into it.

So we should take much more care about how software systems are developed to
get out of this lack of robustness and predictability in the presence of
unexpected inputs.

But that's not how we deal with software at all. The big trick is to read a
couple of tutorials and one of those learn 'x' in 24 days books and you're off
to the races, the money is good and never mind the ethics or the basic
principles of good design.

So we get a very large amount of crap code (more so on the web than elsewhere,
though every segment has it's horrors (embedded, banking, telco)), and the
reviewers typically either don't have time or don't care as long as it checks
off the feature set boxes. Or they downright don't understand what they are
taking delivery of themselves.

Most software is ugly, most of it works (but barely so) and very little of it
is actually understood completely. If we want to change that we're going to
have to SLOW DOWN considerably, but that would leave the field wide open to
the competition that doesn't give a damn. So you're damned if you do and
you're damned if you don't.

If anybody has a real solution to the economic problem then I'm all ears but
until we make it expensive to produce junk I see no way out of this. See also:
ethics come at a price.

~~~
arcticbull
I think for most decent engineers, if you have a small group of good ones, no
matter the time pressures they'll deliver you something half decently
architected -- most likely with understood compromises. Where things start to
take a turn for the worse is when more people pile onto the codebase without
the context to know what the trade-offs were or where the load-bearing paint
is, get in, make changes and get out. Now nothing makes sense.

In order to safely make changes to any one part of a codebase, an engineer
needs to understand how it all fits together and have all that context in
their head to ensure changes don't have unintended consequences.

There are design patterns that make this easier of course and less error
prone, but there's no enforcement at compile time, and with people coming and
going it all goes out the window.

I think we can solve a lot of these problems with much, much stricter and
smarter compilers. Eventually, I hope we'll all be writing software for which
the compiler will be able to tell you authoritatively you've written the thing
you set out to write and there are no bugs. As software complexity grows, no
one or two people will be able to keep a whole understanding of the system in
their heads (already true a most of the time). It follows for me that the only
way to confidently make changes to a system you don't understand is to
automate that understanding.

That's why I love what Rust stands for. It's a first step to be sure. However,
it makes the assertion that the only way to allow people to reliably develop
software they don't understand is to have the compiler 'understand' it for
them (I use understand loosely of course).

~~~
mdup
Before Rust, it could be said that Haskell has the same philosophy of ensuring
almost everything works at compile-time.

Anyway, I hope for a future where programmers will be able to specify _all_
contracts, invariants, etc. in code, and have them be checked upon
compilation. And not only for "smart" programmers, but the pretty bad ones,
too.

~~~
javajosh
_> I hope for a future where programmers will be able to specify all
contracts, invariants, etc. in code_

Theoretically is this even possible? We simulate this with tests, and code-
coverage analysis, but in the end all programs deal with unknown inputs, by
definition.

~~~
sirseal
There's certainly limits. Compilation-time type safety can only guarantee the
absence of certain errors or presence of certain behaviours. Any question that
can be reduced to the halting problem is something that cannot be
automatically verified. However, there's lots of interesting and useful stuff
that is not reducible to this problem. Such as "is this input really an
integer?" (cough cough, dynamic languages)

------
kvcc01
A Hippocratic-like oath by itself would be useless without a powerful
professional organization watching out for our interests. If I take the moral
high road and get fired by my MBA boss, I have no course of appeal. If an MBA
were to fire a doctor for refusing to compromise on ethics, I'm sure the AMA
would unleash hell on the MBA. Same for lawyers and ABA. Actually those two
organizations make it difficult for MBAs to manage their members so they have
two safeguards we lack. (I've seen this in the bank I work. The lawyers report
to other lawyers all the way up to the general counsel, who reports to the CEO
and the board. Such structure makes it easy to keep ethical conduct high
priority without fear of retribution from the MBAs.)

~~~
guiomie
In Ontario Canada we have an organization doing so, the PEO. Any professional
that has the word "engineer" in his title, including software engineers must
do a license exam, old a valid engineering degree and have 4 years of
supervised work experience with references. It isn't as common for software
guys then let's say civil engineers.

~~~
gaius
But what happens in the above scenario? Does the PEO kick ass when necessary
for its members? Does it, like the lawyers and doctors, ensure that its
members are remunerated well?

~~~
guiomie
It doesn't adjust the remuneration of it's members (nor do lawyers in Canada),
it really is "market" based, as for doctors the government has a bigger say
since our healthcare is universal.

The PEO will take action against non-members using the title engineer, or take
action against engineers not acting lawfully.

~~~
gaius
Right but if an engineer refuses to do something unethical,and loses his job
say, does the PEO got his back? Does it have teeth?

------
ftheama
>In 2008, the world turned against bankers, because many profited by
exploiting their expertise in a rapidly accelerating field (financial
instruments) over others’ ignorance of even basic concepts (adjustable-rate
mortgages). How long before we software engineers find our profession in a
similar position?

How long until doctors find themselves in a similar position? Medical bills
are, after all, the number one cause of bankruptcy in the US, and US doctors
are the highest paid on Earth.

Meanwhile, software gets ever more cheap and plentiful, and programmers
literally give away much of the fruits of their labor for free under
permissive licenses. Yet it's supposedly programmers that are in need of
reflection and humbling.

Programmers are effectively being punished--by the anti-tech worker protests
in the Bay Area, a hostile media (Gawker, Mother Jones, to name a few), and by
the incessant push for more cheap, indentured labor in the form of H-1Bs--all
because we have not yet organized ourselves into a protectionist racket to
gouge the citizenry in the same way doctors have.

Unlike doctors, we have little prestige, yet we are still able to earn high-
ish salaries, and that makes us an easy target for resentment: "How dare these
'coders' earn $100k when a lot of them don't even have degrees! I have an MA
in Journalism, and yet I struggle to pay my bills!"

The backlash the author predicts is already underway, but not for the reasons
he cites.

~~~
sirseal
> How long until doctors find themselves in a similar position? Medical bills
> are, after all, the number one cause of bankruptcy in the US, and US doctors
> are the highest paid on Earth.

Blame medical insurance companies. Physicians must charge 10x what something
actually costs because insurance companies will only pay 1/10 of the bill.
This insurance company bullshit works all fine and dandy, until it lands on a
poor uninsured bloke.

Ask yourself: "why the hell should a medical insurance company be for-profit?"
Why should the top 5 medical insurance companies make _billions_ of dollars in
_profit_ _every_ _month_ ?

[http://www.forbes.com/sites/peterubel/2014/02/12/is-the-
prof...](http://www.forbes.com/sites/peterubel/2014/02/12/is-the-profit-
motive-ruining-american-healthcare/)

~~~
ftheama
Responses like this demonstrate just how well doctors have, with their high-
prestige, managed to near-completely insulate themselves from just criticism.

"A clearer way to think about this is profits -- and insurers aren’t where the
big profits in the health-care system go. In 2009, Forbes ranked health
insurance as the 35th most profitable industry, with an anemic 2.2 percent
return on revenue. To understand why the U.S. health-care system is so
expensive, you need to travel higher up the Forbes list. The pharmaceutical
industry was in third place, with a 19.9 percent return, and the medical
products and equipment industry was right behind it, with a 16.3 percent
return. Meanwhile, doctors are more likely than members of any other
profession to have incomes in the top 1 percent."

[http://www.washingtonpost.com/blogs/wonkblog/wp/2014/01/13/w...](http://www.washingtonpost.com/blogs/wonkblog/wp/2014/01/13/what-
liberals-get-wrong-about-single-payer/)

------
ryandrake
If, as software engineers, we all held ourselves to even minimal ethical
standards, we wouldn't have Sony Rootkits and Superfish, etc. It requires
self-discipline though, since there is no ethics board to answer to like other
professions. It might be time for such an organization, since it's evident
that there are plenty of unscrupulous programmers out there willing to
implement this crap, and nobody is holding them accountable.

~~~
Sir_Substance
How would you spearhead such an organization?

------
azakai
The author gives 3 examples of confusion by the general public regarding how
software works. We, as a society, should try to educate people more on these
things. But this is mostly a matter for our schools, not our software
engineers.

The author suggests we need a "Hippocratic oath" for software engineers, but
provides no examples of unethical behavior. I'm not saying that there is none
- there is plenty, but I see no reason to assume it is more than in other
fields, like advertising or psychology or science or television or fitness.
People need to be ethical _no matter_ the field they work in. I see no reason
to single out software engineering, except that the author and we happen to
hold that profession.

------
zzzeek
"In 2008, the world turned against bankers, because many profited by
exploiting their expertise in a rapidly accelerating field (financial
instruments) over others’ ignorance of even basic concepts (adjustable-rate
mortgages). How long before we software engineers find our profession in a
similar position? "

Never. Software developers as a group are _nothing_ like bankers as a group.
Developers are far more ethical and have an incredibly low aptitude for
opportunism (look how underpaid we are as a whole, not to mention half of us
suffer from imposter syndrome. Ever meet a banker with imposter syndrome? Ha!
).

Being a predatory, unethical banker requires a certain kind of personality
that would never find itself slaving away writing code for 12 hours a day
(except to write software to assist in your task of being a predatory,
unethical banker).

~~~
x3n0ph3n3
We could then talk about the ethics of the engineers working for the NSA whom
are engaging in massive surveillance of the country and world. They may not be
opportunistic like bankers, but they definitely have moral failings grounded
in their delusion that they are making the world a safer place.

~~~
zzzeek
it has to do with who is deciding the activities to take vs. who is
implementing them. Everything a bank does is via software as well. Software is
just the infrastructure. It is the leadership that takes the steps to do
things that are unethical.

The NSA and perhaps Facebook have the special caveats that there are
developers there who can see that what they are being told to do is unethical.
So the large bunch of them that go along anyway, you can make an argument. But
that's not the majority of developers and also re: the NSA, the most famous
software person of them all is Ed Snowden and he's a symbol of _opposition_ to
what the NSA is doing.

People aren't blaming programmers for the crimes of the banks, the NSA, or
Facebook. The programmers are fully the ones executing the tasks for all
three, but they aren't in general the ones making the decisions; to the degree
that there are programmers who _are_ making those decisions, they are
considered to be a "banker / NSA goon / Facebook executive who also codes".

~~~
ryandrake
You can't just say, "Oh, well, I'm not the _decider_, so my hands are clean".
When you decide to put fingers to keyboard and go along with implementing
something unethical, you become just as culpable.

And no, I don't feel sorry for the construction contractors who bought it when
the Death Star blew up.

------
markbnj
This is a good piece, and it is always good to take to heart lessons of ethics
and professional responsibility. Ultimately I don't think the situation from
the practitioner side is much different from that of civil engineers,
architects, doctors, etc. We're all trusted to do something beneficial with
the arcane skills we have mastered, and at least in the first instance do no
harm. I do think that software is unique in its ubiquity and penetration into
every corner of life, and it may well be that there has never been a
technology relied on by so many while being understood by so few. But the
responsibility incurred when you build something that others will rely on is
what it has always been.

~~~
niels_olson
As a physician and, prior to that, military officer, I have been struck by the
fierce non-ethics of many software folks. Strawman, I know, but there it is.

I think part of the issue is that software engineering is abstracted from the
immediate problem the person in the world is trying to solve, and one engineer
may cross many industries in their career. In some sense, that abstract
transience inhibits the feeling of duty that, say, a small town cardiologist
feels toward his patients. My grandmother's doctor quit medicine after she
died of a heart attack. He couldn't stand seeing all his friends die.

Conversely, there's an opportunity here to think about methods to pierce the
abstraction. Perhaps that is the first order issue for software ethics: pierce
the abstraction. Know the user's ethical problems. Know the customer's ethical
problems (the therapist may be the user, but the hospital is the customer).

I hypothesize that the ethical issues are more obvious at the user's level.
Hospital business offices, for instance, are famous for claiming the ethical
high ground while ignoring the strain productivity requirements place on their
staff. How much of software ethics in healthcare could be boiled down to
"making healthcare easier, one less click at a time"?

That's where money and abstraction prevents the development of a coherent
ethics: why develop ethics when I'm getting paid and will _never_ get sued. No
one is going to sue the software house for the hours of delay that accrete 1/2
second at a time. No one is going to sue the IT guy for the hours of delay
that accrete on slow networks. No one is going to sue the developer that
doesn't bother to anticipate that the PACS system will eventually be called
upon to store digital pathology images also (at 10x the storage per image and
10x the number of images).

In fact, no one's going to sue _the hospital_ for those things. And the
hospital is the customer. So there's definitely no path from the nurse or
doctor to the software house. Who cares about the intern wearing running shoes
at 2 am trying to keep patients alive in 10 different units on 7 different
floors in the 3 different wings of 2 hospitals? Nobody.

Similar issues could probably apply to roughnecks in the oil industry watching
oil blow into the ocean because there's no button to override power on the
valve, home buyers who are just trying to get their kids into a good school
district, etc, etc.

~~~
ftheama
>As a physician and, prior to that, military officer, I have been struck by
the fierce non-ethics of many software folks.

Yes! Compared to the noble physician, programmers like like Linus Torvalds
(Linux, Git) and Richard Stallman (Emacs, GCC) who freely give away the fruits
of their labor, even when it generates billions of dollars in value of which
they reap only a tiny fraction, are nowhere near as ethical.

Physicians are so ethical, in fact, that medical bills are number one cause of
bankruptcy in the US!

~~~
sirseal
Does it make sense that doctors have to charge 10x just to even-out the
insurance companies only paying 1/10 the price? Nope. You should direct your
anger at for-profit medical insurance companies, which make billions of
dollars in profit every month.

To your ethical claim: can engineers go to prison for being unethical? No. Can
physicians? Yes.

~~~
ftheama
"But that’s not remotely true. The last time the OECD looked at this (PDF),
they found that, adjusted for local purchasing power, America has the highest-
paid general practitioners in the world. And our specialists make more than
specialists in every other country except the Netherlands. What’s even more
striking, as the Washington Post’s Sarah Kliff observed last week, these
highly paid doctors don’t buy us more doctors’ visits. Canada has about 25
percent more doctors’ consultations per capita than we do, and the average
rich country has 50 percent more. This doctor compensation gap is hardly the
only issue in overpriced American health care—overpriced medical equipment,
pharmaceuticals, prescription drugs, and administrative overhead are all
problems—but it’s a huge deal.

 _Doctors aren’t as politically attractive a target as insurance companies_ ,
hospital administrators, or big pharma, but there’s no rational basis for
leaving their interests unscathed when tackling unduly expensive medicine."

[http://www.slate.com/articles/business/moneybox/2013/02/amer...](http://www.slate.com/articles/business/moneybox/2013/02/american_doctors_are_overpaid_medicare_is_cheaper_than_private_insurance.html)

------
e28eta
We have a code of ethics: [http://www.acm.org/about/se-
code](http://www.acm.org/about/se-code)

It sounds like many people haven't read it?

~~~
eco
ACM and its members have a code of ethics. Less than one percent of computer
programmers are ACM members.

~~~
e28eta
"Software Engineering Code of Ethics and Professional Practice (Version 5.2)
as recommended by the ACM/IEEE-CS Joint Task Force on Software Engineering
Ethics and Professional Practices and jointly approved by the ACM and the
IEEE-CS as the standard for teaching and practicing software engineering."

It certainly reads like it was written by a committee 15 years ago, but ACM
and IEEE are the professional organizations for software, and I appreciate
that this document exists.

------
microcolonel
I don't see the part where an ethical boundary was crossed. The examples
given, such as when people realized that people working at Facebook write
software to make users feel a certain way.

The knowledge that made the experiment unethical, came from the experiment
itself. They did not otherwise know what their users would feel.

People found the story they wanted, but it doesn't change the facts.

When I write software, I write it so that people can use it, just as the
farmer grows food so people can eat it, and the doctor practices medicine so
that people can live with the benefits.

To me, just as to them, it is not my place to tell people what is right and
what is wrong to do with what I make; nor do I have the facility.

Timidity and caution are good for managing rare and known dangers, but
practicing them too widely will lead humanity to starvation and its natural
death with the rest of the unambitious matter in the universe, you can stay
back and incinerate if you'd like, but you're not bringing me with you.

------
pella
"MBA Oath" for managers:
[http://en.wikipedia.org/wiki/MBA_Oath](http://en.wikipedia.org/wiki/MBA_Oath)

------
asterixs86
The Order of the Engineer was established to address some of these issues.
There is a similar Pledge given to graduates of Computer Science programs at
various college/universities throughout the US via the Pledge of the Computing
Professional (link at [http://www.computing-
professional.org](http://www.computing-professional.org)).

------
joliss
Related: Mike Monteiro's talk, "How Designers Destroyed the World":

[https://vimeo.com/68470326](https://vimeo.com/68470326)

------
stegosaurus
This is one of the reasons why debt can be considered fundamentally immoral.

A fresh college student might well consider writing genocide apps if the
alternative is a boot stamping on their face forever in the form of tuition
debt.

You can't fix this form of 'corruption' completely, but ensuring that people
don't end up in the banality of evil scenario in which they switch off their
brains 9-5 and do bad things in order to feed their families is extremely
important.

------
starshadowx2
"To a non-engineer, even an incredibly smart person, this is absolutely non-
obvious."

I had people at work who just assumed that we IT people can track everything
they've done and read their emails anytime we wanted. I was a bit taken aback
that they just blindly trusted like that, and explained that we have policies
and don't do anything like that.

------
BoxKeyboard
> For most engineers, including a number of very good and ethical people at
> Facebook, it’s surprising that this is even an issue.

Wow. That really hit home. I work for a large enough company that's constantly
running experimentation, usually as A/B testing (not Facebook). It honestly
never even dawned on me to consider how borderline ethical that is.

~~~
afarrell
Why is experimentation unethical.

Deliberately infecting someone with syphilis is clearly unethical, regardless
of whether or not there is a control group. However, if showing them different
sorts of social media posts is ethical when done randomly, why is it unethical
when done deliberately?

~~~
BoxKeyboard
Because you don't really know what the longterm effect on the subjects is
going to be, especially w.r.t behavioral studies. The human psyche is still in
many ways very much a black box, and there are plenty of questionable
behavioral studies where the consequences of the study greatly outweighed the
benefits.

As far as deliberate vs. random goes, it's an important distinction because
intent and consent are arguably paramount when dealing with questions of
morality and ethics - as reflected by our legal system, where intent and
consent are often a source of debate. In this case, experimentation is clearly
done with intent and often without explicit consent (as opposed to the implied
consent given by the Terms of Use).

It's why giving someone HIV (or Syphillis) unknowingly isn't illegal or really
all that immoral (because the infector is unaware), but it is illegal to
infect people intentionally.

~~~
yummyfajitas
You don't know the long term effects of random social media posts either.
Before doing some sort of a controlled study you can't know.

Recently I went to a conference and acted like a sales guy. I gave different
(truthful) pitches to different people and observed how enthusiastic they
seemed about the product afterwards. Was that also unethical? Would it become
unethical if I did a hypothesis test afterwards, rather than merely going with
my gut?

~~~
BoxKeyboard
> You don't know the long term effects of random social media posts either.

Right, hence the whole rest of my message concerning intent, consent, and
their importance with regards to morality and ethics.

> Was that also unethical?

Maybe? I wasn't there, I can't tell you. There are plenty of ways to act VERY
unethically when it comes to sales and advertising, even while being truthful
(e.g. you could omit some very important information). Deceptive advertising
is a whole class of illegal actions in many developed nations, and not all of
those actions involve the strictest definition of lying.

Not sure what hypothesis testing has to do with anything, experimentation
certainly doesn't need to go hand-in-hand with statistical analysis.

I almost added a bit about taking the whole thing to its logical conclusion
that the entire field of advertising and sales is arguably unethical. I
haven't really thought that entirely through so I omitted it, but it's food
for thought nonetheless.

------
feefie
This really sunk in for me when I learned we were able to create robots that
always win at rock, paper, scissors. A regular person wouldn't naturally
expect this.

[https://www.google.com/search?q=robot+always+wins+rock+paper...](https://www.google.com/search?q=robot+always+wins+rock+paper+scissors)

------
yme565
Are you in need of protecting your accounts, retreiving lost passwords and
email account, Bank logins, and all Social Network accounts, Grade change, UNI
Transcript and whatever service you may require with quick proof and result?
mithackerurrep014@gmail.com is your best chance. DONT GET SCAMMED!!!

------
napperjabber
Every line of every code could be rewritten 1000 times. Every code of every
engineer could be shared and reviewed. If you ask me to write a code that
detects your zipcode based off the IP. Who am I to argue with the man paying
my bill? Yes, I could change jobs, but they'd at some point notice my
turbulent job history. Then the individuals that call the shots would pass up
my resume because that other engineer was more 'steady.'

All I want to do is study mathematics because that's the only real control I
have. Not what I do at work, what I do after work. I'm not going to waste my
time educating business unless they pay me to. That's what a job is.

Business justifies themselves because its all about getting one on your
competitor. Don't point the finger at us.

~~~
eropple
_> Who am I to argue with the man paying my bill?_

A human being, as are we all. And that comes with moral responsibilities. You
can't hide from the reality that what you do is transformative in ways
potentially both very powerful and very damaging, and you can't hide from your
responsibilities.

There are lots of things I'd rather do than write code for someone else. But I
do not abrogate my duties as a thinking, feeling human being because I don't
care about what they pay me for. Do thou fucking likewise, get me?

------
daok
At the end it is the money that decide. If your manager said that you have to
skip tests or cut corner to achieve the end result in the budget than even if
you are the greatest software engineer than you are stuck to do it the way the
money said. This is true for small company with low budget and with huge top
500 companies that must deliver in time in the market. I never worked in a
company that does not try to cut in quality to have a fast and cheap product.
If you try to go against that, than they just pick someone else, you do not
have any bonus while your teammate has or worst you will be out of the loop
and finally out of job.

------
nickpsecurity
It appears good on the surface but it's way out of touch with reality. It's
actually insulting, too, as it shifts blame from those controlling the
situation to those executing their will within their constraints. Reality:
There were attempts repeatedly to do what's truly good for customers from
business models to language designs to superior hardware to privacy-preserving
technologies. Those companies almost all went bankrupt, got acquired as profit
declined, or cancelled those product lines with huge loss ($1+ billion for
Intel's BiiN and i432 APX). The reason: the market almost always chooses
against sacrificing features, time to market, or profit for quality and
security. Making it more expensive, slower, less flexible, or less backward
compatible for the users own good will get you shunned by consumers or fired
by management. Lack of demand is so strong and pervasive, I left the high
assurance industry except for private R&D and contracts. I just publish stuff
online for free now to help the few that care.

On the other end, the users indeed don't understand the tech or trust
boundaries. What the author missed is THEY... DO... NOT... TRY. Very
important. We as a society treat certain things as responsible behavior,
mandatory education, or mandatory evaluation. Understanding the tech's
properties and risks? Not so much. Further, users as a whole are in favor of
buggy systems/services that are cheap, free, or used by many friends. They're
also happy to give away personal information and control for almost nothing in
return (eg Farmville). And they outcast, demean, and underpay the people that
build all this for them. Software engineer's habits and existing
products/services are a result of their environment.

So, I've always seen the exact opposite: people as a whole and the marketplace
need to act responsibly about technology. That will take a learning experience
that combines (a) their efforts to learn along with weighing tradeoffs and (b)
our best efforts to convert the technical things into layperson level.
Metaphors will help as I illustrated [1] for Facebook's risk. Further, people
need to understand that they get what they pay for, that their decisions
create long-term effects on them, and that they might need to invest in
ethical/private/quality alternatives to existing services. Fortunately,
there's always a niche of those customers to serve for developers that care.
Hard to get a job, though, since there's so few customers and so little money
in it.

Doing the right thing professionally and in mainstream IT is an approach for
those seeking to draw unemployment. Certainly little things you can do within
constraints you are given. It's just that you're effectively working in a
straight-jacket trying to help people ordering you to harm them. Most of the
time, anyway.

[1]
[https://www.schneier.com/blog/archives/2014/04/ephemeral_app...](https://www.schneier.com/blog/archives/2014/04/ephemeral_apps.html#c5259463)

------
jasode
The author means well but most grey area business decisions are not in the
control of software engineers who have day jobs.

For example, everyone loathes the example of banks re-sequencing customers'
deposits and checks such that it's more likely to overdraft and net the bank a
lucrative penalty fee. The business exec or MBA who dreamed up that scheme
isn't the one who coded that in COBOL or whatever; it's the the software
engineers who wrote that despised piece of code. But like 99% of the rest of
us, software engineers have families to feed and they can't go on a moral
crusade.

On the other hand, a software engineer who is making their mark in the world
as an entrepreneur definitely has some choices. I suppose many of us can make
an easy buck developing clever (and legal) sex/porn websites but many of us
choose not to. We want to do something we wouldn't be embarrassed to show our
mothers.

The Hippocratic Oath is more applicable to doctors because they have more
professional independence administering medical care. Software engineers with
day jobs do not have that type of autonomy.

EDIT to the replies:

I wasn't contending porn and naked bodies was unethical. Possibly awkward to
explain to your parents yes, but certainly not unethical. Unfortunately, porn
_websites_ and the porn _businesses_ are often a very shady (malware, fake
singles ads, etc) and many of us choose not to get into that area.

As for the power for low-level software engineers to enact change in the
world...

I would LOVE to lecture software engineers on morality. The "Fountainhead"
Howard Roarke architect who blows up his building to remain true to himself is
an incredibly appealing narrative. Howard did it and got the girl in the end,
can't you do it too?!?

However, my standard for telling a software engineer what is right or wrong
(that has serious personal consequences) is to back it up with a $100,000
check in my hand. This way, I can soften the blow of any consequences (e.g.
his unemployment.) Since I can't do that, my words are just armchair lectures
and _empty platitudes_. Besides, my words of wisdom are not really necessary.
The software engineers are already morally troubled by it; they're just not in
an easy position to override their managers.

Personally, I don't have to write questionable software but it's because I
have the economic ability not to. My finances allows me to avoid writing
software I don't agree with so it seems very wrong to use that as a pulpit for
moral superiority over others.

I think many of the replies are being unfair to the life situation the typical
software engineer faces. The rhetoric comparing the writing of code to
optimize bank transactions to gassing the Jews" or "experimenting on babies"
is unwarranted. Yes, writing code to engineer financials is distasteful but
let's not get carried away with the counter arguments. The software engineers
_want_ to do good but they often feel powerless to do so. The harsh criticism
levied by posters here does not change that at all.

~~~
ryandrake
The "hey, I've got a family to feed" argument is pretty weak. A lot of people
have families to feed. A doctor is not going to behave unethically just
because some "business exec or MBA" told him to experiment on babies. They
take their oath seriously. We ought to have a "do no harm" oath also, and we
should take it seriously, too. At the very least, we should apply the "Would
we want our name and face all over national newspapers associated with this
code?" test.

~~~
revelation
Well, they also have a professional organization that covers for them.

Software engineers can't even bargain for overtime pay. Pathetic.

~~~
pjmlp
> Software engineers can't even bargain for overtime pay.

We do in Europe.

------
walshemj
err don't all chartered engineering organisations already have this and Daniel
McCracken was involved with this decades before?

------
javajosh
It's hard to leave money on the table.

------
mummy8833
draft notes, no endorsement. could be wrong, read at own risk. perspective
from over 51.3 years plus former professional engineer.

THE GENERAL PATTERN. like in 'climategate' for scientists 1.) Point to the
pilot flying the plane where even the computer system tends to glitch. 2.)
FASTEST WAY TO BLAME THE PILOT instead of fastest way to avoid errors is MORE
RESTFUL SLEEP for the pilot.

Read book Death March and too much sprints, overtime for the software
engineer. Yes, I am former system admin.

3.)top engineer and even GOVT engineer - professional license - helps with
reputation but FUKUSHIMA Nuclear Disaster. alleged incompetence (like gotofail
gotofail) in the DAMS of New Orleans, etc.

4.)very hard to stop the corporation - one size fits all PARADIGM plus THE
ECONOMIC GAME - externality costs are often ZERO.

Simple. Microsofthardhard makes more money on rentals when your code breaks.
Economics is called perverse incentives. THE NEXT SCAPEGOATS WILL BE SOFTWARE
ENGINEERS. Every other profession/industry has had reputation destroyed and
'the bankers' will need to point the finger at someone.

