3 Steps to Creating An Engineering Culture
3 Steps to Creating An Engineering Culture
Because your company will have a culture. The question is whether it's one that you choose or one that develops internally. And you might not like the latter.
Join the DZone community and get the full member experience.Join For Free
The Agile Zone is brought to you in partnership with Techtown Training. Learn how DevOps and SAFe® can be used either separately or in unison as a way to make your organization more efficient, more effective, and more successful in our SAFe® vs DevOps eBook.
In my previous article I talked about the importance of having happy and engaged employees in order to be successful. In this article I will take it one step further and talk about the importance of having a strong software engineering culture in order to get things done, done right and happy employees.
What Is a Engineering Culture?
Nowadays you hear the term engineering culture all the time. Big companies like Google, Netflix, and Spotify all talk about their amazing engineering culture. But have you ever asked yourself what is an engineering culture? I'm sure if you ask around you will get many different answers.
An engineering culture is basically the shared assumptions, values and beliefs which determines how to behave, e.g. develop software, solve problems, deal with customers, and work as a team. The values have a strong influence on how people in the company act and perform their jobs.
Why Is Having a Great Culture So Important?
A culture is a critical success factor for the success and growth of your business. A great engineering culture results in getting things done (software delivered), done right (quality), and happy people and customers (overall satisfaction).
"If vision is where you are going, culture is what makes sure you can get there." —Spotify
Every company, whether it's spelled out or not, has a culture. If you haven't decided your values and beliefs, the culture is automatically formed and is strongly influenced by the founders, how employees are treated, how clients are treated, the people that you hire, and how people interact with each other. Some employees contribute to a great company culture and others have a huge negative impact.
Maybe you think certain beliefs or values are so evident that you don't need to spell it out and that everyone around you will adhere to it just because it's common sense. Well guess what: everyone has their own belief systems and what is common sense for you might not make sense for someone else.
Culture can make or break your company. You don't want to sit back and leave it up to chance. Take charge and decide what is important for your company because your values will drive your culture as long as your people know and believe in them.
Step 1: Decide What Is Important for You
Deciding which values are important for you as a company is something that requires some serious thinking and time. Don't just copy whatever Spotify or Netflix is using because they have a popular engineering culture. You really need to think what belief system matches your company.
I worked for a B2B software company. Our products needed to be implemented at large financial institutions. The Spotify engineering culture believes that teams can innovate wherever and whenever they want and use new frameworks and technologies if they see fit. If we would have copied this value that would have had great impact on our customers and our professional services organisation. They would need to learn all these new technologies and support them and trust me this is not what customers are willing to accept. So don't just copy, but sit with your team and make sure that you find what is important and will work for you, your employees and your customers.
When shaping your values, keep your goal in mind.
You want to establish a good engineering culture where things get done (software is delivered), get done right (quality) and people and customers are happy (overall satisfaction).
At Spotify they strongly believe that leaders provide direction and guidance and that they get out of the way and leave it up to the team to do the rest. On paper this sounds great and a lot of companies say they want this. However think carefully about what this really means and whether you are able to implement such a value in your company. Autonomous teams require a lot of trust and freedom and they will only work if this is shared at all levels of the organisation. Some companies are not able or willing to do this. So be realistic.
Innovation is an important value for Google. They have implemented all kinds of mechanisms to make this happen. For example they give each employee 20% of their work time to pursue projects that they are passionate about, even if it is outside the core job or core mission of the company. You can think this is very generous but for Google it serves a purpose. They need to innovate in order to stay on top. That does't mean that you should implement the same in your company. Giving people 20% to work on innovation is a huge investment and it needs to serve a purpose for your company.
Values Are Supported Company Wide
Values need to be supported company wide. This is an area where I failed myself in the past. Being naive to think you can create values in one team, without making sure that the other parts of the company support the same values.
Say your sales team believes that it's ok to sell a product or a service by crossing the line of what is feasible. Many companies will do this in order to win the customer, and get a foot in the door. At the same time your delivery team believes in delivering quality solutions and doing things right. Two values supported by the company. However, as a business realise you can't always have it both ways, and you need to decide which value is more important for you. This, of course, will drive whether you are a more sales or delivery driven organisation.
Arguably, I would say a good engineering culture would never comprise on the quality of their delivery. At the same time I do understand why companies select to be more sales driven. Whichever you choose make sure everyone is aware and be prepared to accept the consequences, e.g. saying no to your customer, poor quality, or slipping deadlines.
Step 2: Put Mechanisms in Place
Once you put the values in place you want to make sure that people live up to them. How do you do this?
Have a close look at your people, your operations, your organisational structure and your work place and check if they support your values. If not be prepared to make the necessary changes.
Selecting the Right People
When hiring people validate that they share and believe in the same values. Make sure there is the so-called "DNA match." This will prevent problems later on. One bad hire can have a huge negative influence on a team and the culture. Have you ever experienced what happens when you put one extremely negative person in a team? How that impacts the team spirit. Do something about it because it can eventually become infectious and before you know it there is a group of people standing at the coffee machine complaining about silly things. If you hired someone that just doesn't fit in your company then also be prepared to say goodbye.
If servant leadership is important in your company make sure that your leaders have this quality and if not, be prepared to train them. For me it also took time to realize that managing people is not about me but all about getting the most out of your people and your teams. Making sure that they can do the work in the best way possible.
Processes and Operations
In some cases it makes sense to have processes in place to help accomplish what you are trying to achieve.
Say you want your company to constantly improve and get better in what you do then think about how this can be accomplished. Stimulate people to identify problems and come up with idea's how things can be improved. You can institutionalize within your company retrospectives or implement Kaizen. Stimulate your people and get them involved in identifying areas for improvement and to help generate idea's on how to fix them.
Within my previous company we organized team retrospectives to determine what needed to be improved. The results of these sessions were captured and would drive the objectives and key results (OKR's) for the next period. Next we would reserve time that people can work on improvements because Continuous Improvement was one of our key values.
Some values need the organisational structure to be changed in order to support them. If you take Spotify for example they have organised their whole company in such a way to facilitate their beliefs and create their engineering culture.
Copying the organisational structure of Spotify is popular but before doing such a thing, think what you are trying to achieve. Remember that an engineering culture depends on your values and if your values are different then Spotify's (which is very likely), than you shouldn't just do a blind copy. Of course it's fine to copy the things that make sense.
For example, to support frequent product deliveries you can implement a cross-functional team structure so your teams can operate and deliver fast and work independent of other teams.
Cross-functional teams have all competencies needed to accomplish the work without depending on others not part of the team
Have a close look at the work space. Where do your teams sit and how do they work together? Collaboration and communication are important factors to achieve a great culture. Invest in the facilities that are needed for your teams. Do you have enough collaboration spaces, whiteboards, meeting rooms, etc...? If your teams are spread over multiple locations then make sure you have the right facilities in place to make it work, like good conferencing tools.
Step 3: Live and Breath Your Values
So remember, values drive your culture. But even if you have invested a lot of time to identify the right values and put all the mechanisms in place, it might not have the desired result. Culture is something that happens and putting the right values and mechanisms in place will help move your company in the right direction, but it's no guarantee for success.
In order to increase chances of success you need to live and breath your values. You need to truly believe in it at all levels in the organisation and not compromise on them.
Make sure that people know the values. It should be part of every on-boarding. It is one of the first things that new people need to learn. But also make sure to remind people as often as possible, e.g. in employee guidelines, during appraisals and town hall meetings.
Eat Your Own Dog Food
People look up to you and they will imitate your behaviour. So make sure that you and the rest of the leadership team are the evangelists and give the right example.
Validate that all teams are living up to their values. Find a way to measure it. Identify and put actions in place in case you need to improve. If a value doesn't make sense, e.g. the value was defined early on but in hindsight it doesn't fit with your company, then get rid of it.
Building a great engineering culture is not something that you can do easily. There are no cheats. It will not automatically happen by copying the values and organisation structure from another company. You need to really invest in creating a culture that works for your company.
You can look at organisational structures, values and principles from other companies to get inspired. But most important sit down with your people and decide what is important for your company. Put mechanisms in place that will support the concepts, allow them to grow. Then live and breathe it within all levels of your company.
If you think this post was useful please like the post or send me your feedback. It will encourage me to write more…
In case you want to read more, please read my next post about the top 10 values to create a great engineering culture.
Published at DZone with permission of Linda Bovaird . See the original article here.
Opinions expressed by DZone contributors are their own.