Doctors take the Hippocratic Oath. We need a Coder’s Oath. Will you take it?
I am a software professional. I swear to fulfill, to the best of my ability and judgment, this covenant:
I build on the shoulders of the software professionals that have gone before me, recognizing that rarely are truly new programming paradigms invented. I therefore commit myself to fully understanding existing solutions before I reinvent the wheel.
I recognize that the simplest solution is almost always the best solution. I will not over-engineer or prematurely optimize.
I will always seek out the root causes of problems. I understand that the time taken to seek out and address root causes will yield savings in all but the very shortest term.
I will work to understand my cognitive biases but recognize that I can never fully overcome them. In assessing the effort and time required to complete a task, I will consult with my peers to understand the true scope before making a commitment.
While I always strive to increase my skills and knowledge, I recognize that my work, and the work of my peers, will never be without errors. I accept that all software has bugs and that I myself will write many bugs. I will allow my work to be scrutinized and critiqued by my peers without taking it personally. I have the courage to say “I don’t know”.
I do not build software in a vacuum or create software for my own glorification or for technology’s sake. Instead, I create software that is valuable to users.
I accept that users are human beings and that human beings often do not behave rationally. I understand that if I build software expecting people to behave rationally, I will be forever frustrated.
While I may have entered into the software field because I am introverted and/or prefer computers to people, I commit to trying to understand users and the reality of how they use my software.
Frustrating though it may be to me, I understand and accept that most users will lack the time or inclination to understand how software works or why it was built the way it was. I accept that, to users, my software is just a tool to get a job done as quickly and easily as possible.
If I do not violate this oath, may I enjoy life and art, respected while I live and remembered with affection thereafter. May I always act so as to further the software craft and produce software that delivers true value to users.
So, will you take it? Let me know in the comments.