A few months ago, the company I work for redid their corporate vision/mission statement. It was a very positive process. It holds people accountable and makes sure that everyone behaves in a way that supports those values.
I thought it would be a good idea to write down some of my own, personal values I hold as a software professional. I, Timothy Klenke, will not act against these values. I would consider it unethical to act against these stated values. I hold myself to be accountable to them, and others may hold me to this as well.
Last month I did a full blog post on empowerment, so see that for more details. The short version is that given the same access to information I should be able to make the same decisions as my co-workers and bosses, and vice versa. If we are making different decisions then there is likely an information gap, i.e. a learning opportunity. Depending on others to make similar decisions to what I would do is the essence of trust. When there are differences in opinion, the built up trust constrains differences to within a shared set of values. The shared set of values fosters mutual respect.
Providing value to customers is the only reason to write software professionally. The software improves the quality of life of the end users by making their lives easier.
There is a logical “AND” in that statement to provide value to customers AND employer; it is not one or the other. I will not screw over the customer for the benefit of my employer or vice versa.
I have purposely included a statement about providing value to my employer so remind myself of my commitment to do all those business type chores (e.g. doing time sheets, etc.) even when I would rather be coding.
Quality of the software I write is paramount. It does not matter how technical or lay you are within the software profession, it is easy to universally agree that software should work. This is Beck’s first and highest priority rule for simple design and if unsatisfied all other discussions are moot. You cannot deliver value to your customers or work in a sustainable way if the software you are working on is routinely breaking because of poor quality.
There is no such thing as perfect software or a perfect person. However, there does exist the concept of continuous improvement. I will improve those ever-so-hard “soft-skills” to work better with my colleagues to learn from each other (i.e. empower). I will improve my software quality. I will learn new technologies and skills to improve my productivity. I will improve both in breadth and depth; I will not only get better with the tools I already am familiar with, but also reach out to learn new skills that am not yet aware of.
It is critical I do all of these tasks in a sustainable manner. If I cannot deliver the same quality and value at the same level from project to project then this will erode trust. I will not take short cuts, like skipping code reviews or testing, which may affect quality. I will keep my code clean and avoid technical debt. I will avoid an overtime death-march to deliver software.
Again, I, Timothy Klenke, will not act against these values. I would consider it unethical to act against these stated values. I hold myself to be accountable to them, and others may hold me to this as well.