When you've started your own company, especially in the beginning, you don't really think of clients as something that are "fireable". In fact, in the very beginning, you're willing to work with any client that comes your way, for any reason - you're not picky.
I mean consider it; Clients are the magic element, the mana from heaven, the fuel, if you will, that makes your company go and grow. They are your source of income, and as such are deemed important beyond measure. You'd do anything they ask just to make them happy so they wont go away. In fact, their happiness is often more important than yours, your employees, your families... All in the name of making the company survive and thrive.
So the very notion of intentionally distancing yourself from a potential income source may seem like the absolute antithesis of what you're supposed to be doing! But that's not always the case; Some clients need to go.
If you really consider the drain that some clients put on your resources it becomes obvious that there are times that a client has to be given the boot, but it's not always easy to do. Quite often you continue to put up with an unreasonable or unruly client and completely lose sight of the damage they are actually doing.
The simple fact of the matter is; Any client that is an emotional, physical and mental blackhole is a cancer that must be cut away for the health of your company and the well-being of your employees. It may seem counter intuitive but quite often the best way you can grow your company is to let go of them and move on.
It may not always be obvious though that a company should be fired. Especially when you're inside, looking out.
The first piece of advice here is to listen to the people around you; Especially your spouses.
No one knows you better than the people closest to you, and if they start seeing changes in your behavior and demeanor they are likely letting you know about it. If a client is a nightmare and needs to be fired, then they are affecting your home life whether you realize it or not. The people around you do notice.
What to do: Listen to them. No client is worth your home life. Ask your spouse, your friends, your immediate family.. see if they notice somethings wrong. if you ask they will most likely say something when they wouldn't have otherwise. We all do what we do to make money SECOND, happiness comes first. And if your family isn't happy, you wont be either.
Are they making completely unreasonable demands?
In the beginning you're likely doing anything to make a client happy, to include things that might be unreasonable. Unfortunately you're not doing yourself any favor because you're only training them that those demand they are making are okay. And once a client is trained to behave a certain way, that will dominate the rest of your relationship with them.
How do avoid this: Set ground rules from day one. Boundaries are a good thing. Don't let a client walk all over you. This may seem easier said that done, but in the end a client will respect you more and be more in-tune with your needs and you with theirs if you maintain a professional and reasonable relationship.
Talk to them and explain why a demand might be a bit over the top or out of line. They are people too, they'll listen. If they don't, then you know what needs to be done. Most clients will tolerate a certain amount of "adjustments" to their line of thinking. In the end of they don't then they aren't a good fit for you or your company. Let them go. There will be more clients.
Are they asking you to hit a moving target?
I can't tell you the number of times a client has come to me asking for a feature or enhancement only to change their mind or redefine that feature numerous times before, during and after launch. See the section above on unreasonable demands. This kind of behavior is painful at best, and at worst will cause your employees to throw up their hands and quit.
How to avoid this: Get a hard requirements document for each version of the product and stick to it. Iterative development is fine and dandy but you can't program to a moving target. Don't let a client do that to you. They will complain, they will throw tantrums, they will have "good reasons", etc.. This sort of thing makes hitting deadlines impossible and quite often they will hold you to the original deadline with all the new changes they keep making. Say no, but explain that we can get to their new goals at a future version or a later date.
Are they asking for everything for free?
Some clients just don't understand how much time it takes to develop software. In fact, many clients have these wonderful pie in the sky ideas that sound great, and think that just because they can dream it up, you can implement it for a song. They don't get it and quite often never will.
It's very easy to point at a plumber and the work he does and know exactly what you're being charged for. The results are physical, but with software a lot of the time clients see what we do is an arcane magic performed over a cauldron, a bone in our nose with a chicken foot in one hand and some beads in the other. They don't get it at all and no amount of explaining will bring them any closer to understanding. You might as well be speaking a different language -- and you are.
So now what? Give then your rate. Tell them how many hours something will take before you get started and see if they balk. It's always a good idea to map out a plan of attack based on the design document they gave you. Give them a 10,000' estimate of work with a price tag attached. Make it an HOURLY rate. Don't do flat rate work, you'll always end up doing way more work than you should when someone hands you a large lump sum versus paying as they go. Don't fall into that trap.
Also keep in mind a good plumber charges over $200 an hour for the work they do, yet many clients will scoff at $100 an hour for work that is infinitely more technical and skill laden. Don't lower your rate to something that isn't sustainable. You can always lower your rate later for a client if they are good people and you enjoy the work, but you will never get away with raising it for a client. They wont let that happen.
They make big promises but are slow to pay and come through?
Some clients will promise percentages and large payouts, or contract with you to do work for an hourly rate and just never pay or be extremely slow to pay. They may be good people and may actually have the intent to pay you as they say, but don't.
So now what? Firstly, get everything in writing. This is your only legal recourse should it come to that.
Secondly, never work for a percentage of a company unless you really believe in the product and want to be a part of it. Most of the "killer ideas" that people have, never pan out. To quote Jayne Cobb; "Ten percent of nothin' is, let me do the math here... nothin' and a nothin', carry the nothin'... " Always ask for some cash for the work you do -- even if that means you take a smaller percentage of the eventual pie. You can't spend %%%, but $$$ will buy dinner.
Figure out what your minimum hourly rate is and don't ever go under it, not for any client, friend or sibling. You have bills to pay, don't short change yourself.
In the end if you're a month in and they still haven't paid, stop working and have a conversation with them. Make them understand you can't work for free, and no one should expect you to.
They don't listen to you?
Some clients know everything. They have made software before so they know all the answers already and they don't need your opinion, they just want you to do the work that they have assigned you. Most of these folks look at you as if you were a day laborer and you should just shut up and be thankful that they have hired you.
How to avoid this: They hired you because they don't know how to do the work they hired you for, or they would do it. They need to be reminded of that. The advice you bring to the table should be seen as valuable or why are you even there? There are various off-shore/near-shore entities they could have hired to do mechanical turk like work .. that's not you. Don't let them do this.
If a client refuses to listen, even if they are paying well, it can cause you a lot of pain and frustration that just isn't worth the ulcer. Move on.
Unprofessional tantrum throwing client that makes none-too-subtle threats?
Just fire them! The sooner the better. They wont change their tune, this is another learned behavior that once it is set.. it's set. It wont "get better".
If a client calls you names, curses at you, makes unjustified accusations, questions your ethics, or in anyway acts unprofessionally like this; Just move on. Don't look back. This may seem obvious and to most it is, but it's a hard thing to do when you're trying to do right by a client and they just find nothing but flaws where there are none. You can't make everyone happy. Some people will only focus on the bad and be angry all the time. Just walk away from them. Some people aren't worth your time and the sooner you recognize that the better off you will be.
These kinds of clients are the worst and are the actual "cancer" clients I referred to above. They will kill you, your company, your family.. etc. They aren't worth the heart ache, the angst, the frustration, the sleepless nights, the pain; and you will suffer all of those and more with these guys. Just move on. Be tactful about it, but get out as soon as you can and never look back.
You have a skill set! You will be okay!
Don't be afraid to fire a client. It's a very liberating and can be a cathartic exercise. Sometimes it just needs to happen and in my experience, it's never been a bad thing. You have a skill. Firing a client wont remove that skill. You'll be okay.