When it comes to business success, culture matters. It does in any field, but especially in software development, where so much is riding on the talents of employees and their ability to work together as a team.
When you want to foster the culture required for a productive programming or software development organization, the devil is in the details. Many, many details.
So many, in fact, that I can’t cover them all in this one post. Today let’s delve into just one set of qualities essential to a winning culture, a group that I identify as the interpersonal elements:
You can’t hope to have a team work productively if its members don’t respect one another. In order for team members to achieve meaningful collaboration, they must listen to and consider one another’s ideas, and that doesn’t happen in an environment where everybody is not held in equal esteem.
Cultural differences can sometimes provide additional challenges. For instance, in some Asian cultures, workers aren’t treated with equal respect in a hierarchy. In fact, management hierarchies with a high degree of power distance are not compatible with mutual respect.
Often, the stories you hear revolving around mutual respect describe what happens when it’s missing from an organization. I recall once working with a developer named Frank on a user interface for a new screen. At one point, I suggested the interface needed a certain button, while Frank said he thought a link would work just as well. We both made our points, and then finally he basically said, “Well, who are you to say what it should be?”
It would have been one thing for us to simply disagree, but this was clearly a situation where he had some personal issue with me stating my opinion. In the end, I exhibited mutual respect by saying, “Well, OK, do it your way if you think it's better, because ultimately it's up to the customer.” But the way he handled it wasn’t appropriate, and obviously that sort of interaction is detrimental — if not downright toxic — for long-term collaboration.
Members of a team have to feel as if they’re all being treated equitably. An essential — but often overlooked — tool to that end is for the company to communicate its values to its employees, and distribute rewards accordingly.
One challenge here can be when various programmers discover they’re being paid differently. Another is when outsourcing clients offer the team monetary bonuses equally across the board, irrespective of members’ varying contributions. This can be potentially mitigated by having bonus money turned over to the outsourcing company, which can then distribute bonuses based on merit.
For members to produce the best possible product, they need the skills and competencies that come with being among the best in their field. Companies, in turn, should encourage, honor and reward such professionalism.
This might involve gaining certifications from Microsoft or Java, or through participation in organizations like the Association for Computing Machinery or the IEEE.I know that the IEEE has attempted to define the professions of software engineer, software developer, and other positions, and provides certifications for these as well.
Programmers should always be learning, be it via in-house training, online or through classes outside the company. Many of our partners provide training to their employees on both technical subjects and to improve their English language skills, and some even include personality training or personal training.
Don’t forget conferences and seminars. Attending these can be another useful way for programmers to learn and discover the latest advancements in the software industry and technical world.
When I say passion, I’m talking about leading from your heart and your values. This is essential. Nobody is ever going to excel in something they don’t care about in a fundamental way. I know, for example, that passion is an important element in the culture of our partner that does software outsourcing in Colombia, where they feel very strongly about programming as a profession and believe that they should have a passion for excellence and delivering software that customers will love.
As I said earlier, there are many, many elements that go into creating a successful programming culture — interpersonal aspects are just the tip of the iceberg. Come back for future posts, where I’ll discuss the importance of innovation, standards, communication and much more.