Outsourcing or in-sourcing, those are the two choices, right? Actually, they are not. You can combine the best of both worlds and really drive home some ROI.
Over the last 20 years, JBS has found that a hybrid approach to outsourcing allows companies to have the best of both worlds. A flexible and scalable development team that trains and supports a limited number of in-house resources. Ultimately, this produces an in-house team capable of supporting and maintaining your intellectual property. It mitigates risk, reduces long-term costs, and stresses accountability from everyone involved. In our experience, this approach greatly increases your odds of succeeding.
If you are considering outsourcing, be sure to read our 101 guide on the topic. It will give you some good general guidelines on what to look for and how to approach selecting the right partner. If you are already beyond the 101 course and still find yourself struggling, frustrated, or just looking for a new approach, you are not alone.
Outsourcing Software Development
Outsourcing software development is not without its challenges. Communication, quality control, cost, and trust are just some of the top areas of concern. The internet is full of horror stories about technology partners failing to deliver in one or all of these areas. In fact, the vast majority of technology initiatives crash and burn, never coming to fruition. However, the profit incentives and procedural efficiencies provided by custom software make it a necessary tool in today’s competitive market place.
Software development is difficult. It takes a very niche set of skills and years of experience to get it right. Keeping up with changes in technology, rising developer wages, and an ever-increasing talent gap, make it very difficult to put together a good in-house team. Even if you do hire an entire team, what happens when the project is completed? Do you have enough work to keep them on full-time? In most cases it makes more sense, taking into consideration the horror stories, to outsource software development to a technology partner.
Defining your team, in a way that works.
A typical outsourcing arrangement with a software company may be structured something like the image below.
With a hybrid outsourcing method, however, the lines blur a bit, and your technology partner mentors and support your in-house software engineers, QA team members, and visual designers. Knowledge is transferred between the technology partner and your team naturally over the course of development. The number of in-house developers will depend on the size and scope of the project, as well as expected maintenance and support levels needed once the project is completed.
If your company does not have the expertise, time, or resources to hire new developers, take advantage of your technology partner. Who knows how to hire top-level developers better than the people that do it for a living? Have your partner conduct interviews and recommend talent for your team. It may be more expensive to have them do this in the short term, but in the long run, these expenses are justified. Bringing in top-tier talent means having an in-house, highly skilled support and maintenance team in place when your application goes live.
Someone needs to be accountable on both sides
Although having a product owner is not a new concept, it is often overlooked and is imperative to project success. The person in this role acts as the single point of authority for your company’s business logic and has final approval of project completion. This person owns the vision and direction of the project and shoulders the majority of responsibility for providing the proper vision to the project manager.
The project manager’s responsibility is to translate the product owner’s vision into a set of acceptance criteria that can be handed to the development team. They should have a critical eye, provide feedback and direction when necessary, and always focus on making the product owner’s vision a reality.
Not having a dedicated project manager should be cause for concern. The company you are working with may not have the experience or resources needed to complete your project and deliver on your vision. According to Gallup research managers account for 70% of the variance in employee engagement, and highly engaged employees drive growth through productivity. Make sure you are able to speak with and approve of the project manager on the team. Your technology partner should do the same with the product owner. Lack of competency in either of these two crucial roles almost certainly spells disaster.
The project manager and product owner determine the priorities of development together. They should focus on features that are mission-critical will have the best ROI. Their initial goal should be to build a solid and expandable core that future proofs your project as much as possible.
Do not work with an outsource that utilizes junior level project managers or developers. Time spent training and correcting the inefficiencies of junior level talent will stagnate timelines and greatly reduce your project's success rate. They may be cheaper initially, but when you compare the amount of throughput a senior level talent can produce, the extra cost is well worth it.
Continuous feedback and updates
Make sure your technology partner has a defined methodology for development and releases deliverables often. At JBS, we use a modified agile software development method, which allows business requirements to change during the process without creating lots of overhead. We deliver a set of previously agreed-upon tasks, features, or bug fixes every two weeks for the product owner to review and provide feedback.
You should not accept once a week meetings with your technology partner. Transparency and communication, to the point of being annoying, are the keys to your success. To help aid in transparency, consider using a Kahnban project management board like Trello. These boards organize tasks and backlogs, having the added benefit of visualizing what each team member is accountable for in any given period. At JBS, we work in two-week periods called sprints, which is part of the agile methodology. At the end of each sprint, our product manager releases features or updates for review by the product owner.
Continuous communication is at the heart of the agile process. In a daily stand-up meeting, developers explain what they were able to accomplish the previous day and what if anything is blocking them from continuing. It allows your team to address issues before they become expensive and burdensome to correct. The meetings are short, around 15-minutes, and include every member of the team. If a topic takes more than a few minutes to discuss, the product owners, managers, and developers should discuss it outside of the meeting. These meetings keep your project focused on key performance indicators and incremental results.
Stand-up meetings have the added benefit of giving developers a voice and promoting engagement. Senior developers are often able to identify faster, easier solutions to problems that may not occur to the project manager and product owner. A small tweak in the way things are developed could save hundreds of hours of development time down the road. All knowledge shared by senior-level developers helps to prop up your in-house team along the way.
The project is over, now what?
Once the project is complete and released into the wild, regardless of code quality, there will be maintenance. Implementing future security patches, customer feedback improvements, and changes in business objectives all require some knowledge of the codebase. If you chose to work in the hybrid outsource method that we have outlined above, you should have at least one staff member that is more than capable of completing all of those things and more. If not, make sure you have someone in place before the application goes live. They should be trained and familiar with the codebase. Failure to have a knowledgeable ongoing support and development team often ends in disaster.
It is important that your technology partner stress accountability and flexibility, as well as having leadership and mentoring capabilities. Project success rates greatly increase when using the hybrid outsourcing approach, and allow you to better prepare an in-house team for future changes. Your technology partner should act as an extension of your company, sharing the same goals and objectives as you do. Make sure to hold them and your own team accountable for each area of responsibility.
Transparency in daily operations and constant communication maximize your chances of success. Interweave your technology partners’ team members into your day-to-day operations. Make sure to use teams that are experienced, knowledgeable, and leaders in their respective industries. Avoid the initial appeal of hiring junior-level developers simply because they are cheaper. The knowledge senior-level talent holds is too valuable to overlook and takes years to accumulate. Allow some of that knowledge to be transferred naturally to your own development teams.