Home > Hiring, Software Engineering > Building a world class global team 101: start building a culture based on mutual dependence

Building a world class global team 101: start building a culture based on mutual dependence

This particular scenario happens very frequently.

The software company and its software product portfolio enter a new period of significant growth.  The software products are now sold and used by customers in multiple countries.

One software engineering team based in one country – usually where the product was originally developed and launched – is increasingly unable to maintain product development velocity, especially when product requirements are influenced by unique requirements in other countries.  It’s simply not possible to have the same team operate 24 hours a day.

It’s time to implement a global software engineering strategy:  additional teams based in other countries, working together, using time zones as a strategic advantage.

Companies which have multiple software engineering organizations in several countries are nothing new.  However, they all share one common attribute.  Before a global software engineering strategy led to a measurable improvement in product development velocity, during the early stage of implementing this strategy things actually got worse – not better.

This blog entry is about a practical and proven approach to skip “it’s worse than previously thought” and go directly to “one product, one team, working together – and faster”.

Please consider these steps.

First – perform a clinical review of how the software product is designed and built.

–          Look for opportunities to componentize the software engineering process

Then – create a culture of mutual dependence.

–          Intentionally assign ownership of components which depend on each other to different teams

–          This creates a culture where one team cannot succeed working largely alone.  If one team creates an API and another team consumes it, both teams cannot declare victory all major requirements are met, including ensuring that API cam meet certain scalability and performance targets.  Scalability testing could be done by yet another team in another country.

–          Collaboration by design compels all teams to work together while being driven by the same shared agenda

–          Do not co-locate QA engineering resources with the same team (as tempting as it might be due to convenience).  When QA engineers and software design engineers in test are based in different locations, it takes extra effort for functional knowledge to flow to QA engineers and test feedback to flow in reverse to software engineers.  Yet in this instance distance plays a very beneficial role.  Both software engineers and QA engineers must find and implement the right process to ensure that distance does not present itself as a barrier to success.  Again – collaboration by design …

Finally – implement a build process which supports the culture of mutual dependence

–          To illustrate:  if one team creates an API consumed by others, create a build process which first generates API component and then triggers integration of this component by separate build processes owned by teams which rely on this component.

–          Build failures will immediately trigger collaborative discussions between all teams.   The root cause is not as important as the collaborative process to find the root cause, perform lessons learned, and quickly implement  changes and if needed sustainable improvements.

One of the biggest benefits of implementing a culture of mutual dependence in a global software engineering organization is how quickly one could witness and correct weak links.

The culture of mutual dependence compels every manager – in addition to performing their duties – to become an interested party in the success of every other manager that owns a component or components that everyone relies on.

Those who cannot collaborate and put the needs of the customer and the product above all other considerations will be easily recognized and replaced.

  1. Raj Naik
    October 6, 2010 at 8:26 pm

    Agreed Leon.. This is ture.

  2. Pablo Castaño
    October 29, 2010 at 9:22 am

    I totally agree with you Leon; as always, you have explained the key points for designing effective processes in a clear way. But let me add some reflections that I consider very important from the point of view of the human aspect.

    Starting form “The culture of mutual dependence compels every manager”, I think several things (mostly of them are obvious, but not always given the adequate relevance) must be taken into account:

    – A clear strategy in this aspect must be designed, assumed and communicated to all the people involved in the process from the executive managers of the company. Much more important in an scenario of change in which things had always been done in a specific way and from now on they will be totally different.

    – State clearly the development managers responsible on each country so they know precisely to whom the must talk to for sharing information and solve problems, and appoint a global development director with an international perspective and a strong skills in problem solving and social habilities.

    – Keep all the managers in tight touch. Promote regular meetings in person, and a fluid everyday communications among them.

    – Set global objectives and incentives in order to reinforce the focus on collaboration.

    – Assist all the people involved in the process to the new way to do the things. Have always in your mind that this is a process of change.

    – Be prepared for the bad times that are to come when everything seems to fail. Be faithful to the strategy and objectives. Be firm with your decisions and make a very strong communication effort to make it clear where we are headed and how we’re doing.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: