Selecting a Software Development Outsourcing Partner? Here’s What to Look for…

Software development outsourcing is currently experiencing rapid growth, especially in software engineering. Client and service providers are seeking to strengthen their relationship with each other to obtain greater business value from outsourced engineering services. PWC (PricewaterhouseCoopers) reports that the global research and development spending on software offerings increased by 65% between 2010-2015, from $86 billion to $142 billion.

The study shows, in order to support the development of software and service offerings, fewer companies will focus their R&D spending on the electrical and mechanical field. By 2020, the number of companies reporting that electrical engineers are their top employed engineering specialty will fall by 35 percent and the proportion of companies who expect that data engineers will represent their largest group of employed engineers will double from 8% to 16%. These figures represent a significant growth rate and the spend on outsourced engineering services is expected to grow with the demand.

Selecting a partner for a software engineering outsourcing project requires considerable reflection on the factors that are most critical for long-term success. Specific details will vary greatly, although all project managers should consider the following general topics:

  • Quality
  • Team spirit
  • Developer empowerment
  • Location
  • Communication

Use these topics to generate discussions with vendor partners as to how they will address these issues for your particular project.

Quality

It’s particularly difficult to assess the quality of work for a new team on a new software engineering outsourcing project. However, it’s essential for the team to have open communication with the client and a strong grasp of the development processes it will use. Each delay in implementing the code also delays the development of any functionality dependent upon that code. Coding delays therefore increase the risk of undesired consequences once they are implemented. Intertech classifies work quality for software development into code quality, process quality and inter-team communication.

Quality code should be clean, extensible and documented. It should also adhere to accepted coding standards, including automated testing and version control. Applications should be highly modular, with sufficient inline documentation to adequately describe each module’s function. In-line comments are much easier to keep current than separate documentation, since the programmer can easily update comments when updating the code. The development process should be well-organized and highly repeatable. It should also be transparent, allowing you to determine how the developers are performing their work. The agile development methodology also relies on simple processes that will not impede productivity.

Effective inter-team communication is essential for creating bug-free code that provides usable functionality for the user. It also prevents developers from writing good code that solves the wrong problem. Individual developers must therefore communicate directly with each other as well as the project manager and other stakeholders.

Team Spirit

A development team must have a positive energy to become a productive part of the project, according to Inbound Logistics. This energy can become infectious and drive team members to excel when it’s in the right place. Team spirit, therefore, needs to be encouraged from the beginning of the project, so that it can carry members through the inevitable challenges that occur for all projects.

Changing team members is occasionally necessary to maintain team spirit. John Sircy, president of Petter Supply Company says, “A few judicious changes in team membership also inject new energy into a team that has been operational for an extended period of time.” He adds, “It takes word of mouth from people involved in the process who are excited about it and willing to share that excitement with their colleagues.”

Empowered Developers

Agile software development is a set of principles that emphasizes cross-functional teams and collaboration to develop software. It has existed since 2001 and has become an industry standard. However, many projects that are described as “agile” fail to take advantage of its attributes. A fully agile project requires individual developers to take active responsibility in developing functionality, also known as the “user story.” Pragmatics describes the complete commitment that developers must have in the agile world, including an understanding of the context and the desired outcome of the code as well as the desire to perform the work itself.

The agile process also requires developers to understand the project from a user’s point of view and that of other stakeholders. This requirement means that developers must ask questions of project stakeholders and collaborate with them to ensure the code has the necessary functionality. The developers’ level of responsibility and empowerment are the primary features that distinguish the agile methodology from traditional methods of software development.

The most common view of empowered developers is that they are responsible for developing code from a short description of a user story. However, they must also take responsibility for confirming that their understanding of the user story is correct. It’s essential for developers to confirm the code’s desired functionality before they begin writing it.

Location

An outsourcer’s geographic location is a critical consideration for a software development project. The distance separating the outsourcer and client can have a dramatic effect on the development process, even with essential technologies such as broadband internet access, videoconferencing and secure digital audio recordings. The east-west distance is more significant than the north-south distance, due to the difference in time zones. An outsourcer that is on the opposite side of the globe from the client means that the two groups may have very little time, if any, in which to directly communicate with each other during normal business hours. The challenges caused by geographic distance are typically less significant with nearshore software development because of the closer cultural and linguistic ties.

The ideal solution to the time zone problem is to co-locate the outsourced team to the same location as the in-house developers. This approach allows team members to communicate face-to-face and work side-by-side for the entire workday. However, many clients will encounter difficulties in providing the workspace and other resources needed to accommodate the development team, which typically consists of five or more members. Obtaining these resources within the project budget is often impractical and will also, in most cases, significantly delay the start of the project.

Differences in location also result in national and cultural differences. For example, organizations in the United States typically have fewer hierarchical levels than in other countries. Developers from other countries may be unfamiliar with the practice of collaborating with someone who is several levels above them in the organizational hierarchy.

Communication

The communication challenges of software development outsourcing involve much more than mere technical constraints, which are relatively easy to overcome with digital communication and data sharing. The geographical difference generally results in communication problems because of differences in culture and language. The members of an outsourced team may be able to read and write in English with reasonable proficiency, but a verbal conversation involving technical terminology is typically a much more difficult task.

A team member whose native language is not English may be reluctant to speak out in meetings from fear or embarrassment. Peer pressure can also prevent team members from fully participating in meetings with the client. This environment is directly antithetical to the open exchange of ideas required by the agile methodology.

Communication barriers become particularly serious when they result in misunderstood functional requirements and reduced productivity. In the worst case, they fail to become apparent to the client until the project is beyond repair.

Tiempo Development combines the agile methodology with nearshore software development to deliver business value for our customers. We provide teams of bilingual software engineers with blended talents and expertise in developing innovative software solutions. The result is highly efficient software development that supports companies in launching software releases sooner without draining resources.

About Tiempo Development

At Tiempo, we are making the business of software development easier and more affordable with a unique combination of a nearshore business model, agile methodology, and advanced talent management. Our Development teams engineer powerful technologies that align with the goals and strategies of our customers for both their internal and public-facing development initiatives. Tiempo’s proprietary agile product lifecycle management framework, the Tiempo Quality System or TQS, is composed of principals and best practices that ensure productive client and team interactions. The result is highly efficient software development that supports companies in launching software releases sooner without draining resources. To learn more please visit us at: www.tiempodev.com or contact Tiempo Development directly.