A programmer's oath
dionyziz.com
dionyziz.com
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.
"Betterment of mankind" + "human-readable code" + "ask a coworker for help" = ???
P.S. check out SWEBOK and SEMAT. Software Engineering Body of Knowledge, and Software Engineering Method and Theory.
Unless you're Fabrice Bellard.
http://bellard.org/jslinux/tech.html
> 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.
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?
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.
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?
> 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.
Not the first time I've written this rant. I'm getting more than slightly tired of the problem in general.
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;
}If every manager would abide this, my chances of ending up in jail for manslaughter would decrease significantly.
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.
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.
If Goldman-Sachs or the NSA would do it, I won't.
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".
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.
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...
summary: I don't think you mean that for normal definitions of surveillance, and if you do you're in a pretty small group.
See, the thing is, common sense helps with this. Trying to relativise everything does not take a way the need to make moral decisions.
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.
Never contribute to open source software then.