Outsourcing Engineering Without Losing Control
7 Tips to Success for Outsourcing without Loosing Control
By Michele Mordacq
President/CEO, RightHand Technologies
RightHand Programming provides development services to a variety of customer types. Some companies are experts on developing new products, and need a few extra resources to add skills, talent or maybe extra hands to get a project that is running behind back on schedule. Other customers have no idea how to develop a product and get it to market, and they require guidance and advice from outside experts. Whatever the case, it is important to follow some ground rules when outsourcing any piece of work so you don’t loose control. These 7 tips can help.
Tip #1: Find the person or company whose skills match your needs
The key criterion for a successful relationship is to find someone who has the technical experience to accomplish the task. Ask about the same or similar projects they have completed in the past. Beware of companies that promise you anything and everything. A jack of all trades is master at none. Make sure they understand HOW to run a project and how they have kept previous projects on track.
Tip #2: Have a contract for exactly what will be delivered
Once you’ve selected the perfect vendor and have confidence in their skills, a written contract or project agreement will assure that expectations, milestones, documentation and deliverables are met. Include what documents you expect, how the code will be delivered and what supporting documents will be required once the finished product is brought in-house. If hardware or tools are needed, who provides them? Who will own them at the project completion?
Tip #3: Create a schedule with trackable milestones
Projects do not meet a projected time schedule unless there is a plan. Have a schedule of deliverables with major milestones highlighted. There should be a weekly or bi-weekly status call to report on the progress and discuss any issues that come up. Good communication is key.
Tip #4: Get requirements, a design approach, or solutions in writing
Quality development starts with a clear idea of what has to be done and how it will be achieved. Requirements Documents are useful in outlining IN DETAIL how the new product or feature will work – helping to alleviate any misunderstanding. In large projects, RightHand suggests formal Architecture and Design Documents that show how all the features fit together. Smaller projects can have informal documents or even drawings or pictures.
Tip #5: Insist on frequent deliverables of code and documents as the project proceeds
Tip #2 stresses the importance of outlining all product deliverables. But do not wait until the end of the project before you receive documents or code. What if something happens and the project ends suddenly? What if you need to get additional resources involved? Do you have access to the work completed to-date to make these decisions? Current software releases can be placed in a source control system, if appropriate, so that multiple versions can be archived. This will help eliminate risk.
Tip #6: Understand the tools needed to recreate the environment
Once the project is complete and the finished code is delivered, what happens if changes are needed? Maybe 6 months later, a bug is found or a new feature is required. If the previous developer is not available, what can you do? It is always possible to find someone else to pick up the project, but they will need access not only to the finished design but also the tools used to create it. A Build Environment Document lists all tools used (including versions): how to compile and load code, tools used for debugging and how to test. Documentation allows developers to quickly recreate the development and test environment and efficiently acclimates them to the current project so progress can continue without delay
Tip #7: Track bugs and open issues
Keep lists of Bugs and Open Issues to keep you informed of problems and their status. Sometimes, important information gets lost in a flurry of emails without a concrete place to note the most recent status. Often, the end product is released with minor known bugs, so it is good to have a list for notation so in the next release they can be addressed. Ideally, there is also a Test Plan that tells how the project was verified. Features not working correctly are added to the Open Issues List. With proper documentation and a complete history, everyone has knowledge about the level of quality at all times.
RightHand's development team always follows our defined Quality Development Process. This ensures proper management of all documents and code that keep our clients informed and in control. View RightHand’s page on Quality Project Development for details.