How to Work With Outsourced Devs Using Agile
How to Work With Outsourced Devs Using Agile
When it comes to outsourcing developers, there is a lot of power at the intersection of the agile methodology, planning, and statistics.
Join the DZone community and get the full member experience.Join For Free
The Agile Zone is brought to you in partnership with Techtown Training. Learn how DevOps and SAFe® can be used either separately or in unison as a way to make your organization more efficient, more effective, and more successful in our SAFe® vs DevOps eBook.
You don't have to be a rocket scientist to see that outsourcing opens up incredible venues of opportunity for small companies. Software development startups that are often financially constrained are especially big winners. You do not have to maintain full-time developers on positions that don’t deal with core competencies of your project. Moreover, you are free to work with any set of specialists at any time. However, how do you organize such a decentralized team? In our opinion, the agile methodology can increase the efficiency of such an arrangement many times over. In some cases, it alone can make the difference between success and failure. Let’s take a look at how it is done.
1. Preliminary Planning
One of the most important concepts of agile planning is a Sprint. A Sprint is a relatively short period during which the team is supposed to reach a certain milestone in your project. Normally, it is a week or two long, but depending on the demands of your team and projects, this period may be different.
It is a good idea to divide the project into segments that can be achieved within a single Sprint. Also, separate larger goals into smaller tasks so that you get more immediate control over the course of a single Sprint. Now, you should understand that not every Sprint will result in a milestone reached on time, especially in the beginning. Don’t worry, though — the experience you get from it will help you optimize your work later on.
2. Information Collecting
Projects in software development usually pass through fairly uniform sets of stages: development proper, code review, testing, deployment and so on. Stages themselves can differ from team to team but usually repeat themselves more or less consistently within any of them. To control and enhance the efficiency of each stage and the development in general, you should first gather statistics. JIRA tools serve excellently in this quality.
Collect information on how long the project stays at each particular stage. It will show you which stages are the most time-consuming so that you can start investigating the bottlenecks and ways of removing them.
3. Efficiency Enhancement
Learning which stages are responsible for downtime is already a valuable piece of information. However, statistics can also give you hints and clues as to what has to be changed to improve the situation. It's one thing when you know that the job is done too slow; it's another thing entirely to have the culprit singled out. How you deal with the situation depends on the problem. Shuffle the responsibilities, employ additional specialists, automate repetitive tasks, hire part-time employees full-time. Concentrate on improving a single area at a time. This will allow you to run the necessary tests and analyze the results of your changes without contaminating the findings.
4. Setting Deadlines
Software developers are notoriously bad at realistically evaluating how much time they need to complete a project. Some perceive it is a humorous trait, but it is still bad for business. After all, if you cannot plan, you cannot deliver consistent results. Agile methodology can help if not in solving this problem, but greatly alleviating it.
Gather personalized information on how much each programmer deviates from his or her preliminary estimation of time necessary for development. This percentage can be added to a deadline evaluation of each subsequent project to give your programmers some breathing room.
However, this is not always enough. One and the same programmer may complete one kind of tasks two times faster than expected, and another two times slower. Thus, you should also calculate every programmer’s average deviation from his average deviation. If it exceeds 20 to 25 percent, you may want to take a closer look and find out how to rectify the situation. For example, single out the types of tasks that are most susceptible to errors in deadline evaluation. After that, you can arrange it so that deadlines for them are set in collaboration between the developer and a team leader.
This is exactly where the power of the agile method, planning, and statistics lies. You can single out a variable, analyze it, make an effort to optimize it, and evaluate the results of your alterations. You will find out both strong and weak points of your team, capitalizing on the former and rectifying the latter.
Don’t expect the results to come immediately, however. Streamlining the work process, spreading out the responsibilities, and eliminating downtime will take some work and time to gather information. It may take a few months for you to arrange a smooth collaboration with outsourcers and optimize the work arrangement. The payoff, however, is enormous, allowing you to dramatically decrease the amount of time spent on every particular project. In some cases, you may expect to make your team four or five times more efficient.
Opinions expressed by DZone contributors are their own.