Our Commentary on The Atlantic’s Article on the Pitfalls of Offshoring Software Development

In an earlier post we mentioned this article from The Atlantic that warns of the many pitfalls of offshoring software development.

Behind the ‘Bad Indian Coder’

Although Augment’s focus is to help companies successfully offshore software development, we do agree with virtually every point in this article. The key to a successful offshoring experience is to find the correct talent and have processes in place to ensure great quality and communication.

Let’s break down some of The Atlantic’s points.

“Code from India can be truly awful if you work with most companies,” another Redditor said. “A lot of them treat programming as a task to be completed with numbers and fire those that can’t work fast enough, rather than a task requiring quality where people are educated to avoid mistakes and fired only as a last resort.”

We agree. We’ve worked on some offshore projects that have been disasters. These projects had poor communication and the initial database, design and overall architecture set the project up to fail from the beginning. You live and learn though. As in any occupation in any country, there are definitely software engineers in India that should not be employed. But many are good employees who may need some oversight, strong feedback and encouragement to become great employees.

Like the quote above alludes too, Indian programmers are people, not simply cogs in a machine. They want to feel like they’re a part of a team building something. They may be thousands of miles away from the company they support, but they also have the same fears and worries about their job performance and the project as their onshore counterparts.
“For some projects, we tried architecting and planning it all out in detail over Skype, but it never worked well,” he told me via email. “Invariably questions come up during the development phase, with decisions needing to be made. With an 11 hour time difference, their options were to either wait for the people on the other side of the world to wake up for a consultation, or make a judgement call. Both options suck given that they don’t have the general knowhow about the industry and the customers that we do, but waiting till we wake up [would mean] a wasted day of work.”

We’ve experienced the same thing. That’s why we believe planning, design and architecture should stay onshore. There are special situations for a simpler project where these items could go offshore but overall they should stay onshore.

That’s because planning, design and architecture set the stage for the entire project. If requirements are not clearly defined and incorporated into the architecture and design, then the entire project will be off base from the beginning.

The part of the project that should be offshored is the backend and frontend development. That’s it. Offshoring even this portion can help companies save significant time and money.

We also recommend to work with offshore resources that can work in your time frame. The developers at Augment work early morning to mid-day so there is always overlap with the onshore team, making collaboration simpler. No waiting until someone wakes up.
“I think the Indian education system as a whole is greatly flawed in that it does not urge students to think, but rather to memorize, or ‘mugging’ as they say in India,” he said. “Essentially if you can stay up all night before an exam and cram as much information as possible into your head, you will do pretty well on tests.

Kulkarni felt this partly explained why his Indian staff created products that had been programmed before they were fully planned out, forcing the New York team to rewrite entire programs from scratch on occasion.”

That’s why we think the planning needs to stay onshore as much as possible. Unfortunately articles like this one broadly categorize all Indian developers as unimaginative, uncaring and inflexible. That’s not true at all. The education system in India may be different than in the United States but we’ve worked with many developers who are quite creative and hungry to learn more and adapt.

“Weighing in on the buggy Indian code debate, Indian developer Shekhar Gulati wrote on his blog, “In India … students just cram the things and get [the] score but practically they know nothing.” Gulati pointed out that he once interviewed a computer scientist with a degree in the field and six years of experience who was unable to write a simple program during his test.”

This is again a broad generalization using one example to label the entire Indian software developer workforce. But it is something to be aware of. All developers (whether onshore or offshore) need to be properly screened to make sure they’re savvy and competent.

It may take more effort to properly screen an offshore developer, but they can be screened in the same way and using the same questions/tests as any onshore developer. Skype and other screen sharing programs are great for this. Once in place, a properly screened offshore developer can be a very effective member of an onshore team. Also working with a quality offshoring firm can help with the screening of individual developers, and they can also ensure the quality of the work and help facilitate communication.
Augment guarantees the quality of all development work performed by our offshore developers. We also work very hard to achieve seamless communication between everyone working on the project.

Prevent An Offshore Disaster! What to Expect of Your Offshore Team in the First Four Weeks

Working with an offshore staff augmentation vendor can be a challenge. When part or all of your team is thousands of miles away, things like communication, co-ordination of daily tasks and monitoring of the resources can pose some complex challenges. With the right tools and the proper personnel this can be done in a methodical way.

The first challenge of this entire process was to identify a vendor that fits your company and project. Once the vendor has been identified the next 2 to 4 weeks can make or break the relationship and the project. Here are some of my thoughts on what to expect in the first four weeks and how to minimize potential issues.

Week One: Orientation

Identify Resources:
Identify your team including the team leads, project managers, QA resources and any other resources working on your team. Get to know them well. In a retainer model (more in a later post about this) you need to make sure you know the resources assigned to your contract. In a very large team that can be a challenge, in which case identify and get to know the key resources.

Project Kick-off meeting:
The kick-off meeting is often under-rated but it’s a very important step and has to be done. Many projects launch without a proper kick-off. It’s important to establish some ground rules in the beginning of the project. The roles and responsibilities of each of the team members and the internal reporting structure have to be made crystal clear. The expectations of the project stakeholders have to be communicated to the entire team.

Infrastructure Setup and Code Repository:

“It works on my machine” is an oft repeated phrase among development teams. Predictable results are possible only when everyone is on the same set of tools, technologies and standards. It does not matter how standard your project development tools are, there is always something that will need installation or access or both. Make sure all the development tools are installed and ready to go on each developer’s machine.
At Augment we have a number of projects on many open source technologies (Magento, Joomla, etc.). On many of these projects we are using Vagrant to setup a development environment identical to the client machine. If you are unfamiliar with Vagrant, it’s a tool for building and distributing development environments. Vagrant provides the framework and configuration format to create and manage complete portable development environments. These development environments can live on your computer or in the cloud, and are portable between Windows, Mac OS X, and Linux. Say goodbye to “works on my machine”.

Also add the offshore resources to the Code repository GIT, Team Foundation Server, SVN or other version control software you might be using. Create a new code branch for the tasks that the offshore resources will be working on.

Project Documentation:

Here are some examples:

As a client, provide all the project documentation possible to the offshore team lead or project manager. Tools such as Confluence or SharePoint could be used to streamline the project documentation and communication. Project documentation should include design documents, software requirements specifications, coding standards, database design diagrams, technical specification documents, etc.

High Level Conceptual System Diagram

Database Design

It’s also time well spent for the onshore resource to take the offshore team through the documentation.
Processes and Procedures:
As part of the kick-off meeting have the on-shore CTO/PM leading the project talk about internal processes. Most software development shops have certain processes and procedures they follow. For example Augment has a client whose internal process is a modified form of Agile. All of Augment’s developers went through a week of orientation on the client’s specific process. Things like Daily Scrums, periodic check-ins to report progress on tickets, a support rotation schedule, reporting time spent on open tickets, etc. ensures all team members follow the exact same process which in turn makes it easy to manage development, monitor progress and ensure quality.

Daily Standup Meetings:
Setup a daily standup meeting to connect with the team. GoToMeeting, join.me, Skype, Google Hangouts – any of them work. I use a combination of GoToMeeting and Skype. I use GoToMeeting primarily to share screens or take control of someone else’s machine (for example if I want to use a developer’s machine to demo a program). I use Skype mainly as an internal chat. Skype is also particularly useful to make quick calls and clarify things that take too long on chat. Chat programs can also help with monitoring who is available and who is away.

Week Two: Project Work Starts

2 Week Sprint:

Once the infrastructure is all set and everyone’s roles have been defined, it’s time to play ball. I always prefer to ease my team into the project by assigning some of the simpler tasks first. This completely depends on the type of project. On maintenance projects I assign some of the simpler tickets first. This enables the offshore resource to gain confidence and gives them a chance to evaluate the existing code and adapt to standards used. On development projects I also start with some of the simpler tasks or pages. Not only does this help the offshore resource gain confidence, it also gives the onshore PM or Team Lead a measure of the skill level of the offshore resources. A two week sprint with these smaller tasks and tickets is perfect to evaluate the quality and skills of the offshore resource.

Fix Timelines:
All tasks need to be given a specific timeline. Again this depends on the project type. Sometimes it’s hard to estimate how much time it will take for a specific task. Nevertheless, always assign a timeline. The timeline can be revised based on the analysis/feedback provided by the resource as he/she starts working on the task and justifies the time needed.

Peer-to-peer review:
Peer review of all the code written is a best practice that should be adopted by all software development shops. All code/tasks completed during this week should be reviewed onshore. It’s important to set the standards early on in the process. The Code Repo branch that was setup in Week 1 helps with this process. Once a task is complete the local code base can be checked in for review. The review should be timely and consistent based on the standards that were set.

Daily Standup Meeting:
Conduct the daily standup meetings that were set up in Week 1. It’s important to monitor the progress the resources are making. Any issues the resources might be having need to be discussed and resolved during these meetings. As a rule, at Augment we ask offshore resources to never spend too much time on a major blocking issue. We’ve found that most often solutions to such issues are easily solved by someone onshore and familiar with the application. The daily standup meeting is perfect for discussing such issues.

Week Three and Four: Tasks, feedback and finalize

Feedback, Feedback and more Feedback:
As more tasks of the initial sprint are done, peer review should be able to provide more feedback on the coding style, quality of the code and adherence to standards. Remember to emphasize the quality and standards during this time.

Daily Standup Meeting:

Continue with the daily standup meetings. Irrespective of the methodology followed (Agile vs. Waterfall) it’s important to check in on a daily basis with your offshore team. This might seem a bit over the top but is a necessary step for the offshore team to succeed. Once things are flowing more smoothly you can step back on the daily standup. However, with more and more organizations moving towards the Agile methodology (more on Agile in a later post) it might be a good time for your organization to start looking into it as well.

Full Review:

Once the first four weeks are completed, you can do a full review. The Sprint should be completed. All the feedback from the last 3 weeks should be in place. The quality of the code and timelines should be obvious. The onshore management now has enough data to assess the performance of the offshore team. If the past 3 weeks was run as tightly as recommended in this post then most likely the offshore team is doing well.

There is tremendous potential in India in terms of software development and BPO. In a previous post I talked about large companies like Microsoft, Oracle and IBM using this potential to their advantage. With a committed partner, like Augment, and their experience building development teams, small- and medium-sized companies can also build good productive teams that can help reduce the backlog of tickets on maintenance projects, work on new projects and in general help ease the load on the onshore team. The hybrid approach of Augment makes sure all the risks associated with communication and code quality are minimized right away in the initial 4 weeks.

Write more code. Get more done.

How to Select Your Offshore Team and Not Get Duped

In my previous posts I’ve talked about the backlog of work companies have. Another post talked about the lack of a large pool of onshore software developers. And as a result, business productivity is taking a hit. Building an offshore team that is dependable and provides consistent quality can be a very viable option for a CTO to provide customers with the best services he/she can offer.

It’s a safe bet to assume most CTO’s and CEO’s have been cold called by an offshore vendor claiming they can provide software development services at one-tenth the cost of onshore work. Let’s think about this. A standard software developer consultant here in Madison, WI costs about $65/hr. At one-tenth the cost that would be less than the minimum wage. Sounds like a good deal, right? Unfortunately, there’s usually a reason it’s so cheap. Some offshoring companies don’t provide the excellent communication and quality oversight you need.

So then how do you go about evaluating and finding a reliable offshore partner? In this blog post, I’ll discuss some of the common aspects used to evaluate an offshore software development vendor, including vendor size, cost, onshore presence and reputation and I’ll also provide some recommendations and questions to ask a potential offshoring partner.

Vendor Size:

In India there are large, very successful software development companies that employ a sizeable workforce in every technology and domain you can name. Examples include Cognizant, Infosys, and Tata.

Does offshoring your software development work with one of these giants guarantee you a successful project? It probably does. But if you are a small- to medium-sized business, you may not want to deal with a large corporation and they may not want to take you on as a client. If the large corporation’s clients are large banks and retailers, (essentially multi-national corporations) you may be too small. Their time and resources are most likely spent on projects of a certain size and budget. They may be most interested in companies like GE or Proctor & Gamble, and not a small regional retailer, insurance company or bank.

You can also go the small company route and find developers on your own through the many developer networks out there. Here are three major players:


This is truly the wild west of offshoring. You don’t know exactly what you’ll get and perhaps you’ve been burned by using someone you found on a network before. That said it is possible to find some gems but you do have to be careful.



One big benefit of offshoring your software development work is to save money. Hiring a developer in India is definitely less expensive than hiring an on-site staff developer. But not all cost savings are created equal. As mentioned earlier some vendors claim that they can provide work at one-tenth the cost of hiring your own developer. The lowest bid is usually low for a reason and may not be realistic. Usually it means inexperienced resources and poor infrastructure. This directly translates into a poorly executed project and code that lacks the quality you need.

Check out this great article from The Atlantic about Indian developers and the quality of outsourced code: http://www.theatlantic.com/international/archive/2013/10/behind-the-bad-indian-coder/280636/.

And then there are the big firms with the big costs. Unfortunately, this does not always translate into great quality or flawlessly executed projects either. Here’s an in depth study on the success and failure of offshore projects. We will dive into this study in a later post.



With a very competitive labor market in India many of the inexperienced resources end up in large firms as well.

Onshore presence:


Onshore presence is a great way to evaluate a vendor. There are many vendors who have an onshore presence (Augment is one of them).

Do they have onshore project managers, architects, designers and business analysts available for the analysis and design phase of the SDLC? Never expect a completely offshore vendor to execute a project well. Doing business analysis remotely, approximately 8000 miles away, is truly a challenge. The value of talking face to face with the user community, understanding their needs and challenges, and designing a software solution together is priceless.


Reputation is sometimes related to the size of a company. After all a company cannot be crazy successful if its reputation were otherwise. There are definitely also some small- to medium-sized vendors who are experts in a particular domain or technology stack and can bring incredible value to your projects.

So how do you find awesome developers and an affordable rate?

Below I list some tips and questions you should ask. Basically, talk to the companies/developers, feel them out, use your gut and think about how your firm fits into their company and resources. Research the cost of offshore resources and think about budget/vendor size. The vendor you select needs to fit your business and the size of your projects. Talk to multiple companies of various sizes. Be wary of the over promising types and there are many. As the old adage goes “If it sounds too good to be true, then it probably is”. Ask for testimonials and references.Do the research and talk to references in detail about projects the vendor has executed. Was the project on time and within budget, what was the quality of the code delivered and how about the communication? References in your business domain are the best.

Talk to the multiple people at the company, including the CEO; Skype interviews are best.

  • Find out the specific location in India where the project will be executed. Why is the location important? There are specific regions in India where software developers are available in plenty, which translates into availability of resources and minimize employee turnover risks.
  • Make sure your project is a priority. Do you feel a sense of energy and excitement when they talk about your project? Do they get back to you quickly? Is the process and communication clear?
  • What is your delivery process for staff augmentation? Do you have a team lead and a project manager?
  • Talk to the offshore project manager, team lead or even the team that you will be hiring. Ask them to share their ideas about your staff augmentation or project needs. Have them walk through a typical day or week with you. Are there a lot of touch points throughout the day?
  • Ask them what problems they’ve encountered in the past. How did they handle them?
  • Ask them about how they onboard a new developer resource or project. How are they involved? Is their process clear?
  • Have them describe two or three types of roles that could be offshored.
  • Who reviews the code?
  • Do they guarantee the quality?
  • How does the firm help plan and implement new projects with their developer resources?

In short, be sure to carefully evaluate the offshore vendor. Augment is a Madison based company that helps small- and medium-sized businesses augment their in-house software development team with resources from our offices in South India. We work on a wide array of technologies. Go augment at www.goaugment.io

Huge Corporations Find Great Value in Offshoring Software Development, Should You?

Many large U.S. companies use offshoring for a large portion of their software development work. Is this something that you and your company should also consider doing? To answer this question, let’s first look at some numbers.

  • According to Gartner, the worldwide spending on IT outsourcing in 2013 was about $325 billion.
  • Two in five CIOs plan to outsource some or all of their web and mobile development to an external partner.
  • Manufacturing leads the way when it comes to outsourcing with about 53% of the pie followed closely by IT at 43%.
  • The median annual wage for applications developers was $90,060 in May 2012.

Needless to say, these are some interesting numbers. But often, if you are involved in the business of software, you already have an opinion about outsourcing. Many times the opinions are negative: It’s cheap. Quality is bad. Partners are unreliable. Communication is a challenge. There is some truth in some or all of these concerns.

Before we address those concerns, let’s look at some more numbers:

  • According to the U.S. Department of Labor’s Bureau of Labor Statistics, employment of software developers is projected to grow 22% from 2012 to 2022, much faster than the average for all occupations. Growth for application developers is projected at 23% and for systems developers it’s 20%.
  • According to CompTIA, a non-profit association for the IT industry, 8 in 10 organizations say their business operations are impacted by gaps in the skill sets of their IT staff.

The main reason for the rapid growth is a large increase in the demand for computer software. Mobile technology requires new applications. The healthcare industry is greatly increasing its use of computer systems and applications. Also, concerns over threats to computer security could result in more investment in security software to protect computer networks and electronic infrastructure.

The constant demand for a large pool of software developers is real. Look at the job boards; talk with recruiters and managers of software divisions. All of them will agree that the need for good software developers is constant. The ever evolving technology tools are another challenge. New tools, new frameworks and new architecture all contribute to finding qualified talent.

A few more numbers:

  • By most estimates a third of IBM’s 400,000 workforce is in India.
  • Accenture (a U.S.-based company) has strength in India at over 90,000, which is more than double that of its workforce in the U.S.
  • French IT major Capgemini has over 44,000 of its 125,000 employees in India; its staff strength in India grew by 50% in just the past 2.5 years.
  • Computer Sciences Corporation has 24,000 of its 98,000 employees in India.
  • Microsoft’s largest development center outside of Redmond, Washington is located in Hyderabad, India. Microsoft India largely focuses on strategic and IP software product development.

The above examples are only a small sample of large multi-national companies taking advantage of the large pool of technical skills available in India. There are numerous other small, medium and large companies doing much the same. The fact that all of the above companies are successfully running their Indian operations is a testament to the fact that, if done right, outsourcing is indeed a viable option.

In my experience, the biggest advantage to be had from the tech talent available in India is scalability. While cost can be a driving factor, no other country can scale up like India can. The numerous engineering colleges in India churn out something like half a million engineers every single year. It’s true many of them are not employable straight out of the campus, but the numbers that are employable are rather significant. Most of them are sufficiently comfortable with English which puts them at a significant advantage over other countries.

Successfully augmenting your IT/software team with an offshore team can be a challenge. The keys to making it work for you are a workable process that identifies and negates risks, a reliable offshoring partner, acceptance from your onshore team and a proper understanding of the strengths of both the offshore and onshore teams.

Augmenting or building an offshore team is not just for large companies. Yes, there are many advantages that come with large budgets and name recognition. But the sheer number of tech skills available in India can make it work for any size company. As per data from Evans Data Corp., India will overtake the U.S. on the number of developers by 2017. Today, the U.S. leads the world in software developers with about 3.6 million followed closely by India at 2.75 million. By 2018, India will have a dramatic increase to 5.2 million as opposed to 4.5 million in the U.S. The large growth rate in India is attributed to its population (currently 1.2 billion), and its relative youth, with about half the population under age 25.

At Augment, with our development centers in South India, we believe we are positioned well to take advantage of this trend. We are currently helping companies ranging from small 4 – 10 person companies to 400 – 500 person firms. The key is to work with the right partner who understands your needs and customizes a plan and process that will leverage the skills available onshore and offshore.

7 Reasons to Outsource Software Development

So you want to outsource your software development projects. It can be a daunting task. You have questions. Is outsourcing your cup of tea? How do you find out? How do you find a suitable partner to work with? How do you measure the performance, how about quality of the code, what’s your ROI?

In this post let’s look at outsourcing software development and quality assurance and why you should even consider outsourcing. In a later post we can dwell more on how to successfully build a reliable offshore team that is not only good for the CFO (cost effective) but also produces good solid code (your development team manager has an ear to ear grin). I will describe in a later post how outsourcing strategies have been built based on experience and usually involve a hands-on approach where solid structured processes are built in order maximize the chances of success.

The obvious first question is why outsource? If you are a software development company or the software division that takes care of all the software your company runs on, then you seriously need to evaluate outsourcing as one of your options. As an executive running an independent small to medium sized software dev shop or a software development division within your company you are constantly faced with the following challenges.

  1. Your development projects are short staffed.
  2. Existing projects need to be maintained. Your existing staff claims “But it’s his code. Ask him to do it.”
  3. Your user community is constantly asking “Give me more and more.”
  4. Your CEO is constantly snip, snip, snipping away at your development budget.
  5. Your Production software needs 24/7 support. Meaning it needs constant “babysitting.”
  6. The constant changing landscape of the dev tools makes your software a dinosaur that none of the existing team will touch. They all want to work with the new toy.
  7. That nagging bug(s) in your software needs to be fixed, but you say “It’s a Feature not a Bug.”

Let’s dive into each of the above and look at how outsourcing could help.

  1. Development Projects are short staffed – Within an organization the Project Managers are constantly wrestling with each other for resources. In my experience as a PM for a large company I had a portfolio of projects that needed to be released as of yesterday, meaning from the user perspective every project was a top priority. The issue was the development resources needed for the projects. Every developer was assigned to multiple projects in the interest of keeping all projects moving and all users happy (sort of). The consequence, what I like to call the “dance with delivery date”, is every project’s delivery date gets pushed back further and further. Dedicated resources on a project are a luxury PM’s dream of.
  2. Maintenance on an existing project – We (the dev community) have all been there. We rolled off this fine piece of software. Users love it. They even gave you an award back in 2006, but now it’s 2015. The good news is your core software still works; users still love it (you can keep the award). The bad news is the software needs maintenance. Your IT manager wants to upgrade the user community to the latest and greatest OS, but your software is not compatible. It needs to be upgraded. Upgrade estimate is about 2 months. None of the other developers will touch it.
  3. New Features, new reports, etc – Users are a demanding bunch. That’s what they do. In short it’s more work. As a PM how do I fit this new feature list into my development team’s already tight schedule? When we prioritize absolutely needed features, everything else gets put on the wish list. Soon the wish list becomes daunting.
  4. Shrinking Budgets and Staff retention – The new kid on the block (new CEO) is going to take your company to the next level. However, before he does that he needs to restructure, reorganize, rearrange, streamline… In simple terms, your open development position will never be filled. CEO says we need to do more with what we have. Yeah right, tell that to my development team. If you are a small to medium sized business, hiring new talent can itself be a daunting task. Take a gander on the job boards and you realize that the geek world is alive, well and thriving. So many open positions, so few good programmers.
  5. 365/24/7 Support – Who works year round? Well someone does. Especially if you have users all around the world, someone is on your application all the time and sure enough they hit a bump or they don’t know how to work the work around. They call help desk, help desk escalates the ticket to the next level (he doesn’t know how to work the work around either) and your SLA says you need to provide a solution in 4 hours. You need 24/7 support.
  6. Tools, tools and more tools – They say change is the one constant in life. The part they did not say is that it’s painful. What’s new today is not tomorrow. New technologies, new frameworks, new programming patterns and architecture can all be overwhelming. There are a hundred different ways to build an application. As a dev shop you need to be on top of the change. How is it possible for a business of your size to keep on top of these ever evolving tech tools?
  7. Quality Assurance – Do you QA? Do you have a separate team who tries and finds faults with your beautiful piece of software? Some companies have their developers do QA. They are good at it. They write clean code. As a PM, I am constantly surprised when a company does not have a dedicated Quality Assurance team to write test plans, test scenarios and test and re-test every bit of functionality of the software. Often budget is the reason cited. Many a times it’s the PM or the Business Analyst who doubles as QA. This is expensive in terms of dollars and hours. And the result is untested code, untested scenarios and bugs that have quality implications on the software.

Outsourcing can help with all of these issues.

There are multiple ways that outsourcing some parts of the development to a reliable team offshore can help with any or all of the challenges above. But the solution can itself become a challenge. Strategies to identify and hire the right partner, types of projects to outsource, how to monitor progress, how to ensure code quality, what to do if there are issues with your current outsourcing vendor etc. will be discussed in later posts.