51 comments

[ 5.0 ms ] story [ 130 ms ] thread
> I will remember that there is art to software engineering as well as technology , and that there is beauty in code. I will not forget that programs must be written for people to read, and only incidentally for machines to execute.

Why is this a part of the oath?

> I will use technology for good and for the progress of mankind, free of evil, for the betterment of peoples' lives.

http://en.wikipedia.org/wiki/Moral_relativism

I like the idea, but I agree that there's sort of an odd mix of topics in here.

"Betterment of mankind" + "human-readable code" + "ask a coworker for help" = ???

Real engineering is about rigor. And how can you have rigor without communication? Make your code readable by others and discuss the work with your coworkers. Real engineering happens in a team, not in a hermit's cave.

P.S. check out SWEBOK and SEMAT. Software Engineering Body of Knowledge, and Software Engineering Method and Theory.

Any profession wide oath is going to involve moral relativism. Doctors quarrel about what 'do no harm' means all the time. That's a feature not a bug - the point is to get people to acknowledge that their work should not be a separate realm from their own understanding of morality, rather than impose any specific morality on anyone.
Unlike doctor's oath though, it's much less obvious what is moral and what is not.
Saving the mother's vs. a baby's life, prolonging painful life vs. euthanasy... There are so many ways medical moral is not obvious!
>> I will remember that there is art to software engineering as well as technology , and that there is beauty in code. I will not forget that programs must be written for people to read, and only incidentally for machines to execute.

> Why is this a part of the oath?

Especially considering it excludes potentially useful programs generated by genetic algorithms. Computer generated, computer readable, but typically completely obtuse to humans. Hell, I've experimented with generating unit tests this way in similar fashion to fuzz testing, to good effect!

It's also prejudiced against obfuscated C competitions and various "hack this computer" style challenges which encourage the development of reverse engineering skills.

>> I will not use my knowledge for unfair profit, financial or of other kind.

Fair is a potentially immoral goal in my eyes, even given the incorrect presumption of moral actors. As an extreme example, if the unfair solution greatly benefits each individual more than the fair solution would benefit that same individual, the unfair solution is clearly the correct choice. Taken to it's extreme, "fair" can mean "nobody has anything".

>> When through technology I gain access to private data, I will respect privacy and will not abuse the information at hand.

Bob's "abuse" is Alice's "whistleblower".

Even treated as mere general principles rather than an oath, I would have trouble with this list.

> Computer generated, computer readable, but typically completely obtuse to humans.

This is not code you write. You wrote the program that generated your code or the constraints the program used. That is your code and that should be human-readable.

Does a compiler generate human-readable machine language code?

> This is not code you write.

One could argue it's indirectly written. If I write C# that generates C#, my coworkers will generally yell at me with good reason if the generated C# is illegible.

One could also argue that the oath doesn't talk specifically about what I write. At work I will try to uphold readability when reviewing coworker's code as well when reviewing it, regardless of the fact that I did not write it myself. I would also be inclined to try and uphold readability when another program writes the code.

> Does a compiler generate human-readable machine language code?

It can, with the proper options and support tooling, and you probably want it to. How else are you going to debug crash dumps from the wild? pdbs are immensely useful to understanding crash dumps even without the original source code to map to. My work computer has a 1TB+ folder named "builds", serving no other purpose than to archive old releases with corresponding assets and PDBs to ensure those EXEs are easily human-readable, in turn making crash dumps easily human-readable.

No other category takes up more space on my hard drives at work or at home. Even that really big one nobody tells mom about! All dedicated to keeping that stuff human-readable.

>> When through technology I gain access to private data, I will respect privacy and will not abuse the information at hand.

Bob and Alice both volunteered to read Hillary's and Marco Rubio's donation plea script which contains personal information about the individual being called. Bob and Alice are both uncomfortable that they have access to the private health insurance information of adults in their neighborhood because they volunteered for a political candidate who purchased it from Lexis Nexis. What should Bob and Alice do?

Nicely written! You may also want to take a look at ACM's Software Engineering Code of Ethics[1].

[1] http://www.acm.org/about/se-code

Aye, I was about to point this out as well.

Many of us realize only fitfully that we are at the same forefront of technology that those who created the atomic bombs were. I, for one, have frequent clashes of ethic with my colleagues, and often wonder how long I'll be able to keep working in the industry.

We should reflect on our obligations to mankind more often than we do.

> we are at the same forefront of technology that those who created the atomic bombs were

If the point you're making is that software developers should be as suspicious of harmful consequences of their work as the people at Los Alamos should have been of theirs -- well, it seems to me that the biggest hint of possible harmful consequences of the Los Alamos work probably wasn't the fact that they were working with new technology, so much as the fact that they were (explicitly, by design) working on more powerful devices for killing and destroying than the world had ever seen.

I'm pretty sure all the scientists at Los Alamos had a pretty good idea they were developing things that might do harm. That was what they were for.

I swear: that I will create websites with sufficient contrast between text and background to enable legibility of textual content.

http://www.contrastrebellion.com/

Some would say that the writer's intent is to illustrate the important bit with high contrast.
Considering there are several perfectly good elements to use which accomplish this semantically and the author uses none of them, he's doing a piss-poor job. Strong, bold, dictionary list, underline, or italic text would be fine. A span with a reduced-size font and minimal contrast is just stupid and disrespectful.

Not the first time I've written this rant. I'm getting more than slightly tired of the problem in general.

Hello. Thank you for your feedback! I understand your concerns that the contrast on the page is poor and makes the text unreadable. I'd be happy to merge a CSS patch with a fix for the contrast.

Here's the GitHub for the oath: https://github.com/dionyziz/oath

As you seem to have a firmer background in design, you're more qualified than me to edit typography.css and I'd love to see what you come up with. Thank you for your time and criticism :)

    body {
        font-size: 15pt;
    }

    .oath {
        background: white;
        color: black;
    }

    .oath li, .oath span {
        color: black;
        font-size: 15pt;
    }
> I will not be ashamed to say "I know not"

If every manager would abide this, my chances of ending up in jail for manslaughter would decrease significantly.

A briefer version:

If Goldman-Sachs or the NSA would do it, I won't.

I don't like this sort of reverse-what-the-bad-guys-do approach to ethics. Goldman Sachs have allegedly given something like $1.6B to charities over the last 5 years or so. Should you avoid charitable giving? They pay their employees very generously. Should you, if you run a company, be sure to pay below market rates? The NSA solves hard problems by combining very clever people with powerful computers. Should you avoid doing that?

If you make the principle something more like "If only shady entities like Goldman Sachs or the NSA would do it, I won't" then it becomes much easier to accept -- but then the real work is being done by "others wouldn't do it" rather than by "Goldman Sachs or the NSA would do it".

It was a half-joke. Obviously, even evil companies do some things that are sensible, or even laudable. Nevertheless, there's little question that the world would be better off without Goldman-sachs in it. We're talking about a company that has happily speculated on third-world crop futures and started a famine just to line their pockets! I'd be honestly surprised if their charitable donations exceeded the optimum amount for tax deductions.
I like the idea of an oath like this and also thought about creating something a bit similar. Maybe you could call it a "Hippocratic Oath of Computer Science".

I think it should be extended to all computer scientists not just programmers (or maybe even all of science). Some things in the oath should be a lot more explicit and more strict in my opinion. For example creating or helping create weapons or surveillance technology should be strictly forbidden.

"helping create weapons or surveillance technology should be strictly forbidden"

That assumes that there are no legitimate reasons for weapons or surveillance technology to exist - and what counts as a weapons or "surveillance technology"? (e.g. are average speed cameras "surveillance technology")

As a bit of background I actually failed an interview once when I was asked about my views on nuclear weapons and I replied (this was the late 80s) "they are a necessary evil". Quite what an acceptable answer would have been escapes me...

I fail to see the legitimate reason software assisted weapons or mass surveillance tech have to exist. Enlighten me? See my other reply below for your relativation fallacy.
"Software assisted weapons" have existed in one form or another for ~60 years (even longer if you count analogue computers). I'm not sure why you need a "legitimate reason" for these things to exist - they already do and arguing that they shouldn't doesn't achieve very much.
(comment deleted)
(comment deleted)
Define surveillance. Is a baby cam ok? What if you're using it while the nanny is minding your baby? Or when the kid is a teenager? If they have friends over? If they are a 12 year old latchkey kid? On the babies at the daycare you run? On the employees of the daycare you run, or the nursing home you manage? On the chain of daycares? Cctv on the glass frontage of your jewellery store? Cctv on the valuable jewellery in the store? On a bank teller?

summary: I don't think you mean that for normal definitions of surveillance, and if you do you're in a pretty small group.

Define assault. Is nudging someone to get their attention ok? How about hitting them in the face full force? Both are touching...

See, the thing is, common sense helps with this. Trying to relativise everything does not take a way the need to make moral decisions.

No, it doesn't. Because I think some of the things I mentioned are surveillance, and are ok. Common sense doesn't make up for people who are saying things that they either don't mean, or that I disagree with. Are you saying that you'd like me to simply interpret everything you say through 'well, that would be something I disagree with, so I guess he didn't mean it'?
Some people have no problems with that, others do. Then there is the problem of where you draw the line. I am happy that my employer honours my wish not to contribute to a piece of software that is being built directly for use in tanks. However, through other projects I work on some of the same bits that are used anyway (internal libraries that are reused in many projects) – I chose that's acceptable enough for me, but others might not even want to indirectly contribute to things that end up being weapons.

What if you're working on a compiler you know is used for compiling code that ends up in surveillance technology? Standards work or implementation on image compression that are used in surveillance cameras? It can get grey very quickly.

>where you draw the line I don't see this as a problem. The goal is to discuss and voice a common moral standard for CS. The idea worked well for doctors.
>"helping create weapons or surveillance technology should be strictly forbidden"

Never contribute to open source software then.

I'm sure there's lots of pithy oaths used by programmers over the years, I know I've used a few
Our first obligation is to keep the foo counters turning.
The road to hell is paved with good intentions. 'nuf said.
frankly, most of the list is fluff. I would put up there with user privacy, user experience. The mot annoying, dangerous, and demoralizing thing programmers can do is create insecure and badly designed software.
(comment deleted)
I will test my changes before I commit them to production.
I like the idea behind this and there's some good stuff here. This one irked me a little because it's lacking nuance:

> I will remember that technology always improves, and will never stop learning, and the purpose of my life will be continuous self-improvement.

"The purpose of my life" is too strong of a phrase that makes this one sound like it trumps the others.

"Technology always improves" is true at the macro level, but there are a lot of fads, minor regressions, and forgotten gems from the past.

I've been programming for 31 years, 22 of which are professional experience. This list was hilarious. If it wasn't meant as a joke then you take yourself way too seriously.
I'd love to meet the people you've worked with.
It misses a logo, which you can put on your personal website to signal "I swore that oath".