Our biggest value as a consultancy is our ability to say “no.” We do this with strategic diplomacy and in an effort to steer your organization away from issues we’ve encountered many times before.
But sometimes there’s a line: we’re saying “no” not because of your business plan, but for ethical or moral reasons. We use our purpose statement to guide us in these decisions.
A Little History
It was somewhat straightforward to keep in touch with our company’s vision when we were a dozen people in an office immediately following a pivot to writing Rails apps in an agile, outside-in, test-driven process. Today, as a 14-year-old company with autonomous studios spread around the world working on projects ranging from networking in C to virtual reality to machine learning, we had started to lose sight of why we were even coming to work every day.
So in 2016 a few people started an initiative to draft a purpose statement. Chad led it with video calls across the studios to explain what a purpose statement is and isn’t, and then solicited purpose statements from all of us. The team worked to find the common ideas and produce a draft as a pull request against our Web site. It was a heroic effort to get agreement among the 70-something people we had grown to. Being able to now resolve debate with “what does our purpose statement lead us to?” is a relaxing comfort.
The purpose statement contains goals, some of which may not be achievable. It sets a direction. Every day at thoughtbot is a day in which we move one step closer to our ideal purpose.
A Code of Ethics
In early 2017 we started the work to expand our purpose statement to clarify our ethics. All technology is political, and explicitly stating our politics means we can help support each other and continue to resolve decisions by asking our purpose statement.
We brainstormed what we wanted and then mined IEEE, ACM, Humane Development, and the American Library Association for further inspiration. In the end of this we started with three pull requests against our purpose statement, plus one initial pull request to clarify an existing point. This affects the entire company—this was literally changing the company’s purpose—so we alerted everyone via both our internal messaging system and chat, plus many in-person discussions when possible. After a month of active discussion on the pull request, with many revisions, all four were merged.
In Detail
Our purpose statement encompasses many of our beliefs, but for the brevity of this article let’s go into detail about the ones that affect our ethics.
We learn new things, and share those things with our peers and community.
This sentiment drives us towards information transparency. When we learn something, we teach it. When we build something, we distribute it. No one person can be a knowledge sink. Increasing the bus factor means we’re able to take vacations and have sick days.
We maximize our ability to take on any project by creating a diverse team who can bring their experience and perspectives together to solve problems.
Our politics includes people of different backgrounds and demographics, and excludes steps that harm this. Any technology we build must keep this in mind.
We are proud of the work we are doing, and believe that it is meaningful, worth existing, and improves society and human well-being.
The emphasis in this article is on the “improves society and human well-being” part. The software we build, both during our investment time and on client work, must help the people of the world. It is against our purpose to write software that we feel is a detriment or harmful. When presented with such an opportunity, we can look to our purpose for help in saying no. When a potential client comes in, we can look to our purpose for help in knowing whether to consider the project.
During this pass of documenting our ethics, we intentionally left “improves” subjective. It is on us to hire people who believe in improving society in a way that aligns with our values.
We [collaborate on building technology] while maintaining the privacy and confidentiality that every person deserves.
When building software it is ethical to consider how our tools impact the privacy of its users. This starts in the product design phase and carries through into the technical details, including the security implications of protecting customer data.
When giving direct, actionable, and constructive feedback to our peers and clients, we must do so in a manner that builds trust. Part of that is to respect the confidentiality of the discussions and to understand the boundary of private information.
Again, our purpose statement states ideals that we hold ourselves up to. Security exploits exist; our goal is to never take a shortcut that will jeopardize the security of the user, and when we fail at that we must recover what privacy remains.
We improve the quality of the process and the client’s environment.
The client’s environment is their office, their after-work activities, any mid-day walks to get a cookie, company retreats, and so on. Both the environments and the processes that the client uses must fit into our purpose statement, including all the ethics mentioned in here. Diversity, inclusivity, security, privacy, trust, and so on, are things we work with our clients on.
This also helps us to measure whether we and a client should part ways. If their processes are already too toxic or if we see that we cannot work with them to get them pointed in a direction that aligns with our purpose, then it makes sense to start the discussion about disengaging with them.
Beyond that, designing and building quality software means improving the security, privacy, and accessibility of the product, and includes improvements of life and reduction of harm for all users and contributors.
In addition to the previously-mentioned security and privacy concerns, this also sets goals for accessibility, life improvements, and reduced harm.
Any technology designed without considering people of different abilities and disabilities does not meet the goals of our purpose statement. This can range from using more clear and understandable language to choosing colors with stronger contrast to heavy use of ARIA attributes in HTML to ensuring all image uploads have captions.
Our goal is to use technology to improve the lives of all users and contributors. What this means is currently left up to the reader—however, since we as a company have this purpose, that means that we as a company will help each other drive this purpose forward. We emphasize that this is all users and contributors here: users are anyone affected by the product, such as people who use the Web site or people whose data we track on the backend; contributors are the client’s developers, product managers, third-party contractors, external submitters of pull requests, and anyone else who is contributing to building the technology.
We want to reduce the harm presented to the users and contributors. This can include typical examples of physical harm and also includes harassment. When we design a system, it is part of our purpose to factor in tools and patterns for reducing the negative effects these will have on all involved. We say “reduce” and not “eliminate” so that we can give the full trust to the thoughtbot employee to weigh the tradeoffs themselves.
We are running a marathon and not a sprint.
Implicit in this statement from our purpose is a belief that software can create a better future for humanity. This is the overall goal and the mindset driving all of our ethics. Let’s design software for that future.