I built an app for a client recently. He has a bunch of new features that he wants to incorporate into the delivered app in subsequent releases. He asked me for a service contract for the app. I am not sure whether he is asking for a service contract for the existing features in the already delivered version of the app or a service contract including the effort for the new features. How does services after a software product is delivered normally handled? Do I do a service contract for the existing set of features and consider the new features for version two as a new app request altogether? I am pretty new to this, wondering how experience freelancers/companies handle subsequent phases of software projects.
2 Answers
Welcome to Freelancing!
My suggestion is, especially when there is no known end date involved or end product, is to bill hourly. There are many questions on the site about how to determine what to charge, and you can use those formulas.
Make sure you protect yourself - Payment up front (unless you REALLY REALLY trust this company on a personal level), work delivered on time. If they stop paying, you stop working until they bring the billings down to 0 owing.
Canadian Luke has a good answer, but you can also do billing on a "goal" system.
As you finish tasks or features, they pay you before you do any more. This can be done either hourly or per task/feature.
Since you are new to this, do hourly. You don't have enough experience to know how much time and effort it'll take to implement these features, or even bugs when they come up, so any price you give them is going to be either way high or way low. This hurt you and them, since they will likely lose confidence in you due to a perception of overcharging as well as you losing out when something takes way too long to finish, which costs you money and reputation for missing a deadline.
For larger tasks, you can have smaller goals to reach for payments. There's a variety of systems out there, but one I vaguely remember is a 10%, 50%, 90%, and 100% goal, which are more of guidelines than hard and fast rules. What this means is that when you get 10% of the project done, you get paid for 10%, and when you hit 50% of the project completion you get paid for 50%, etc. This is sort of like the "50% up front and 50% on delivery" idea, but with finer grain. You can still use the 50/50 approach, since that's entirely valid in today's marketplace.
This only works if there's a specific feature and a specific goal to hit. If it's an open ended goal, such as "fix all the bugs", then you definitely need to be on either an hourly plan or a monthly service plan. Even a monthly service plan can have upper limits. You can agree to fix up to X bugs per week/month, but if it goes over X, then you get paid more. This prevents them from giving you all the bugs in a single month and cancelling the contract while expecting you to fix everything in that one month. You can definitely negotiate X, even on a month to month basis. This is totally a subjective decision on your part. Don't get bullied into doing it or X will always become negotiable, but only from their side.
"Well, I see that you need X+1 bugs fixed this month, but since you only had me fix X-5 bugs last month, I'll give you a pass this time on the extra fee. But only because I know your budget, we've worked Y years together, and I know you need this done now."
And definitely stop working if they don't pay you. It's not extortion or blackmail, since you should be getting paid for what you are doing for them. Unless you are holding the whole system for ransom, it's on them, especially if you are reacting to what they've done first. They are breaking the contract by not paying you, so you no longer have to follow the contract yourself. Once they start following the contract again, then you have to, so don't get overconfident and start making demands at that point. You can only demand that they follow the contract, just the same as they can only demand you follow the contract. If either of you want more or less, that's a different contract.
And the most important thing about any contract is asking what they want in the contract before it's signed. The way I read your Question is that you aren't sure what your customer wants. My advice to that is: ask them, not us. If you don't know exactly what they are asking for, get clarification from them. If you agree to these terms, write it up in a contract. If you don't, negotiate.
And use a lawyer to write up the contract. There's a good chance your customer will use a lawyer to look at the contract. Neither of you want to get backed into a corner or in illegal activity, even accidentally. A lawyer can make sure you aren't doing something silly or stupid, and avoid anything that's unenforceable. I've talked to a couple of lawyers and they said the "legalese" most people try to use doesn't mean anything in the courts, and to use simply words to make things completely clear to everyone. If you and your customer can't understand it, a court of law likely won't understand it either, if it gets that far.