The Prisoner's Dilemma in Software Development
Last updated: April 16, 2024 Read in fullscreen view
- 07 Jul 2024
Top Fintech Companies in Vietnam Driving Innovation Across Digital Banking & Investment 57/133 - 18 Oct 2020
How to use the "Knowns" and "Unknowns" technique to manage assumptions 38/1089 - 08 Oct 2024
Vietnam: The Rising Star in Global Outsourcing – Trends and Costs for 2025 32/370 - 12 May 2021
The Real Cost Between Outsourcing IT vs In-House: A Quick Comparison 27/454 - 21 Aug 2025
Top 30 Oldest IT Outsourcing Companies in Vietnam 26/125 - 11 Mar 2024
Why You Should Hire Odoo Developers from Vietnam to Customize Your ERP System 25/126 - 24 Nov 2025
Top Blockchain Companies in Vietnam 24/65 - 01 Oct 2020
Fail fast, learn faster with Agile methodology 24/1047 - 03 Oct 2020
Outsourcing Your MVP Development - Streamlined Solutions for future 23/440 - 05 Aug 2025
Why Doesn’t South Korea Outsource Its IT Projects Like Other Developed Countries? 23/111 - 02 Feb 2026
What Is the Total Cost of Web Development for Small & Medium Businesses? 23/39 - 14 Oct 2021
Advantages and Disadvantages of Time and Material Contract (T&M) 22/864 - 13 Dec 2020
Move fast, fail fast, fail-safe 20/323 - 22 Mar 2022
8 Mistakes Marketing Agencies or Consulting Firms Make When Outsourcing Web Development 20/358 - 18 Aug 2022
What are the consequences of poor requirements with software development projects? 20/274 - 24 Nov 2021
What is the Actual Cost of Hiring Cheap Developers? 19/392 - 06 Feb 2021
Why fail fast and learn fast? 19/450 - 04 Apr 2024
Unlock Vietnamese-Japanese outsourcing potential 18/244 - 03 Dec 2025
IT Outsourcing Solutions Explained: What, How, Why, When 18/40 - 23 Sep 2021
INFOGRAPHIC: Top 9 Software Outsourcing Mistakes 17/439 - 21 Oct 2021
Advantages and Disadvantages of IT Outsourcing 17/357 - 01 Mar 2023
Bug Prioritization - What are the 5 levels of priority? 17/235 - 11 Mar 2023
Common Pain Points in Software Development Outsourcing 16/260 - 10 Nov 2022
Poor Code Indicators and How to Improve Your Code? 16/231 - 15 Oct 2022
Project-based team model for one-off and pilot software development projects 16/806 - 31 Oct 2025
The True ROI of Software Development Outsourcing for Tech Startups 16/88 - 25 Sep 2025
A Practical Guide to Secure Online Work for Outsourced Teams 15/90 - 19 Oct 2021
Is gold plating good or bad in project management? 15/816 - 14 Dec 2021
The Top 10 Problems with Outsourcing Implementation and How to Solve Them 15/406 - 10 May 2021
Project Audit and Second Opinion Services 15/257 - 15 Aug 2021
TIGO Rate Formula - Things the partners should know 15/491 - 05 Jan 2022
What Outsourcing Engagement Model is Right For You? 15/322 - 01 Sep 2019
Outsourcing Software To Vietnam: Facts, benefits and limitations 14/453 - 09 Jan 2021
How can outsourcing enable business agility? 14/202 - 19 Apr 2021
7 Most Common Time-Wasters For Software Development 14/556 - 07 Nov 2024
Outsourcing Crisis Looming: Will Trump's Policies Transform the Global IT Landscape? 14/176 - 16 Oct 2024
Building a Software Outsourcing Startup: Strategy Through Two Canvases 13/38 - 19 Mar 2021
Selective Outsourcing of IT Functions - a new trend in business outsourcing 13/541 - 16 Dec 2021
Why outsource Python development of your project? 13/474 - 12 Jan 2023
Top 10 Trustworthy IT Outsourcing Companies in Vietnam 13/285 - 09 Sep 2022
Close Collaboration and Communication Can Overcome the Challenges of Distributed Teams 12/194 - 01 Mar 2022
Top 5 reasons why outsourcing to Vietnam is a smart move 12/285 - 02 May 2021
Outsourcing Software Development: Avoid 8 Mistakes 12/111 - 17 Jun 2021
What is IT-business alignment? 12/374 - 08 Oct 2022
KPI - The New Leadership 12/603 - 31 Oct 2021
Tips to Fail Fast With Outsourcing 12/392 - 06 Oct 2021
Intellectual property issues with outsourcing software development 12/389 - 01 Jan 2024
Tech Partnerships: Choosing the Right Software Outsourcing Firm in Vietnam 11/181 - 10 May 2021
What are things you should look for in a good IT outsourcing company? 11/431 - 03 Nov 2022
Top questions and answers you must know before ask for software outsourcing 11/292 - 01 Jan 2023
4 New IT Outsourcing Pricing Models to consider in 2023 11/362 - 01 Jan 2024
Software Outsourcing Questions for 2024 11/157 - 03 Nov 2021
7 phases of Odoo Implementation and Development: Can they be outsourced? 11/406 - 10 Dec 2023
Pain points of User Acceptance Testing (UAT) 11/452 - 11 Jan 2024
What are the Benefits and Limitations of Augmented Intelligence? 10/478 - 01 Jan 2024
12 reasons for software development outsourcing 10/175 - 03 Jan 2023
IT Outsourcing Costs: Is outsourcing really cost-effective? 10/210 - 17 Feb 2022
Prioritizing Software Requirements with Kano Analysis 10/304 - 28 Dec 2021
8 types of pricing models in software development outsourcing 10/437 - 06 Feb 2026
How Much Does a CPA Cost for a Small Business? 10/16 - 12 Mar 2024
How do you create FOMO in software prospects? 9/167 - 01 Jan 2023
Software Development Outsourcing Trends to Watch Out for in 2023 9/321 - 08 Feb 2022
Software Development: Fixed Cost or Opportunity Cost? 9/468 - 05 Jan 2024
Easy ASANA tips & tricks for you and your team 9/200 - 21 Oct 2022
Outsourcing Billable Rate 9/270 - 04 Jan 2021
VIETNAM AS A BIG ATTRACTIVE DESTINATION IN THE FIELD OF OUTSOURCING 8/311 - 13 Jan 2023
What are the Hourly Rates in Offshore Software Development? 8/242 - 08 Aug 2021
Why Nearshore Software Development is better than In-House Development? 8/199 - 16 Mar 2021
Outsource Data Engineering Services - TIGO Streamlined Solutions 8/251 - 13 Oct 2021
Why Outsourcing Software Development Services Is Gaining Traction With Non-Technical Leaders? 8/310 - 01 Jan 2023
Top 5 IT outsourcing countries in 2023 7/272 - 02 Mar 2021
Estimate the Cost of Software Development 7/335 - 16 Feb 2026
Education App Development Cost in 2026: Benchmarks and Key Cost Drivers 7/13 - 01 Jun 2025
10 Sustainable & Unique IT Outsourcing Companies in Vietnam 6/79 - 15 Nov 2023
IT Staff Augmentation Types and the Best Choice for Your Business 6/190 - 26 Dec 2023
Improving Meeting Effectiveness Through the Six Thinking Hats 6/254 - 10 Jan 2024
Facts Chart: Reasons for outsourcing 6/152 - 14 Mar 2024
Why should you opt for software localization from a professional agency? 6/140 - 12 Oct 2021
Vietnam outsourcing path - the silk road connecting ASEAN with the developed countries (EU, US, Japan...) 6/302 - 17 Oct 2020
How Outsourcing can Improve Time Management for Better Business 6/270 - 19 Oct 2020
The hidden costs of outsourcing software development 6/449 - 06 Nov 2019
How to Access Software Project Size? 6/249 - 28 Oct 2022
Expect the unexpected in 2023 - How Outsourcing Can Help? 6/199 - 10 Mar 2021
The 7 Biggest Mistakes to Avoid Before Outsourcing a Web Development Project 6/237 - 25 Nov 2021
Low-Cost Software Development: Buy Nice or Buy Twice? 6/338 - 17 Jan 2024
What are the benefits and challenges of using multi-sourcing or single-sourcing strategies? 5/187 - 01 Jan 2023
Top Software Development Challenges in 2023 5/298 - 01 May 2023
Streamline Your Business with Outsourcing 5/193 - 01 Apr 2021
IT Outsourcing to vietnam: Why It Is A Good Choice? 5/292 - 01 Jan 2023
Why is Vietnam the Top IT Outsourcing Destination of 2023? 5/234 - 21 Aug 2022
Forbes: IT Outsourcing Hotspot: Vietnam, A Small But Mighty Powerhouse 5/256 - 01 Oct 2022
Vietnam is a favorite supply of IT outsourcing services to Japan 5/234 - 01 Jan 2024
Hiring Tech Talents in Asia: An Overview of Skills, Costs, and Potential 5/162 - 02 Nov 2023
What are the pros and cons of iIT outsourcing? 4/188 - 01 Jan 2024
What The World Is Flat Means to IT Outsourcing 4/166 - 08 Jan 2024
Outsourcing on an As-Needed Basis 4/158 - 01 Feb 2023
[InfoWorld] Is your outsourcer agile enough? 4/193 - 31 Dec 2021
Outsourcing Software Development to mitigate the impact of COVID-19 2/320
The Prisoner's Dilemma in Software Development
You, the developer, intend to exchange code for money with your client. If you deliver something that does not work, and the client pays for it, you have received all the benefit of the transaction and the client has gotten the sucker's payoff. If you deliver functional software, and the client keeps it but fails to pay, the tables are turned and you have received the sucker's payoff. If you both perform cooperatively-- you deliver working software and the client pays--you both benefit, but arguably less than if one of you had taken advantage of the other (you have worked harder, presumably, than if you had delivered minimal, nonfunctional code, and the client is out the money it could have kept.) If you both defect, you both lose out but at least the client has kept its money and you retained your code.
In a perfect world, the client would pay you the whole price at the outset of the software development project, and you would always deliver working code. Since this is not a perfect world, the multi-phased software development contract has evolved, with payments made against successfully completed milestones. This style of contract turns what might have been a one-turn game, with no shadow of the future, into a multi-round engagement; each phase of the contract is in effect a separate round of the prisoner's dilemma.
The classic software development contract, with its guarantee and its acceptance machinery, shifts the sequence of turns so that the client, on each round, may determine whether you have cooperated (by examining your code to see if it meets the spec and is functional) before determining its own move.
However, the contract, if well-drafted and fair, also protects you, the developer, by tightly defining the client's expectations and by restricting the client's ability to defect by withholding acceptance. Without such an agreement (which represents an advance compact by the parties to play the cooperation card on each round), it is all too common a spectacle to see a client withhold payment on the last round, to force the inclusion of additional requirements not previously thought of. Even with a contract, this may happen; since the iterated prisoner's dilemma is for a known number of rounds, the client, not expecting to deal with you again, may defect on the last round, simply hoping to keep the balance of its money. But a well-drafted contract will at least limit its ability to get away with such a defection.
By contrast, most defections by developers are the result of negligence, not malicious intent. The shadow of the future lies more heavily on developers, who wish to remain in the business and obtain good recommendations from clients, while most clients are not themselves in the computer industry, don't expect to need further services immediately and do not anticipate any problems finding software developers eager to serve them even if they have burned one or two.
Defection by the client may take other forms than the withholding of money. It might involve a malicious interpretation of an ambiguous requirement, to include functionality that the developer cannot possibly deliver for the agreed price and still make a profit. Or the client may blame you for its own shortcomings or inability to meet its commitments, making you the scapegoat for an internal political struggle.
Axelrod's experiments determined that the most effective, yet simplest strategy in an iterated prisoner's dilemma is "Tit for Tat", in which you begin with cooperation on the first move but then echo whatever your partner did on the last move. Effectively, what this means is that cooperation is always rewarded with cooperation, while defection is immediately punished with defection. Surprisingly, most software developers are constitutionally unable to apply this strategy to their clients, for a variety of reasons. Project managers may be overruled by salespeople or account managers, who think that being soft on the client is the best long term policy. Sometimes a sense of guilt--did you really do a good enough job on the first deliverable?--intervenes. In any event, whenever I hear of a software development contract in which the developer has commenced Phase II even though Phase I has not been accepted and paid for, I know the developer is playing "All Cooperate", a strategy which will certainly motivate the client to play "All Defect", as it has nothing to lose. And the developer will now receive the sucker's payoff on every round.
The moral is that the developer, to protect itself in an unethical world, must be ready to stop performance on the round following a defection by the client. Of course, before deciding to do so, the developer must conduct an objective review, preferably involving peers not involved in the project, to determine its own responsibility--perhaps the client justifiably withheld acceptance because the developer defected on the last round, and does not know it! But, assuming that you delivered working code and the client has failed to pay, going forward and hoping that all will come out right in the end is a sucker's move.
Since a software development contract is almost always for a known number of phases (and therefore the associated prisoner's dilemma is for a known number of iterations) preventing your client's predictable defection on the last round is a knottier problem. By now, the shadow of the future may be relatively slight; the client has a satisfactory product, but can certainly spot some minor bugs, which, instead of submitting to maintenance, it can pleasantly rely on as an excuse to withhold the last payment. The benefit of the acceptance payment retained in its pocket may seem far greater than the benefit of knowing you are happy and available to do business with it again. Here are some strategies developers use to assure cooperation on the last round:
- Include a software key that must be turned over for the product to work after the date by which acceptance was scheduled to occur. Such arrangements must be clearly disclosed in advance, and even then should only be done with advice of counsel. The more such an arrangement looks like an undisclosed time bomb, the more illegal it may be.
- State in your contract that you own the code until the finbal payment has been made.
- Withhold something pending acceptance, such as source code or a class library irrelevant to acceptance testing but crucial for later use of the product.
- Define acceptance so narrowly in the contract that the client knows it is a virtual certainty that, if it withholds the last payment, you will sue and win.
- Work in a niche specialty in which you are the only player or are recognized to be the best--this will increase the shadow of the future, as it is much more likely the client will need you again.
- Include a maintenance phase in the software contract, following acceptance. If the client expects to need you for maintenance it is less likely to defect.
Key Points' Summary
- Software development relationships are iterated prisoner's dilemmas, where developers exchange code for money with clients.
- The developer receives all the benefits of the transaction if the client pays for functional software, while the client gets the sucker's payoff if they deliver nonfunctional code.
- If both parties cooperate, both benefit, but less than if one takes advantage of the other.
- If both parties defect, both lose out, but the client retains the money and the developer retains the code.
- The evolution of the multi-phased software development contract has turned the game into a multi-round engagement, with each phase acting as a separate round of the prisoner's dilemma.
- The classic software development contract shifts the sequence of turns, allowing the client to determine whether the developer cooperated before deciding its own move.
- A well-drafted contract protects the developer by defining the client's expectations and restricting the client's ability to defect by withholding acceptance.
- Most defections by developers are due to negligence, not malicious intent.
- Defection by the client may involve malicious interpretation of an ambiguous requirement, or the client blaming the developer for its shortcomings.
- Axelrod's experiments found that the most effective strategy in an iterated prisoner's dilemma is "Tit for Tat", where cooperation begins with cooperation on the part of the client.










Link copied!
Recently Updated News