Cloud computing is now an established part of the Information Technology (IT) landscape. But such an infrastructure solution was a long time coming. Its baby steps really began back in the 1970s with companies like Ross Perot’s Electronic Data Systems (EDS) – who helped lead the way in creating multi-tenant shared data centers (Outsourced Data Processing). Mind you, this was back in the mainframe days, when mainframes (IBM, Honeywell, Cray, etc.) cost small fortunes.
Nevertheless, the logic made sense. Why spend millions of dollars to build one’s own data center to house one’s own massive and expensive mainframe and peripherals, when you could buy the exact same data processing services from a third-party for a fraction of the price? Let someone else worry about the facility cost and management, the mainframe itself, the HVAC systems, security, network connectivity, etc.
Those early data centers subsequently became the infrastructure foundations for the next chapter in the story, which was the advent of Application Service Providers (ASP). The logic remained the same. Why pay for very costly enterprise applications like Oracle databases or ERP systems, when you could just pay to use one as a service in a multi-tenant environment?
Then came the Internet, and the explosion of websites, e-commerce sites, and everything else. Hosting companies solved the issue of maintaining one’s own web server and everything else. Then, simple web hosting quickly evolved into providing servers, security and network connectivity for anything and everything (AWS, Azure, etc.).
And it wasn’t too terribly long after that before software creators realized that entire software applications could be developed from scratch within this external third-party model – voila, Cloud-based applications.
Why install and maintain a CRM system, when you can just get a subscription to Salesforce.com. Intuit’s QuickBooks is now available in the cloud. These days, just about every business process application you might ever need has a Cloud incarnation. Why? Because it just makes sense. Let someone else babysit the infrastructure, security, network, power, etc.
The Readers Digest version of the axiom that emerges from this reality is simply this: Don’t do anything yourself that isn’t uniquely core to your business – specifically, don’t do that which you can pay someone else to do, which is their core business.
Start with infrastructure. Do you need your very own data center, or can you pay to use someone else’s? Do you generate your own electricity, or do you just pay the public utility for it? Do you need an army of accounting and payroll people, or can you just contract all of that to a company like ADP or Paychecks? Do you have your own shipping fleet, or do you just hand everything to FedEx or UPS?
Eventually, an entire multi-billion dollar industry emerged from this concept, known as Business Process Outsourcing (BPO). Now, admittedly, when most people hear that term, they think of massive Call Centers, mostly located overseas, with armies of representatives sitting in cubes with headsets on, in front of computer screens, answering customer service calls.
But that’s not the full extent of the outsourcing of business processes.
Payroll is a business process. Marketing and advertising is a business process. Data processing is a business process. Logistics and shipping is a business process (FedEx/UPS). And so is software development these days.
Granted, much akin to the reputation of basic BPO for Call Centers, Software Development Outsourcing still often conjures up negative connotations in many people’s minds. This is primarily due to well-known and understood bad experiences that many companies have had in the past with attempts to save money on development costs by using offshore software development resources.
The problem isn’t that there is something wrong with trying to save money by tapping into talent from less expensive labor pools; the problem has always been on the execution side. Language and cultural barriers notwithstanding, any job done poorly is going to be a problem.
But for every problem, there eventually emerges a solution. As they say, “Hard things take time. Impossible things take a little longer.” But even the impossible gets conquered at some point.
A major cure for the ills of poorly-executed offshore software development was the embrace of the Agile development methodology. Prior to Agile, most software development teams used the Waterfall method. Waterfall was the traditional approach of gathering customer requirements, writing up a design specification, coding, testing, and delivering the finished working software at some point in the future. Often months or years later.
Waterfall was an “all or nothing” proposition of getting the final product right based on what the customer “said” they originally wanted at the very outset. Getting exactly what was desired was rarely the case, hence all the disappointment and frustration.
However, Agile changed all that.
With Agile, communication between the development team and their Scum Master happens daily – as does communication between the Scrum Master and the client/customer’s Product Owner. Demos are conducted after every Sprint, which typically happen on a one, two, or three week schedule. So if anything is wrong, it gets discovered and corrected quickly, not at the end of the project. New ideas can be incorporated. Requirements can be more flexible. The bottom line is that it works.
And because Agile works, it has opened up a new era of outsourcing the business process of software development. Software development can now be obtained as a reliable, dependable, and very cost-effective third-party service.
But there’s another benefit to be enjoyed that doesn’t get the visibility it deserves: depth of expertise.
If you are a payroll and HR organization like ADP that serves a multitude of clients, then chances are ADP has seen it all, done it all, and is rightfully to be considered an expert in their field. Likewise, software development outsourcing companies that have been doing it successfully for years and years on behalf of many different clients have a much broader perspective on best practices, solutions to common problems, and efficiencies that they’ve gained with experience – a perspective that a single software development organization within a single company simply doesn’t have.
Company XYZ is trying to develop their own SaaS application to sell, an application originally conceived of by the company founder, the prototype built by a really “smart guy” he knew personally from college, and two other programmers they hired via a job posting on Indeed, one of whom is fairly competent, but the other needs a lot of supervision. On the other hand, Software Development firm ABC has built dozens of very similar and highly successful commercial systems on multiple platforms using a variety of frameworks and tools. Who has the greater depth of expertise to get the job done?
Many people consider themselves pretty handy around the house, and perhaps could handle some small plumbing or electrical projects. But it would be foolish for the domestic handyman to think he knows as much as a licensed plumber or electrician who does that type of work every day, and likely has done so for many years.
Sure, doing something yourself seems like it would be less expensive than hiring the professionals, but when it comes to software development, that’s only true if one person who is already there on staff does all the work. Otherwise, it’s going to take other people getting involved.
That is, for a company to undertake any type of software development projects, whether to create software products to take to market with their company name on them, or to develop internal automation systems to run the company itself, there are typically only two choices to consider: 1) DIY, Do-it-Yourself (internal development), or 2) Outsource it (external development).
And those choices, in reality, break down as follows:
- Internal Development – Take many months to find the right talent to field a strong team (assuming the right talent is even available in the local area, lest relocation from elsewhere is needed). Take additional months for that team to “gel” and achieve a desirable “velocity” of productivity. And all the while, paying the highest labor rates in the world for that local, in-house talent, along with paying for benefits, taxes, supervisory personnel, and office expenses to support them. If a team member “doesn’t work out” then the often painful issues of termination and replacement come in.
- External Development – Field a top-flight team in matter of a few weeks that is highly productive from the start, and costs anywhere from 30% – 50% less than in-house local talent, with no overhead or supervisory costs added on top of that. If a team member “doesn’t work out” he’s seamlessly replaced. In fact, one of the best benefits of the external model is the “on-demand” aspect of it. That is, if a team needs to downsize, it also happens seamlessly, with no painful HR issues.
The primary resistance to using software development on-demand usually turns out to be more cultural than logical. Demonstrable logic dictates that for the software development work an organization needs to get done, it can easily obtain it for much less cost, with a higher probability of enjoying a higher quality deliverable and timely result. Conversely, the cultural impediment is what is commonly known as the “Not Invented Here” (NIH) mentality.
Much like in government circles, many leaders of business organizations’ self-esteem and reputations are a reflection of how large their departments are, the size of their budgets, and so forth. It’s anathema to them to consider getting the job done with far less people for far less cost.
Granted, the stockholders and executive management – in particular the CFO – may not agree with that mind set. But in most cases, especially when it comes to the intricacies of technology, those same stockholders and executives aren’t always fully aware that there are more cost-effective strategies than those in current operation.
But ignorance doesn’t mean that alternative software development strategies don’t exist.
The truth is, there are very creative and innovative Bachelors-, Masters- and Ph.D-level computer and data scientists available around the world with many years of experience in developing multiple product/system projects under their belts, resources who can build just about anything with software that can be imagined.
How often has a CEO or CFO heard from his CTO or VP of Engineering/Development that the reason the latest version of software is going to delayed again is because: “We just haven’t been able to find the people we need to get it all done.”?
What is the opportunity loss, in real dollars, associated with not being able to get a product or release out the door when needed?
What is the adverse effect to a company’s reputation when the bug list has grown into the hundreds, if not thousands of trouble-tickets – with more being added every day faster than those being fixed and resolved?
Furthermore, one of the most neglected areas in all of software development is found in Quality Control (QC) / Quality Assurance (QA). “We just don’t have the people! We just can’t afford it!” Hence, all those bugs on the bug list!
QA/QC is also a service that can be obtained externally – for a fraction of the cost of internal personnel.
Isn’t it time you took a hard look at your company’s software development strategy? And if what’s holding you back is “finding people”, there are other more cost-effective, higher quality solutions that thinking it can only be done in-house. Or, if you’re doing everything in house, and even if everything seems to be okay, but you’d just like to do it all for less money, the same solutions await.
Explore software development on-demand. It’s time.