3

On one hand, software development involves a lot of non-programming activities like requirements gathering (including analysis), estimating, planning, testing, tracking work, change request management, and more.

On the other hand, our clients don't want to pay for these activities. When a non-programming activity shows up on their invoices, they usually get angry and complain to upper-management. Of course, they always win their cause. Therefore, we (the company) don't get paid.

The result of all this is that upper management is pressuring us (programmers and project managers) to not perform any of these non-programming activities. It generates all the problems that are commonly known to result for having a "code & fix" approach to software development.

Our poorly tested software is often released with bugs, and of course, clients don't want to pay for us fixing them. Moreover, we often release, just in time, software that don't correspond to what the client's wanted or needed because we never had the chance to invest the time to understand what the client needed. The release is therefore rejected by the client who then complains to upper managment. We then have to make all the requested changes for free.

I don't know how other companies solve this problem and I don't know where to look at to get the answer. Do they bill their clients for non-programming activities? More importantly, how do they get to finance these non-programming activities? Do they convince their clients to pay for these activities? Do they hide instead, unlike us, the real nature of the work they are doing? Do they charge so high for programming activities that it doesn't matter if non-programming activities don't generate any income? How?

I expect agile to be suggested as an answer, but please understand that I will not accept "you must do agile" as an answer, because it would not explain how agile would solve the problem. In a scrum team, for example, you perform a lot of non-programming activies and you still get paid for them. I cannot begin to imagine how our clients will ever accept to pay us for doing sprint retrospectives for example. If you want to answer "agile", please explain how agile solves the problem. For example, how do you finance all the non-programming activites happening during the scrum process?

  • To play devil's advocate: Why are your customers paying your company to have an upper management, secretaries and all that other non-programming staff? Don't tell me they are not, because the cash for their salaries has to come from somewhere. – Bart van Ingen Schenau Jun 19 '17 at 12:33
  • @Bart van Ingen Schenau: They don't get billed for upper-management and secretatries. They get billed when someone actively work on their projects, which includes programming and non-programming activities like project management, analysis and testing. Of course, the cash required to pay the salaries of the secretaries ultimately comes from the development work that was billed, but what's your point? – user2187 Jun 21 '17 at 4:28
  • My point is that the customers do pay for the secretaries, but that they are not billed separately for that. Why should they then be billed separately for project activities like requirements gathering? – Bart van Ingen Schenau Jun 21 '17 at 8:14
  • @Bart Requirements gathering is part of the software development life cycle and is specific to a project, unlike the work of secretaries. It looks like you're trying to make me realize that it's possible to finance non-programming activities like requirements gathering in the same way that we finance the work of secretaries. I already understand that. What I'd like to know is if it's how your company solves the problem. Does your employer bill your clients for non-programming activities that are part of the life cycle or does he only bill them only for the programming? – user2187 Jun 22 '17 at 14:29
  • My current employer just rents me out to do valuable work for the customer at their premises. My previous employer also did project work, and there the quote for a project also included the necessary non-programming activities and they were non-negotiable (not that our customers wanted to take them out, they being technical companies themselves). – Bart van Ingen Schenau Jun 22 '17 at 16:51
9

Stop work immediately and get the work under a contract. Get a detailed Statement of Work that clearly identifies what is getting delivered, what activities will take place, what finished looks like, how you will invoice, how they will pay, etc. Your issue is not methods or communications or convincing them. You have no contract or are not enforcing your contract and they're beating you up to their benefit. You need to take a seat at the negotiating table and put YOUR requirements on it. If they don't allow you, walk away and go find another customer who will pay you.

8

Stop billing them for the activities they complain about and roll the costs into what they are willing to pay for (deliverables). You're not cheating them--you're not burdening your clients with the details. Your clients want the sausage, not the details of how it's made.

Also, if your client doesn't want to pay for the requirements gathering activity, then tell them you'd be happy to receive the requirements from them. This teaches them that there are costs involves and someone has to pay them.

Your company needs some people who understand what a Statement of Work is, how to write contracts, etc., and some project managers. It seems your clients and your upper management don't understand how software is properly built.

  • Completely agree - I think there is an underlying problem for the OP – amelvin Jun 14 '17 at 10:10
  • IMO our upper management has very poor knowledge of how software is properly built. You're right about that. – user2187 Jun 21 '17 at 4:08
3

Is the "upper management" your management or theirs?

If yours, you need to have a discussion with them that makes absolutely clear that treating all "non-programming activities" as non-essential costs them money.

If theirs, with whom do you have a contract? The client or their management? Either way, you need to make clear that these non-programming tasks are absolutely still necessary to get satisfactory results. Alternatively, you could not bill the non-programming tasks at all but increase the prices so they're still covered.

Obviously, the problem is that your client has been getting away with their demands, so you'll have a lot of trouble convincing them that this is going to change. You might be better off cutting your losses and find a new client, this time including planning, testing, feedback sessions etc. in the contract from the get-go.

  • Our upper management. How do I convince clients and upper management that cutting these activities doesn't save money but cost more money in the end? They don't trust theory, so I need data. However, I have no data to prove this and don't know how I could get this data. – user2187 Jun 11 '17 at 2:29
  • @user2646988: For the costs of the current way of working, you can calculate that from the hours that you can't bill to the customer while fixing the delivery problems. For the cost of doing requirements gathering (and other non-programming activities), you need to make an estimate. – Bart van Ingen Schenau Jun 19 '17 at 12:39
0

Tricky situation. The reason that the other company & your upper management don't want the charge for non-programming work is almost certainly because they don't value it.

The other company probably see it as a way to pad out the bill & would probably claim that they are doing the specifying & much of the project management themselves (been there seen that!).

Your upper management are not interested in the process - they are interested in the results, so they would say that the results should be charged for, but the rest of the process should be as lean as possible. When companies like Netflix say that they can eliminate roles like Project Manager (http://www.projectmanagers.net/i/9-current-trends-and-more-in-project-management/) upper management can believe that lots of middle management roles are mere padding.

What to do is simple.

Either only charge for programming & risk upper management sacking the middle management tier as it is a cost that generates no revenue; or inflate the deliverable charges to cover the costs of the non-programming activities.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.