If you're ready to fine tune the vision for your next app or software development project, then start the conversation here
There’s no doubt one of the most critical success factors in outsourcing is keeping control of your project, keeping it on track. If you’ve followed the directions so far, then it’s safe to say you’re going to choose a good vendor. However, this is only half the battle for keeping control of your project…
Even when you have a really great team who you’re comfortable communicating with on a personal level, it’s not uncommon to encounter communication challenges with organization and progress tracking.
To cut a potentially long story short, regardless of how good your vendor is you need to have a process, a system to control their activities, track their progress and correct problems BEFORE they get out of hand.
Just a quick warning, there are quite literally tons of books about managing software projects. Going near them is like opening a can of worms, and you’ll just paralyze yourself with confusion if you start diving into them.
This blog will give you EVERYTHING you need to get on the right track; and honestly, these days, any vendor worth the money will have their own systems for dealing with these things.
You simply need to be aware of how these kinds of systems work so you can use them yourself and ensure your vendor is using best practices.
Software Management Tools
Let’s be honest here; it would be weird if an industry full of software engineers didn’t create its own software to manage itself. Thus, what you have is an almost limitless supply of different software tools to manage your outsourced project.
There is software designed to aid everything from software development, project schedule and cost management, and team collaboration, to project management and IT governance.
There are literally so many different software programs it would be impossible to list them all here. Besides, the particular program you pick is far less important than having an understanding of what each category of program is for and what it can do for you.
During the rest of this blog, we’ll look at a selection of the tools that are most likely to be of use to you.
Software development tools
Developing software is a complicated process with lots of moving parts and plenty of potential for little (or big) things to be missed. Even when there is only one person on a team, there are so many little things to track, that without some way to centralize and control the process, it becomes almost impossible to work efficiently.
As a solution to this, software development tools create an environment so a team can manage their work in one place.
Your typical software development tool will help you control the flow of information of requirements capture, software design, source code control, and defect tracking.
There are three main areas where these tools can be of use to you:
Requirements management and software design
By far the most critical success factor in software development is defining and reviewing the scope of the project, and what the software should do. In other words, what features are in, and what features are out.
In all honesty, most projects don’t require software in order to do this successfully. However, large or more complicated projects software can be very useful for keeping track of large feature sets and ensuring everything is implemented.
There are a range of different tools available to deal with this, some of which are open source; others tend to be high-end, sophisticated and, thus, expensive.
Source code control
If you’re project is going to require any more than just one engineer then you’re going to need some kind of software to keep all the different versions of your source code.
Initially, the biggest decision you’re going to need to make is who’s going to store your source code. Are you going to let your vendor keep hold of it on their server or are you going to require them to store it on yours?
The answer really depends on how much your trust your vendor, and if you do decide to let them store the code, make sure they send you copies at regular intervals.
For the vast majority of projects, there are open source tools available. Usually, offshore vendors will be happy to go with the client’s preference in terms of which tool to use.
For more complicated projects, particularly those where your software needs to be tailored for each of your clients, you may need to invest in a commercial tool. If so, you will need a license for each developer working on the project.
Before you go and invest in a commercial license however, make sure to consult with your vendor to see if there is a sensible way to avoid the extra cost. It may be, for example, that you can customize each installation of your software on site with clients, allowing you to avoid the need to purchase expensive software to do this for you.
One of the most inevitable problems with software development is defects or ‘bugs.’
These days there are plenty of very effective defect tracking programs that run securely through your web browser via the Internet. Generally, these will allow developers to upload documents, screen shots, error messages, and whatever else is necessary for each bug report.
You’ll also need bug-tracking software that allows programs to prioritize bugs, decide who is responsible for fixing what, and report when they’ve been fixed. Essentially, it’s a very specific kind of project management tool.
There are many open source tools around for bug tracking and generally, you’ll only need to purchase a commercial tool if you need to more options in terms of how you tie defects to your specification and QA process. Your vendor will be able to give you a helping hand to decide which solution is most appropriate.
One of the best ways to ensure communication between you, your vendor and its programmers is as efficient as possible is to use a collaboration tool.
Collaborating effectively is critical for two important reasons:
1. Initially, you need to be able to fully articulate the requirements of your software so your developers can get it right.
2. Further down the line, you need to be able to respond to issues or make your opinion heard on various options, etc.
For the most part, collaboration tools can be broken down into three different functions (some tools are a combination of all three):
1. Communications: email, fax, audio, wikis, IM. Any kind of communication that isn’t necessarily live.
2. Conferencing: conference calls, screen sharing, chat rooms, and video conferencing, for example.
3. Collaborative management tools: Calendars, project management schedules, document sharing, etc.
These days, all these tools are cheap and readily available. Your biggest challenge will be picking your favorite.
Project management tools
One of your biggest worries when outsourcing is going to be ‘seeing’ the progress that’s being made and making sure you feel in control of the situation. Modern project management tools make this extremely intuitive and easy to manage.
The vast majority of these tools are online and they allow you and your team to see EXACTLY what’s going on, who is responsible for what, and when everything is going to be delivered at the click of a mouse.
Using these simple tools you can assign people and resources to different tasks then combine groups of tasks into milestones. In many cases, this allows you to predict problems before they occur. What’s more, it’s generally easy to see WHY, fix it, and change your strategy to avoid similar situations in the future.
You can even track progress in terms of percentage completed and assign a financial value to each tasks. Most software will also show you what tasks need to be completed, in what order, to reach milestones in time.
Your day-to-day experience with project management tools will be a lot less complicated than it sounds here because in general your vendor will deal with it. You will simply need to keep track of the big picture and contribute where necessary.
Keeping in touch with your vendor
By now you realize how important it is to keep in contact with your vendor and you’ve discovered some tools to help you do that. The question now is: HOW do you fit it all together?
It all seems very simple on the surface, but when you’re in different time zones, with different accents it’s never going to be THAT easy. You need a proper system for dealing with these challenges if you’re going to be successful.
Poor communication is often more of a challenge than intellectual property issues or even the inevitable development problems you’re bound to experience. When it’s working hours in the US, your outsourced team may well be asleep so there’s no way you can swap documents or have a quick chat during the day.
You can try daily phone meetings in the morning or evening but nobody is going to be at their best and even with the best motivation in the world, everyone is going to DREAD them.
The ONLY way to make the situation work is to develop processes and systems that make it efficient for everyone. If that sounds impossible, don’t worry, it’s NOT. People do it successfully all the time.
For example, one idea that works very well for many people is to have weekly conference calls with well-defined goals and objectives so everyone can get most of what they need in one go. Then for the rest of the week, the team can communicate through email and instant messages.
Of course, things will be a lot easier if you use the kind of software tools outlined in the last 2 blog posts. Here’s a quick summary of the type of tools you should be using:
- Project management: Remain in control of your project by tracking tasks, milestone dates, scope, and budget.
- Time recording: Track how efficiently development is progressing by comparing time spent on individual tasks with planned estimates.
- Document management: Ensure your team can effectively and efficiently share and manage key documents without hassle or confusion.
- Requirements management and traceability: Keep track of your project scope so everyone knows what features are in and out EVEN when there are changes, which are often inevitable.
- Issue tracking and defect tracking: Keep on top of bugs and who is responsible for what, so they always get fixed on time.
- Change management: Remain on top of your project and keep expectations realistic to avoid going over budget by tracking the cost and schedule implications of every change you make.
- Test management: Maintain top quality for your project by managing your testing cycles.
If you look around you can almost certainly find open-source or inexpensive hosted tools that will satisfy most, if not all, of these requirements.
The more time goes on, the better these tools get, and they typically allow you to keep track of your entire team with ease.
In Part 2 we’ll cover:
How to successfully manage your outsourced projects
How agile are you?
Which management style should you use?