
A programmer's oath - dionyziz
https://dionyziz.com/oath
======
adamnemecek
> 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](http://en.wikipedia.org/wiki/Moral_relativism)

~~~
MaulingMonkey
>> 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.

~~~
rbanffy
> 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?

~~~
MaulingMonkey
> 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.

------
Adrock
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.

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

[http://www.contrastrebellion.com/](http://www.contrastrebellion.com/)

~~~
dionyziz
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](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 :)

~~~
dredmorbius

        body {
            font-size: 15pt;
        }
    
        .oath {
            background: white;
            color: black;
        }
    
        .oath li, .oath span {
            color: black;
            font-size: 15pt;
        }

------
weland
> 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.

------
ultimoo
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](http://www.acm.org/about/se-code)

~~~
weland
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.

~~~
gjm11
> 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_.

------
Taniwha
I'm sure there's lots of pithy oaths used by programmers over the years, I
know I've used a few

~~~
ekimekim
Our first obligation is to keep the foo counters turning.

------
300bps
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.

~~~
sbhadra
I'd love to meet the people you've worked with.

~~~
dredmorbius
I suspect you might not.

------
beloch
A briefer version:

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

~~~
gjm11
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".

~~~
beloch
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.

------
ddebernardy
The road to hell is paved with good intentions. 'nuf said.

------
st0neage
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.

~~~
arethuza
"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...

~~~
st0neage
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.

~~~
arethuza
"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.

------
qznc
It misses a logo, which you can put on your personal website to signal "I
swore that oath".

------
dsr_
I will test my changes before I commit them to production.

------
Sander_Marechal
A nice idea. I just contributed a Dutch translation.

------
amasad
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.

