Shared values are an important part of a software development organisations culture; they communicate how teams prefer to work and their desirable practices and principles. A well-defined set of values which is embedded within an organisation culture can help to guide strategic and tactical decision making, help to resolve conflicts of opinion, and improve productivity due to aligned priorities. They can also help with people management activities such as recruitment, performance reviews, and on-boarding new employees without diluting the culture.
Many developers will have some experiences of shared values and much of the time view them quite negatively. Shared values are often criticised for being shallow, vague and corporate fluff which is being driven by a top-down mandate from managers who don't understand the nature of the day-to-day work.
Nearly every company I have worked for has had a variant of the same set of the same set of values such as teamwork and honesty. The values are generally positive behaviours such as "teamwork" or "honesty" which you couldn't really disagree with however they are so high-level they effectively become meaningless in guiding the behaviour within an organisation.
This doesn't have to be the case! Shared values can be valuable ;) if they are approached correctly. When setting out on defining your values it is important to give the people you expect to "live" the values a strong voice in creating them. Without doing so you will have less buy-in and your values will be dismissed. Values must be elaborated on with concrete and specific examples of the behaviours you are expecting and why they are important. Values must then be made highly visible and must be actively applied and demonstrated by leading by example and by holding management to the same standards.
There are some great examples of values from well-known companies which can be used for inspiration. GitLab do a fantastic job with their values they are thorough and concrete. I don't believe it is necessary for everyone to go to this level of detail however it is useful to "substantiate the core values" similar to how GitLab do.
In writing this post I have reflected a lot on my personal values in software development and what I would like to see in organisations I work for. This post marks the start of a series of posts in which I will define my personal values to help me clarify my thoughts and opinions. I came up with the following list for my first pass at my personal values; over time I will write additional articles to elaborate on them.
My Personal Values
- Continuous improvement
- Locality and empowerment
- Openness and safety