Code with Attitude - Part 1: Values
At synyx we recently came forward with a new tagline, trying to express our general mindset that is distinctive concerning the way we work with clients, the software community and each other. The line is:
In the instant I heard this simple sentence for the first time it triggered a multitude of associations, memories and emotions that I connect with the word "attitude" in conjunction with software development. One after another all the situations from different projects during my time at synyx came to mind, where a certain expression of attitude helped on the way to success. This tells me that our marketing dudes did an excellent job expressing the synyx mindset in one powerful and simple statement and also that I have a lot to say about it. This is why I want to share my interpretation of "Code with Attitude" within this blog series.
Part 1 - Courage to be true to your values
As a human being everybody has a bunch of values and moral standards that you deem to be important and that greatly influence where and how you live and work. Now you are probably thinking of something like "Don't code guidance software for nuclear weapons" or "If you manager tells you to tweak the emission control software for the new car model - say no!". Although these are obvious examples, this is not quite what I mean as I have never been in an extreme situation like this - nor have 99% of software developers. What I mean is a set of values, that influence your day-to-day work, like the dedication to quality and sustainability, respectful communication or keeping an open mind.
Behind the term "your values" lies more complexity than you might expect. It does not only mean your personal, individual values but also those of your employer and - if your employer is a service provider - even the values of your clients. If you are working for your client it is in his best interest when you take his sense of what is right or wrong into account for the actions you take or don't take. Ideally those three value systems should be mostly overlapping. If they are heavily misaligned this is a situation that you should not be in.
Becoming aware of these values is only the first step. The second one is to venerate and defend them, which often needs
one of the core agile values - courage.
In fact I am convinced that it is an integral part of our job to bring up the courage to act on our own and our client’s values. But what does this mean in practice?
There are countless examples of situations where that courage is needed. There is the business guy from the "quality is key" company, who wants to cut software tests to deliver faster to the clients. There are multi-team environments in the "collaborative mind" company where every team is keeping to their own instead of collaborating, feeding to the "Us and Them" mindset. There is the Project Manager in the "customer centric" company, conducting a design-up-front-waterfall-big-bang-release project without the feedback of one single customer. There is the whatever-guy from the "security first" company not caring about data encryption. There is the developer in the "open source" company claiming ownership of "his" part of code within the project. There are quality engineers in the "work smarter not harder" company clicking through thousands of pages of manual testing plans. If you witness any of those or similar situations at your employer or client, it is your obligation as a rational and professional person to address and try to improve the issue. More often than not I observe external contractors or employees resigning to the circumstances thinking "Fuck it, I'm doing my job and getting paid for what I am told". In my opinion this is the opposite of "doing your job". Your job is to do what is best for your employer/client/project and that means to bring up the courage to question established practices, to actively address problems, to call out bullshit if necessary.
For many people this might seem counter-intuitive. The conservative employer thinks he needs people, who do as they are told. The conservative employee keeps to himself being afraid to offend anybody and fearing the repercussions. In fact the opposite is true and both would highly benefit from "showing more attitude". As an employer you should embrace employees and external contractors, who question things and who challenge everything against your values and their own values. This is the only way to improve, to produce sustainable products, to come closer to excellence and to create the solutions you really want! As an employee questioning things and standing up for your values makes your dayjob more exciting and meaningful instantly! It gives you the chance to do something that you really care about from your own accord, thus increasing your motivation and quality of life and consequentially improving the quality of your work results!
For me this is one of the core parts of "Code with attitude" and one of the most basic mindsets that we live and breathe here at synyx. It is the attitude to have the strong intention to understand our client's value system and needs and to have the courage to actively act in their best interest, while incorporating our own values for our client's good.
During my work in different projects this mindset has helped me and our clients countless times. I don't know how often
we had to defend our values of sustainability, quality and excellence by emphasizing the importance of things like code quality, automated tests,
slack time and refactorings to keep a project afloat or even rescue it from certain failure. There were times when clients needed
to be reminded of their own core values like customer friendliness, innovativeness, data minimization or accessability.
Otherwise their projects would have gone in (for them!) completely undesirable directions.
It is part of our job to get to know the client's values and remind them!
One time I actually witnessed a project manager from a larger corporation with a hundreds-of-developers-software-department make the claim that his company is _not_ a software company and therefore the software doesn't have to be developed on a professional level. The guy in a room of ten people who spoke up was me - the only guy not employed by the company. I love being that guy, it is a great part of what makes my job meaningful.
The bottom line is that to be of maximum value for you and your client you have to be aware of that complex value system mentioned above and you have to bring up the courage to act on it. To say "no" at the right times, to say "yes, but" at the right times, to encourage at the right times. Code with attitude!