Looking to subcontract a software project or maybe having doubts that you will receive poor quality of the coding performed? Then another concern could possibly be with the actual delivery or keeping deadlines? Those are the objections we hear the most often from our potential customers. Fortunately, there's a couple of precautions you can take to help smoothen the cooperation with an outside software development agency.

1. Define the Work


As long as the work at hand is not clearly defined and scope is vague there's going to be traction and chaos. To mitigate those risks think through the reasons why you need external help for the project.

  • Augment the team with specific expertise.
  • Increase team's capacity.
  • Subcontract a whole module.
  • Subcontract whole project (product).


2. Mode of Cooperation


  • Agile / day-to-day - Define the work as user stories, scope sprints, receive deliverables each sprint (a week or two usually). To succeed in this mode of cooperation you should have a good product owner on your side who can clearly define the desired features and clearly answer the questions of your team.
  • Fixed price - Specify the whole module or project. To suceed in this approach you need to have a full understanding of the work being subcontracted, have it documented in detail and make sure the vendor fully understands the project.


3. Small Steps

It's safer to start in small steps. By giving the vendor a "test" project or sprint you will practically verify the following:

  • How the team delivers - what's the quality of the code, velocity of the team, etc.
  • How's the communication
  • Is this a way of cooperation that satisfies your needs
  • If there's a two-way fit between the partners.


4. From Control to Trust


Trust needs to be earned. So make it easy for the contractor to do it while maintaining the full control.

  • Shared core repository - In order to track the progress and quality of the code being produced you should establish a shared core repository and agree on frequent code commits. Then you can track incoming developments as you need.
  • Shared, online documentation - It's important to have a collaborative space for your inhouse and outside teams. Not only to hand over the documentation but also a place where requirements can be defined and discussed. This should also be used as place where your contractor submits the documentation of their solutions.
  • Demos - regardless of the methodology in which you cooperate - agile or not - it's a good idea to arrange demo sessions once in a while. Typically it's a partially implemented product, views or modules. This way you'll get a good feel of where the product heads and provide feedback.
  • After some time you'll get used to the way the contractor works. Seeing the progress you'll gain trust and fell less need to control the products.


5. Scale the Cooperation


  • Arrange a face to face project kickoff. Depending on the scale of cooperation it may turn out to be hugely valuable. Especially if you lack documentation or expect a lot of work to be done by the vendor. It can be their developers coming to you or the other way around - it doesn't matter really. What matters is the Informal, interactive and quick information flow in the starting phases of a project.
  • Increase engagement - Once you're happy with the way your external team delivered test projects or sprints, the communication channels are established and work goes smoothly you can gradually increase batches of work (sprints) that you subcontract at a time. You may also consider increasing the amount of people engaged on their end.
  • Satellite office - this is the closest way of cooperation with a contractor. It usually means that a couple of contractor's employees are working for your full-time and not on the project basis. This may mean appropriate agreements, commitments from both sides and is always a custom arrangement. It provides benefits of having proven, up-to-speed developers without the hassle of hiring them or establishing a remote office on your own.

The tips above hugely increase chances of success and a smooth start of a project. The risk is minimized and potential problems identified early. That's lean way of doing business ;)

(Picture: Ford Racing - used under Creative Commons)