A previous post described twelve things a good software developer should look for in a company before accepting a job. In addition to using source code control, a bug database and testing, etc. there is one more important item developers should look for and companies should have. It’s a culture of software engineering excellence.
In general an organization’s culture is a pattern of shared basic assumptions that the group learned as it solved its problems. Understanding and shaping your company culture is critical to success. The assumptions, policies and procedures are sometimes stated explicitly and taught to new members as the correct way to behave and get things done.
Don't Ignore Your Culture
You can ignore your company culture but it will not ignore you, your employees and the other companies you partner with and depend on. Misalignment of employees with the company culture leads to unproductive work effort, disputes and generally uncomfortable place to work.
For example, a company may declare themselves as Agile and use Scrum methodologies to develop their software. If the CEO constantly injects new features in the middle of sprints then it is actually a culture of totalitarian dictatorship. Similarly if employees are punished for failure then a culture of innovation cannot flourish.
Software Engineering Culture
Kevin Scott, a VP of Engineering describes how he structured engineering teams at LinkedIn and AdMob. Scott has close to 40 detailed aspects in his “Engineering Cultural Manifesto” which are divided into three categories of:
How We Make Things – coding standards, reviews, design patterns, etc.
How We Operate Things – planning, monitoring, data integrity, etc.
How We Function as a Team – values, team structure, transparency, etc.
That last category covers values, focus and purpose which are traditionally part of the definition of culture for an entire company.
Create a Better Culture
A simpler higher-level model is offered by Martin Buberl who lists eight steps to better company culture for software engineering organization:
Are you innovative?
Are you agile?
Are you open?
Are you transparent?
Are you diverse?
Are you good?
Are you social?
Are you happy?
The article positions these questions as ones that a developer should ask and to receive mostly Yes answers before joining a company.
It is worth spending time to define your company culture because it is so important to your success. Your organization’s culture exists where or not it is explicitly defined and it is better to be conscious of it.
Being aware of your company culture also enables you to better understand the culture of other companies. Look for cultural alignment between you and the partner companies on which you depend. Make culture matching an important part of the evaluation and selection of your software outsourcing partner to ensure you attack and solve problems in the same way. Cultural alignment with your software outsourcing partner is critical to achieving transparent communication, innovation and agility required to create great software apps.
Don't waste time with a software outsourcing partner that doesn't fit with your company's culture. Discover how working with an outsourcing advisor can help you in our free eBook " 3 Reasons Why You Should Use an Outsourcing Advisor."