Software Development: It’s About People

Anyone involved with software development projects knows they have a very high rate of failure.  According to the Standish Group’s 2009 Chaos Report, which tracks IT software project success rates, less than a third of surveyed IT software projects undertaken in the past two years were rated successful, meaning they came in on time, on budget and with required features.  44 percent were challenged, meaning they were late, over budget, or lacked required features, and 24 percent failed completely, meaning they were cancelled or never used.

As if the risk of failure wasn’t great enough for in-house projects, many of today’s software projects are outsourced to overseas partners as a way to cut costs, speed time to market, and focus an organization’s internal resources on what it does best.

When handled intelligently, outsourcing can be a very successful way to build new software quickly and inexpensively.  However, when companies outsource solely as a way to cut costs, they invite failure.  Why is this?  Because there’s much more to successful software development than low cost, technical expertise and intelligent processes.  Perhaps more than most undertakings, successful software development depends on people.

Software development remains a predominantly collaborative, creative endeavor requiring just the right mix of hard skills, such as software programming, architecture, and engineering, and soft skills, such as communication, collaboration, and project management.  When teams are separated by oceans, the value of both soft and hard skills is magnified.

That’s why if you intend to outsource a development project, it’s preferable to seek out a development partner that goes beyond typical mainstream certifications.  Ideally your partner should provide its own structured, effective system for training and developing its employees with the education, certifications, and experience they need to acquire the most advanced hard and soft skills.

Hard Skills

Hard skills are about more than the requisite Java or .NET skills and certifications.  A growing number of today’s development projects require expertise and experience in complex software architecture and engineering.  Resulting applications must be able to scale appropriately to meet a client’s shifting and often unpredictable needs in the Internet age.

A company with very mature IT operations and in-house expertise can outsource successfully to just about any competent overseas partner.  However, many IT departments will not succeed without the benefit of equal partners who come with the education, experience, and confidence to ask the right architectural questions, point out missing or conflicting requirements, and suggest improvements in the process or solution that benefit usability, functionality, scalability or security.

Project Management

Software development projects often have complex requirements with many dependencies, and involve multiple players with different agendas and interests.  Changes in requirements are frequent and unforeseen issues can suddenly arise at any phase of the process.

Achieving success at low cost requires project managers who not only have the requisite PMI or related certifications, but also the project management experience on projects of similar size and complexity to your own to handle these issues.  A truly skilled, experienced project manager will discover, correct, and prevent project flaws and weaknesses early in the development process and help to guarantee high quality consistent results on time and on budget.  Good project managers can also identify process improvements that will get your project out the door more quickly, saving significant time and expense.

Soft Skills

Software development is by definition a collaborative process between technical people who are often not completely familiar with the business units and processes they’re working to improve and business users who often don’t understand the possibilities, and impossibilities of the technical solutions under development.

Both sides have to be able to communicate with, understand and trust each other in order to produce a solution that is usable, adds value, and enhances a company’s competitive advantage.

• Cultural compatibility – Aside from the expertise required to collaborate and question aspects of a project when necessary, project success may also depend also on partners from a culture that considers such questioning acceptable.
• Communication Skills – As one outsourcing company CEO put it, development partners need to have a good feel for the type, frequency and detail of communication the client needs to be able to sleep well at night. They need to have a level of comfort bringing up problems and issues to higher-level managers at both the client and outsourcing ends of the project.

Start at the Macro Level

So how do you decide on an outsourcing firm with the right level of hard and soft skills to take on your development project?  Cost is an obvious factor to consider, but it may be better to begin by choosing the area of the world that offers the right skill set for your particular project.

For example, India can be a perfect, low-cost source for typical mainstream Web development projects that don’t require a heavy technical, mathematical, scientific background or the use of emerging platforms and technologies.  India’s outsourcing firms tend to have large numbers of competent professionals certified in database development and programming in a variety of programming languages at low cost.  Language compatibility is not a problem if English is your native language.  Other emerging areas with this type of competence are China and Latin America.

For more complex projects you may want a mix of programming skills, technical proficiency, cultural compatibility and communications skills.  Eastern European countries such as Russia and Ukraine are known to have large pools of technically proficient development professionals trained at the regions’ internationally respected technical and scientific universities and other educational institutions.  Most have become proficient in English by the time they graduate, and certification levels in a variety of programming and development skills are equivalent to those of India and other major competitors.  Keep in mind that, while they are significantly more competitive than in Western Europe and North America, salaries of Eastern European developers tend to be a little higher than in India.

Eastern European outsourcing firms have a positive reputation for their solutions-oriented approach to complex projects and cultural compatibility with North American and Eastern European clients.  Project management skills and certifications are growing but still somewhat patchy compared with Western Europe and North America, so it’s important to investigate a potential outsourcing partner’s project management competence if you choose a vendor in this region.

Do Your Homework

Once you have chosen your general region, the next step is to investigate some outsourcing firms to determine which ones can offer the type and level of expertise you require.  Can the company provide the requisite technical experience in the type of project you’re undertaking, and will they allow you to speak with a few references to confirm that expertise and understand how they work with their clients?  Is their staff made up primarily of coders or do they have more technical and architectural education and experience?  What was the attrition rate on the projects they were involved in?  Did the vendor tend to have to replace team members frequently?

It helps to ask for resumes and conduct interviews with those who would be likely to be involved in your projects.  Ask for as many as you can get and interview as many players as you can, as some companies will provide resumes for a few highly qualified project leaders and major players, but provide significantly less experienced people for much of the rest of the team.  You want to avoid having your project serve as your partner’s internal training vehicle.

As you speak with prospective partners, see if you can gauge their communication skills and listen carefully to the types of questions they ask.  It will become clear whether they have the complex problem-solving capabilities you need and will truly add value to the project.  Consider whether your prospective provider can offer the right people in the right roles to complement your team and ask how they handle communications with the client.

Aside from external certifications in programming techniques and languages, ask questions about any additional certifications provided internally and how the company trains and promotes its employees. Does the company go above and beyond external certifications, enriching employees with additional training and internal certifications, and does it make a point of giving them experience with a variety of projects? Find out what internal certifications and training vehicles they have and what level of certified employees they will provide for your project. Are their certifications based on real-world experience and accomplishments or simply course or text book learning?

What type of development process, such as agile, waterfall, or scrum, do they specialize in, and does that process match your requirements?  More importantly do they have the experience and knowhow to conduct an agile project, which requires a lot of close communication, as a remote participant?  Ask questions about their engagement process and how they take early steps to ensure that all project requirements are understood.

Any software project is a risky undertaking.  Depending on the provider you choose, outsourcing a development project can either heighten or reduce your risks.  The key is to choose the company that can provide the right people with the right hard and soft skills for the job.  When it comes to software development success, people make the difference.

TAGS:
 
 

    Popular posts

    Related posts