This is a mobile version of the article, its original content can be found here.
21 October 2014
When you hire a software developer (individual or a team), there are basically two types of contracts: fixed price or time-and-material. They are fundamentally different but the truth is that in either case—you lose.
In the eXtremely Distributed Software Development (XDSD) methodology everything is different, including the way we invoice our clients. Let's see what happens in traditional contracts and what changes in XDSD, which we practice in Teamed.io.
The difference between fixed-cost and T&M is in who takes the risk of spending money and getting nothing in return. This risk is huge in the software development industry, especially in outsourcing. Over 80% of all software projects fail to achieve their objectives and about 30% of startups fail by running out of cash. However, very few programmers (if any) fail to get their monthly salaries on time.
What does this tell us?
I guess it means that in all failures you—the client—will be the loser.
Time and Material
In T&M you will simply pay and pray. If your programmers appear to be honest workaholics you may get lucky and get something done. As you can see from the numbers above, however, this is rarely the case. Don't fool yourself; there won't be any workaholics in your project. Even if you adopt micro-management and corporal punishment, your overall costs will be much higher than expected and the quality will suffer.
This is what a monthly T&M invoice will look like. You will pay for the time spent by programmers pretending to be working on your project. Well, as I said above, some of them will occasionally do something useful, but overall statistics tell us that most of that time will be wasted.
No matter how good or bad the code written during that month—you still have to pay the bill. How many more invoices you will get until the product is done? Nobody knows.
In the end—you lose.
In Fixed Price you will feel secure at the beginning—"the statement of work specifies everything and the price is fixed, how can I lose?" According to the statistics above, however, programmers are much smarter than their clients. You will lose in quality. Yes, you will get something for that fixed price, but it will be a throw-away software. And when you decide to modify it, new costs will bubble up. In the end, the whole project will be ruined and your money will simply be turned into programmers' salaries. This model is even more risky than T&M, where you at least have a chance.
Once in a while you will receive an invoice with a list of milestones reached. Every milestone will contain a certain set of features implemented in the product. Keep in mind that the primary motivation of your programmers will be to do less and charge more. Every time you ask for improvements or corrections, there will be a fight about budget. You will either give up and lose a lot of money or your team will significantly jeopardize quality, in order to stay profitable.
In either case—you lose.
So, what is the solution? Is it possible to have win-win contracts with programmers?
Yes, it is. We call it "Incremental Billing."
Remember, in XDSD we work with a stream of micro-tasks, usually completed in less than an hour. Each completed task produces a new increment (aka a "release" or "version") of software. An increment could be a bug fix, a bug report, a new feature or a micro-step towards any of these.
By the end of a week you get a bill that lists every single increment delivered during the week, the amount of time spent on its development and its total cost. Every increment costs you 30-60 minutes of a programmer's time (plus our fees).
Besides that, by the end of the week, you get an updated version of a project plan, with a re-estimated budget. Thus, you see what was done so far and how much needs to be done, according to our estimate.
How does this help you not lose/waste money? Here's how:
- you fully control your budget
- you pay only for the work completed
- you track the progress with few-minutes-granularity
- you don't pay for meetings, chats, lunches or coffee breaks
- programmers stay very motivated, since they are paid by result
- there is no long-term commitment, and you can stop at any time
- every increment passes all quality checks
As you can see, XDSD methodology not only improves the way we develop software but also fixes the flaws in the way you pay for it. Since it is a win-win model, it is beneficial for both programmers and for you—the paying project sponsor.