Robot Battle Competition, Technical University of Cluj-Napoca, Romania

I was invited by a Test Engineering Consultant and friend to attend a robot battle competition at the Technical University of Cluj-Napoca, Romania.  I had never been to such a competition so I didn’t know what to expect.  What an amazing experience!

I found myself in a lecture hall packed with students, not to mention a few recruiters from Bosch and other engineering employers. The teams were as diverse as their robots.  They were from different engineering departments: software, mechanical, electrical. The robots were entirely autonomous. Once the competition began, the robots functioned on their own, using their sensors and motors. No remote controls.

Two students adjusting their robot before fight time.
Two students adjusting their robot before fight time.

The object of the game was to push the opponent robot out of the magnetic circle, similar to a sumo competition. When the buzzer sounded, the crowds roared like what I’d imagine in a boxing competition.  The robots pushed and pounded and used all kinds of maneuvers to out fox the opponent. Some of them spun at very high speeds, confusing the opponents sensors, and then pounding into them. Others slow but heavy and deadly. One was covered with a furry coat! That was the all female team, whose robot made it to the finals.

Cluj-Napoca, Romania is an IT hub with hundreds of computer science graduates each year.

https://www.facebook.com/BattleLabRobotica

3 Characteristics of highly effective software outsourcing partners

In our experience, there are three key characteristics of highly effective software outsourcing providers:

1. Marketplace

The provider is located in a region with availability of talent, cultural similarities (to its customers), strong communication skills (fluency in customer’s language), and a strong education system. Sometimes only two of these four criteria are available. But then the challenges are greater. We prefer to hit the mark on all four.

2. Infrastructure

The best software providers are highly capable operationally.  They have strong HR teams to compete in the marketplace and recruit qualified candidates. They have well established on-boarding, training, and on-going mentoring programs. They’ve established structured career paths  for their personnel, and they invest in recreational and team-building programs. In other words, they developed infrastructure that attracts the best candidates and draws their people’s best work. We find that going on-location is an effective way to judge providers’ operational strength. In a broader sense, we look for providers that have grown past their adolescent years, have a very professional managerial staff, and are highly competitive in their marketplace.

3. Focus on the Relationship

Building strong trust relationships is critical to long-term success in outsourcing. The most important aspect here is the willingness to invest in the relationship. Successful software providers value the relationship with their clients above all things. They are willing to invest in the relationship in the form of extra time, trips to the client, and low-cost trial/pilots. I’ve also seen providers invest time in product innovations for their clients.

But consider also that from the client’s side a focus on relationship is needed also.  For example, schedule periodic high-level meetings, discuss your business opportunities and challenges, turn your providers into partners. Make sure to go on-location at least once a year. Build relationships on multiple levels: send your engineers to your software partner and invite their engineers to your location. The benefits may not seem quantifiable. Yet they are! We’ve seen significant advances in productivity as a result of on-location visits.

Recently one of our customers said, “Our timelines are tight, the pressure it high, the project is complex, but we know they [the provider’s team] are very skilled and that we can count on them to pull through for us.” As directors, we have enough internal pressures. What we want are partners who are self-managing and proactive; we want to trust them to do great work.

Virtual Team Launch Kit Released!

The first step in ensuring a successful high-performing virtual team is recognizing that virtual teams function differently than co-located teams.

Eight months ago we launched a remote software development team for a client in Baltimore, MD.  We invited two team members from Eastern Europe to attend a 1-week orientation. TeamFound was on-site for the first two days to administer team kick-off meetings and run guidance sessions for managers.  Today, 8 months later, the team is going strong and has proven to be a valuable asset to our client.

We structured the kick-off meetings according to a system we derived from our experience in managing remote teams. The program looked like this:

  • Getting to know each other, building trust
  • Clarify goals and relay purpose
  • Roles and responsibilities
  • Process and workflows
  • Team norms
  • Tools and technology
  • Programming and design expectations
  • Action items

Because of our client’s positive feedback and the results they experienced, we decided to structure similar kick-off meetings for other customers.  That lead us to writing a Virtual Team Launch Kit..  The launch kit includes a detailed kick-off program (above), as well as the following:

Pre-Launch Considerations

  • Team member roles and responsibilities
  • The right combination of technical and “virtual” skills to work effectively in a virtual environment
  • Supporting effective communication and sharing of information
  • Recognizing and rewarding team and individual team members

The Role of a Virtual Team Leader

  • Managing Change
  • Fostering a Collaborative Atmosphere
  • Communicating Team Goals
  • Strong Interpersonal Communication Skills
  • Empower Team Members

We hope the launch kit serves as a reference guide to our clients in support of our consultation services, in addition to a means of disseminating remote team management skills across their organizations.

The importance of setting roles and expectations in distributed teams

Team members are more willing to trust and cooperate with each other when they know what to expect from each other, especially in distributed teams where personal contact is limited.  Each team member should understand his or her role and responsibilities, as well as those of his or her teammates.  This is especially important between team leads in a client/contractor relationship.

Our research shows that… Collaboration improves when the roles of individual team members are clearly defined and well understood—when individuals feel that they can do a significant portion of their work independently… In addition, team members are more likely to want to collaborate if the path to achieving the team’s goal is left somewhat ambiguous. If a team perceives the task as one that requires creativity, where the approach is not yet well known or predefined, its members are more likely to invest time and energy in collaboration.” Eight Ways to Build Collaborative Teams, Harvard Business Review, Nov. 2007.

The “ambiguous path” is fostered by assigning projects, rather than a series of independent tasks.  In The Vertical Activity Stack, we describe how to apply this in managing software development projects.

Chris Lema in Building & Managing Virtual Teams put it this way: “Task management can’t be the linchpin of your management approach with remote teams.”  He stresses that leaders should clarify what’s expected of their team members, why they’re functioning in that particular role.  Then leaders can free their people to make the decisions they need to make. In other words, design a system for your team that encourages autonomy.

When meeting on this topic, one approach is to have the team list all critical decisions and activities that they anticipate or for which they are already accountable.  These are then discussed and agreement is reached on who has which role.  While this process can take place over the course of the team’s collaboration, determining roles early in the team’s life cycle helps accelerate productivity.

If internal team members have other responsibilities in addition to their work with the remote team, consider how competing priorities will be handled.  Competing priorities can derail projects, so it is essential to handle this issue up-front.

Planning processes and workflows for a dispersed team

Process is usually not a top-priority when a small team is co-located. Teams often get by with little to no process and no documented workflows.  If co-located teams take-on virtual team members, and do not make the necessary effort to build process infrastructure, they will experience frustrations and loss of performance.  Therefore, one of the most important planning initiatives for organizations preparing to work with virtual teams is designing robust processes and documenting them.

I suggest making a best effort to design the processes up-front collaboratively among your team members, internal and remote.  Working together, your team will feel more ownership of the process, and it’s a good team building exercise.  Refinements can be made later as needed.

Far beyond resolving loss of performance, robust processes can enable virtual teams to actually outperform collocated teams.  In a 2009 article titled How to Manage Virtual Teams, published by MIT Sloan Management Review, the authors write:

“Virtual teams that had processes that increased the levels of mutual support, member effort, work coordination, balance of member contributions and task-related communications consistently outperformed other teams with lower levels. Moreover, dispersed teams that had high levels of task-related processes were notably able to outperform co-located teams with similar levels of those same processes despite the physical separation of their members.”

It’s an interesting perspective on the importance of processes, and lays emphasis on the quality of the task-related processes.  Therefore, a focused and collaborative undertaking of process design is a critical factor for the success of a dispersed team.

The Story of TeamFound

“What in the world am I doing here!” was my first thought as I woke up to the sounds of honking auto-rickshaws and motorcycles on the streets of Bangalore. That was 2007, when I setup my first software/BPO relationship with a small firm in Koramangala.  The mission: develop a specialized data processing application & setup an operations team.  Today this relationship has reduced costs 75% for the client while improving turn around times.

Crossing the Fagaras mountains on winding country roads into Transylvania was another experience altogether. In 2008 I began a search for software engineering talent in Eastern Europe. We chose Romania. The timing was critical, as mobile was exploding and we needed an iPhone app built fast with one Romanian provider, while developing the prerequisite web service API’s with another Romanian provider.  Today, those same companies have built 8 phone applications on both the Andriod and iPhone platform, Facebook applications, API infrastructures, and completed many other key projects.

In Vermont, finding software talent is a ratio problem – how many talented engineers exist in a region of 100,000 people? While we were slowly and carefully building our in-house development office, we were faced with a choice: either augment our resources elsewhere or suffer delays in getting to market.

I have started TeamFound with the idea that I can help other companies better manage their remote work forces. I have established and project tested relationships in India, Philippines, Romania, U.K, and Ukraine.

Sizing internal development teams in Outsourcing

When implementing staff augmentation outsourcing, what are the key considerations in sizing your internal team?

First some clarifications: By staff augmentation, I am referring to a long-term contracting relationship where the provider supplies labor and manages the environment, recruitment, training. I am not referring to outsourced developers working on-site, which may be a transitional phase to allow the client to build its experience with the provider and transfer knowledge.

Considerations:

1. Ensure production support.  If the internal team is responsible for production support, ensure enough staff to cover production related matters such as:

  • Assisting systems/IT in diagnosing problems
  • Working with operations or customer support in diagnostic or emergency cases

2. Backups of #1.  Depending on one senior developer to support production is precarious, incase she’s ill or on vacation.  Also, developers who have production responsibilities are less available for new work.  It’s a common problem: you want your most experienced developers to lead new features, but they’re also the most capable for production support.  Encourage them to train their less experienced colleagues.  It’s not easy when seniors can do it in a fraction of the time.  But they must delegate production issues if you ever hope to staff properly.

3. Outsourcing leadership overhead.  In an optimized staff augmentation scenario, the remote team is highly independent. Projects are sliced vertically, enabling remote teams to be as autonomous as possible, taking on as many tasks and roles as they can, to minimize communication time with internal leads.  However, leadership overhead is still unavoidable.  So those hard-working internal developers, who, as we’ve been discussing, support production issues, mentor others, lead projects, and code, now have the added responsibility of guiding remote teams.  Their work includes regular meetings, answering questions, validating specs, and steering the technology.  This is part of the overhead of staff augmentation.  Typically 20 – 30% of an internal lead’s time is enough to support a 2-3 person remote team.

4. Analyst/PM. If the team is larger, consider supplementing with an internal analyst or project manager. Good software analysts have broad technical and communication skills, and can handle most of the communication, spec writing/reviews, and project management, for your remote team.

In a situation where the remote team functions independently and is in full control of the code, you will not need an internal developer.  An analyst or project manager would suffice.

I hope these points offer a useful perspective to your remote team management and internal resource planning.

Remote Software Developers LAMP, PHP, Open-Source, WordPress

Client: Vermont and New Hampshire retail establishment
Industry: Jewelry, Ecommerce
Technology: LAMP, PHP, Open-source
Remote Team: 1 Software Developer
Location of remote team: Eastern Europe

What were your software challenges?

In our trade, it’s a real challenge to run ecommerce operations because product data comes from diverse sources, and is frequently changing. We were also faced with having to sink a lot of cost into a limited ecommerce solution, which served us up to that point, but would not enable us to grow effectively. We needed a better path.

How did TeamFound help you?

Ron first worked with us as a software consultant. He had 11 years experience in ecommerce as an engineer and software manager. He advised us on a software architecture that incorporates (a) a modern well-established ecommerce platform, (b) web service API’s, and (c) a custom merchandising application. These three elements work together to enable us to work with diverse data sets, merchandize effectively, and grow our online sales.

TeamFound then tapped their network to help us find the right developers. We established a direct relationship with a provider in Romania. We have no experience with offshore engineering, but Ron helped us setup a communications and development processes and guided us along the way. That made all the difference!

How would you characterize your engagement with a remote engineering provider?

We worked with a developer who performed quite a wide set of activities: from customizing an ecommerce platform, to developing API’s and a custom merchandising application. He also managed our data operations for a while, until we were able to train our staff. Working with a vetted provider, rather than just any company or freelancer, gave us greater confidence. TeamFound steered us to utilize their architects, code reviewers, and software testers when needed, thereby knowing that the software was on solid grounding. And we had multiple communication points. We also didn’t have to worry about our developer dropping the project. When it came to ramping-down the engineering effort, the provider was very accommodating, offering us a flexible plan.

How did your communication with the remote developer go?

We met weekly using GoToMeeting with webcams on. Our discussion points were organized into “Issues” that are documented in a software project management tool. Ron facilitated the meetings. We had direct discussions with a developer whose communications and english is excellent. We functioned quite well as a team.

Brazil, Romania, and Ukraine score high in Imagine Cup 2012

Brazilian, Romanian, and Ukrainian students scored top positions in the Microsoft sponsored Imagine Cup 2012 event held in Sydney, Australia earlier this month. The Imagine Cup event is a world-wide student event competition. Since 2003 358,000 students have participated representing 183 countries.  The theme this year was “Imagine a world where technology helps solve the toughest problems.”

There were 7 categories of challenges including Software Design, Game Design, and IT Challenge.  Romanian students scored 1st place in the IT Challenge, and 2nd place in the Windows Azure Challenge.  Students were from Romanian-American University of Bucharest, Technical University of Cluj-Napoca, and Babes Bolyai University of Cluj-Napoca.

Ukraine scored 1st place in Software Design and 2nd place in Windows Metro Style App.  Brazil showed the most impressive winnings in 3 different 1st place positions: Kinect Fun Labs, Windows Metro Style App, and Windows Azure.  Kudos to all  participating students!

Thanks to George Lazar for his contribution to this post.

Romanian IT Primer at TechCrunch

In the TechCrunch article With A Talent War In The Valley, Perhaps Romania Has The Answers, Maria Constantinescu makes some generalizations about the culture, technical skills, and value of Romanian developers. The article is worth reading for those talent mongers unfamiliar with Romania as an IT outsourcing destination.

Taking a different angle on “The Valley”, I’ve often noted to my colleagues that Bucharest, Cluj, Timisoara, and other emerging Romanian IT hubs are a Silicon Valley waiting to happen.  When the business and marketing halves of the new Romanian economy catch up to these highly skilled Romanian developers, we will see unstoppable socioeconomic flipping points.  As Seth Godin puts it, these are “the outcome of an activated internal conversation.”  It’s started already among some young Romanian entrepreneurs.  The conversation goes something like, “Why not Romania? Why not here? Why not me?”  We see it with Slickflick, Branient, ShareYourCart and other Romanian ventures.

Meanwhile, and probably for a long time to come, Romania offers the rest of the world a rich pool of engineering talent.