so far I’ve made a few points related to the programmer/user chasm:
- Software is fundamentally easy to write. The skill consists in managing the complexity that arises from having a huge number of simple parts. (more)
- As a result, the knowledge to be transferred from user to programmer is much more than, say, from swordsman to blacksmith. (more)
- It’s largely because of this complexity that traditional project management methodologies don’t work well in software. (more)
The traditional methodology is to write a list of requirements which is then used as a contract. This often results in discussions like this: “Could you make this button more prominent? Users somehow can’t see it.” “I’m sorry, but button redesign is not in the requirements.” It’s not about a single button, it’s that if the contractor accepts to do things that aren’t in the requirements, a little of this and a little of that can be a huge extension to the project. In software (like in many projects), the devil is in the details. A contract based on a requirements document often creates tension between the contractor and the client.
Another traditional method that attempts to work around this is hourly billing. The contractor charges for his time or for his programmers’ time. You want a button redesign? No problem. You want us to fix an incorrect comma? No problem. Anything the client asks, the contractor does—and charges for it. But this creates a strong incentive for the contractor to procrastinate. Even if you are good-willed, the incentive is there and it affects you, if subconsciously. Even if it doesn’t affect you, the client might think it affects you. Why did feature X take so much time? Why have we exceeded the budget with no end in sight? Hourly billing is also a source of tension between the contractor and the client.
If requirements-based contracts don’t work and time-based contracts also don’t work, what can we do?
While I have some ideas, I don’t want to make this email too long, so I will continue this exploration next time.
P.S. Now with COVID-19 I thought I’d look for virtual (remote) logistics conferences. However I didn’t find much. If you know of any such event, could you hit reply and tell me? Thanks!