Uber Software Engineering Team

Uber – A prime example of a software-driven service. Credit: Uber.com

Many organizations today are “software-driven” and more are going that way every day. What does that mean?

  • Applications provide access to core operational functions
  • Customer services, communication, and interaction are primarily application-based.
  • Supply-chain interaction is integrated by services into internal applications.
  • Monitoring and measuring operational performance is dynamic and data-driven.

Of course, this isn’t going to happen on day one for any organization – new or old. Borrowing from a short article in SiliconANGLE by Bert Latamore, companies that successfully manage this transformation focus on four core areas:

  • Make software development and operations core competencies in the organization.
  • Reorganize teams and processes around outcomes, not functional areas.
  • Understand the importance of collaboration and communications.
  • Create real-time feedback loops based on objective measurements, not gut feelings.

outsourcing software development Add continuous, incremental improvement as a part of organizational culture and what do you have? An agile organization. More than a buzzword, it is a rethinking of how people work and business thrives in a competitive, customer-driven market. It is a concept at the heart of some of the most innovative, disruptive and competitive companies in business today.

Whether you are a small, medium or larger business – this is a concept that is probably on your radar or in work already. We discussed some of the different choices for companies transitioning in our last article. So let’s move on and say that for your organization, you know the advantages and you are headed towards the development of a DevOps-style software engineering team. So, what’s the biggest question on the table?

In-House or Outsource?

There are several issues that could drive the decision, but here are five key considerations:

  1. What drives your core business to your customers? Technology? Services? Productivity App? Social App?
  2. Your current IT/software development team – how do you assess them? Where do they need to go?
  3. What is your biggest organizational concern? Customer/product focus? Team culture and organization?
  4. Do you have tight time-to-market constraints? Whether the pressure is from a needed product runway, competitive forces or the simple “time is money” problem – how long do you have to bring a product to market?
  5. Growing staff? Right skills at right cost? Availability of skills and constraints within your area? Time required to acquire and build a well-integrated team?

1. What Drives Your Core Business?

It used to be that saying your business was based on technology could mean any application at all – and that usually meant you could assume you needed an in-house engineering team. Now, with virtualization, SaaS and PaaS solutions that can be blended together transparently, there are many systems available that offer flexible operational capabilities with little to no local tech expertise. Let’s assume your organization is driven by at least one core (business model linked), custom application, if not more. If that isn’t true, we can pretty much end the discussion right now. Let’s also assume that even if there is an application in place – it needs significant rethinking and functionality.

outsourcing software development

It is the presence of a significant and strategic software development project on the horizon that is likely to drive this discussion. Without that requirement, ideas about where your IT organization needs to go are largely academic. If there is no pressing need, plans don’t get converted into action.

But, the presence of core custom software in your business model still doesn’t need to lead to immediate engagement of a headhunter and HR team. In the majority of cases, custom software embodies a specialized business process or service. It doesn’t require entirely new technology – it can be built with modern architecture and technology that is widely available. It is experienced software engineering that will assure that the pieces will fit together properly, can be extended, are reliable, and can be scaled and maintained throughout the product lifecycle. In most cases, the skills required aren’t exactly common, but they are widely available. The problem is they require experience and a wider view of technology than most mid-level developers and IT teams are likely to have. Building and maintaining an in-house team at that level isn’t a small task (as we will discuss) so if your services are not themselves highly technical and innovative – you have the option to work with an outsourcing vendor who can offer a scalable, flexible software engineering team and partner with you over the long run. The advantage is the vendor can bring together an experienced, integrated team from within their staff more quickly and can offer a flexible group of skills and resources that is hard to match if you are resourcing directly. But, you need to be sure they are not a body shop, merely fronting the acquisition of contractors for you. To gain from the partnership, you need to have a vendor focused on providing experienced software engineering teams.

2. Your Current IT/Software Development Team

If your team has not begun to seriously implement a DevOps style team, has been maintaining a standard technology stack for a long time or is currently limited – focused primarily on office productivity and help desk, transitioning to a software engineering team is not a simple task. Best case, you can carve out roles that your existing staff can transition into over time, but the reality is agile engineering teams require cross-functional members with enough experience to switch between many roles seamlessly. If you are under serious time pressure, it will be very difficult to bring together a strong, productive team from a number of individual hires that will integrate successfully with your existing team. It doesn’t mean it can’t be done, but it is an issue that requires time and planning to overcome.

In many cases, an outsourced team that has the experience necessary can ease the transition by taking on the work necessary in parallel and helping your existing resources ease into their new roles over time. This takes collaborative planning and again, a partner-level attitude from the outsourced team, but it can be a very effective way to move quickly, with less stress on your existing team. It is a serious issue, no doubt. Your existing team represents investment and knowledge that is not easily replaced, even if you wanted to, especially in service-oriented businesses.

3. Your Organizational Bias

Every team, product, and market has a bias. In the case of financial products, it is generally a bias towards consistent financial return and stability. In games, it is being first to market with a concept and “stickiness” – keeping customers playing. In organizations with Lean and agile cultures – there is a bias toward customer focus and iterative improvement. In “tech hubs” like Silicon Valley and Seattle, there is a bias toward rapid growth and capitalization of new ideas.

outsourcing software development

Understanding what drives your organizational culture is critical to achieving success in strategic ventures. Your team may be very technical and very “hands-on.” Trying to do anything other than hiring at least a few key technical leaders, if not the whole team, would be a tough, uphill battle.

On the other hand, if you’re service-based, especially on the consumer side, you’re more likely to be driven by customer engagement and satisfaction. To a service-based team, the engineering work required is important, but primarily enabling factor in success. The key issue is communication between stakeholders and the engineering team – without a lot of jargon and overhead. If an outsourced engineering team can hit the ground running in less time and a partner-based attitude, it is a plus – freeing up the core product team to work on finding the right balance of features and value for customers.

The point here is to know your battle ground and pick your battles. Creating adversaries at the beginning of a strategic initiative isn’t a way to win.

4. Time-to-Market

Time-to-market pressures can come from many sides, but they are almost always in favor of outsourcing simply because of the time and effort it takes to assemble a team out of direct hires. Each team member brought in can take from six to nine months to come onboard and become a productive, integrated member of a project team. If an outsourced team, with a broad range of software engineering experience, can be brought in and put to work in a relatively short period of time – you are money ahead, even if cash burn is not part of your time pressure. Plus, maintaining your team and providing the right skills and expertise at the right time are now the responsibility of your partner and there is one less worry on your plate.

Considering the runway necessary to get a new software application out the door is difficult. It is a balance between what you think you would “like to have” on your feature list and what you MUST have to achieve the level of user satisfaction necessary to assure they get a strong perceived value from their use of the application. Every feature takes time to get right and some take more than others. It is a game of priorities and perceptions – with the opinion of users being the ultimate judge. Rush a product to market too soon, without a vision that is clear to users from day one and the drop off in customer acquisition and retention can become a cost too high to recover from. Overload an application with a forest of nice-to-have features and the core value can become difficult to see or worse, too small to justify the cost of development.

In this regard, a software engineering team with a Lean Product Development (LPD) background and mindset can be a real bonus for a product initiative. If your product team is LPD based, it is essential. Getting an engineering team set in that direction if they don’t have a background in the approach may cost you time you just don’t have.

5. Growing Staff Software Engineering Team

Depending on the size of your organization, the pressure of adding staff members when they are needed, at the right cost, with the right attitude, and the right skills and experience can be a difficult challenge and one that takes away from your focus on the tasks at hand. The region where you’re located can have a big impact too. Tech hubs tend to have much higher wage pressure and competition for experienced engineers. Costs in those regions are higher at every level – but of course, there are compensations too. Leases for space may be much higher, but the quality of life, amenities and opportunities available in technology hubs make them very attractive to the type of individuals needed for successful teams.

outsourcing software development

Using an outsourced software engineering team can relieve some of that pressure, allow your core team the luxury of maintaining offices in a competitive atmosphere, give your organization more contact with the larger venture community and the community of companies that could become allies at one point or another.

On the other hand, if your offices are not located in a dense metropolitan area or technology hub, your costs may be much better, but it can be very difficult to find the skills you need even if you are willing to pay for relocation. And when you have a qualified hire, if they find the area is not a good match for them, you can lose them before their work pays their acquisition costs.

Outsourced teams are not a panacea for all these problems of course. They can be just another issue if they are not a good match for your needs – but they can be a viable option if they are setup to handle the kind of business relationship necessary. Growing staff implies that you are not going to hire a four or five person team all at once for a lot of reasons. This is a special consideration for outsourcing because many vendors don’t have the bench or staff available to be flexible and allow your team to scale up and down as needed with the right skills. This is a feature of a more customer-aligned software engineering services as opposed to a traditional, project-based software development service. Project-based services have more fluctuation in their workload and to some degree, they have a harder time being flexible when a customer needs to rebalance their team. You need to be clear and up-front from the beginning to ensure they understand how you want to manage your project and your application during development and after initial release during product maintenance. If you depend on a team to be available over the long run – they need to be aware of it, offer you a contract that allows the kind of flexibility you need and a partner-level attitude from the beginning. Switching horses with any team, internal or outsourced, is not an exercise you want to go through.

Bottom Line

There is no “one-size-fits-all,” perfect answer for every situation of course. The bottom line is that outsourcing a software engineering team is a viable option to consider if your needs are aligned and the right partner is available. The costs, time constraints, skills needed, and project scale are at least a little different in every case – so knowing your options is a key part of the decision process.  You can find teams to match different stages of product development and company situation, you just need to be clear from the beginning where you are and where you are going.

And just so you understand – we have our own bias. Scio is a provider of nearshore, outsourced software engineering teams with a flexible model of engagement matched to our customer base in North America. If this sounds like an option you would like to explore how our services could work for you – please contact us.