This blog series is more of a note to self and a chance to share my experience with running a Scrum team in an outsourcing environment for a software project.
An opinion piece
Outsourcing or offshoring, which ever way you want to spin it, is essentially a distributed team environment. A virtual office if you will. The members of the team have to deal with added complexities to any projects be it difference in time zones, cultural misunderstandings, and communication problems on a daily basis. The culmination of all the added hurdles may result in the detriment of product quality or delayed releases. Digging a little deeper, one might find that the code quality could be so lacking that it becomes a chore to maintain or even expand.
I am not having a go at outsourcing in general. Quite the contrary. I believe outsourcing works. I enjoy overseeing these types of projects and the associated challenges. I am a firm believer that it can be managed successfully.
Committing to long term outsourcing is akin to your top brass management buying over their favourite development house somewhere else in the world during their summer vacation, whilst trying to sell this idea back home. Cynical as it sounds, this whole shenanigan can function like a well oiled machine. However, lets not kid ourselves about the amount of oil needed to lubricate the bad boy which is another topic altogether.
The get up
Here`s the get up: we are a start-up company. We approached a local company with a strong connection to Bangladesh. They too, were starting up. Together we were tasked to find the smartest and brightest to work on our project in Dhaka.
Hiring is tricky
Now comes the dilemma, hiring. During the interview process, one of the applicant informed us that engineers in Bangladesh were more willing to work for a well established, household-name I.T. companies as a cleaner than for a start-up company as a senior engineer. It seems branding was everything. Indeed this was shocking news because the word on the street was that more and more big names was going to set up shop in Dhaka too.
Hiring was indeed difficult because brand awareness was apparently the key attraction in Dhaka. A high salary simply will not attract the right people. Luckily for us, we were an up and coming open source company and our product was already well received in the community. Our shining star was that it was going to be a brand new project with an existing prototype built with leading edge technologies.
Communication is key
Eventually we settled on five bright minds with varying degrees of English competency. Communication proved difficult. Here`s a precursor before I continue. I am an Australian working in Norway. Our working language is English and we are based in Oslo. The outsourced team at times needed to interact with my Norwegian colleagues, whom are not native English speakers. Norwegians in general speak fantastic English. It is second nature to them. However accents were difficult for my Norwegian colleagues, which was both frustrating and blatantly counter productive.
To add insult to injury, internet is unpredictable and bandwidth was inadequate. Not to mention there are frequent power outages in Dhaka. This resulted in horrible daily Scrum meetings and end of sprint demos where none of the attended parties could understand one and other. The situation improved as a backup generator was installed and more bandwidth was provided by the local ISP in Dhaka. Note that the internet cables in Dhaka are often exposed and lies jumbled up right next to the road at times. Not entirely sure if they are weather proof even.
Travels to Dhaka to meet the team was scheduled at least twice a year. This was an excellent chance for meet and greet, and some team building. Noticeable motivation and communication level was improved with these outings. I strongly recommend a make-shift karaoke session with jugs of long island ice tea to break the ice.
Last but not least, I am a firm believer of knowledge sharing and encourage the Dhaka team to have knowledge sharing sessions. This included hosting a developer`s day, where each of the team members presented something of their interests or something new to the team. Companies often encourages sharing of knowledge but they stop short of hosting an annual event or actually schedule time in a week where techies can roam free and just be techies.
A little checklist
In summary, I have learnt the following:
- Hiring good engineers is the same back home. You will be competing against well established software houses.
- Good brand awareness will improve the chance of hiring the right team in an outsourcing environment.
- Frequent visit either to or fro helps build team morale and motivation.
- Communication plays an even bigger part in outsourcing. Ensure the infrastructure is there for web meetings.
- High level of English competency ensures that the outsourced team can be understood by everybody.
- Build rapport with individual team members. Your team members need to be comfortable enough to really tell you their blockers during daily Scrum.
- Participate in daily Scrum along with the team.