Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This is for the freelancers.

In my past life as a full-time employee, I was involved in hiring and interviewed a good number of developers. I learned that it was much more valuable to see a developer work through a problem, however small, than to talk about experience, etc.

Now I'm working as a freelancer/consultant. One of the nicer things is the freedom to choose what I want to work on. But now, a few years in, I've learned (the hard way) that some clients are not worth the money. They can be fickle, unreasonable, demanding, and difficult to work with in a very demoralizing way.

So I've been wondering: is there a better way to "interview" clients? Obviously any method would have to be subtle, as the client probably isn't expecting to be tested. But is there an analogue to "FizzBuzz" that will tell me whether I should sign on, or back away slowly?

share|improve this question
17  
You're thinking of the legendary BizzFuss test. You present the client a working, well documented example of FizzBuzz and ask them to list all the additional hoops you would have to go through to get paid for it, such as writing them an enterprise accounting system. –  psr Aug 17 '11 at 18:30
1  
+1 But...Full Time jobs can be just as fickle, unreasonable, demanding and difficult to work with as freelancing. FizzBuzz them both. –  P.Brian.Mackey Aug 17 '11 at 19:32
    
True, full time jobs can also be difficult, but (a) a freelancer deals with this problem more often and (b) when applying for a full time position, the employer understands you are checking them out, too (i.e., the interview closing "Do you have any questions for us?") –  benzado Aug 17 '11 at 19:41
add comment

4 Answers

up vote 21 down vote accepted

For many of my former clients, I often scheduled initial meetings at their office. Ostensibly this creates less heartache for them because you're saving them the trip, but more importantly it keeps them from seeing the "man behind the curtain" and it gives you a good close up look at how their office operates.

I would typically show up anywhere from 30 minutes to an hour before the scheduled appointment. I would bring a technical book that I could skim and read, and I would patiently wait in some out of the way area. This would afford me a good opportunity to gauge how the client reacted to difference in the time. Often I would offer to wait eagerly because I wanted to see how the office interacted. If a client treats the people who work for him every day like dirt, chances are good that he'll treat you like dirt once he no longer needs to worry about being nice to you.

If that didn't work, I would offer a meeting place where I could buy the prospective client(s) lunch. Then I would watch to see how they treated the wait staff, and I would be very attentive to their comments about the other patrons, etc.

Since the relationship with the client is exactly that, the only way to test the truth of a potential relationship is to see how the person behaves towards people they don't have to treat with respect. Observation is your best friend, and unfortunately in most client situations, you are in a carefully controlled meeting environment that prevents this very important data.

share|improve this answer
    
Curious: how many times has this "test" yielded a negative result for you? –  benzado Aug 18 '11 at 14:07
    
@benzado: It's pretty even. I wouldn't say it's a conclusive absolute. It's just a benchmark that I used to determine if I would be able to work with the people in question. The ones who mistreated the people around them I did not continue to conduct business with. The others I did. Once I employed this method I very rarely found myself interacting with people in a negative manner. There were always conflicts here and there, but there was almost always a resolution. –  Joel Etherton Aug 18 '11 at 14:14
    
The bit about showing up quite early is interesting. I used to do HR and we would mark down candidates for that because it usually disrupted our workflow. Of course, we took pride in the fact that if we told you 2PM, come hell or high water we would be ready for you at 2PM sharp. Many companies are more... "flexible". Just a thought. –  Andrew Heath Aug 21 '11 at 3:55
    
@Andrew Heath: In the context of applying for a job I would only show up 15 minutes early in order to be able to have any necessary paperwork, badges required for access, etc. handled at the proper time. In this context we're talking about more of a direct client-developer relationship that deals less with HR and more directly with the individuals who will be utilizing the service. –  Joel Etherton Aug 21 '11 at 14:18
add comment

I agree with Joel's answer, but I've handled this in a different manner.

When freelancing, I tried my best to filter out clients. I came up with ways (in my brain) to judge whether they were "good" clients (smooth transactions, great communicators) or "bad" clients (192 new emails). It never worked. Some seemed like they were great clients at first, then it slowly deteriorated, I'm sure not unlike some people that you've hired in your day.

Then I inflated my rates slightly. I haven't had a "bad" client since - organizations and/or people who are willing to pay slightly more for your services generally do so with a respect for your offerings. If you're being shopped by a budgeted prospective client, chances are they're running lean in the worst way possible, which is cutting corners to save money.

Are there good clients only able to pay market rate? Absolutely - but you'll roll the dice. It isn't an easy task to pick those up.

Edit: I should also mention that I was much more inclined to discount my services from time to time for my very best clients. Maybe not directly, but by cutting a few billable hours off or something.

share|improve this answer
3  
I have used this tactic as well in a reactive method. When I identified a bad client, I would explain the problems with the relationship and the fact that they were costing me money by being a problem. Then I would inform them that their rate for service was going up as a result. Few of the bad ones stayed after that, and those that did were just as happy paying the higher rate. Some clients I just flat out fired. –  Joel Etherton Aug 17 '11 at 18:29
1  
@Joel Etherton - that pretty much sums up my freelance career exactly. I think some freelancers are too static with their rate and suffer because of it. –  Nic Aug 17 '11 at 18:32
add comment

I think much of the bad client experience comes down to expectations. "fickle, unreasonable, demanding" sounds like feature creep to me.

The best tip I ever received to screen out bad clients, and even turn bad clients into good ones, is to charge like lawyer.

Lawyers, for the most part, work on retainer. The client pays a deposit which pays for x number of hours of work. Once the retainer runs out work stops (invoice for the next retainer well in advance).

Feature creep has almost vanished for me with this system of billing. Clients are aware they're on the clock and are much less likely to bother you with unreasonable demands.

share|improve this answer
1  
Feature creep is fine if the client is willing to pay for it. What I want to screen for is the client who wants more features for free. –  benzado Aug 17 '11 at 19:42
    
I rarely do any contracting, but when I do, this is how I charge. I also have a sliding scale of charges, so the if they want fewer than a base number of hours, they get charged a premium. This means that people buy time in blocks of a day or a week rather than buying a couple of hours here and a couple of hours there. –  Mark Booth Aug 18 '11 at 10:37
add comment

How much of a commitment are you going to make to the project? If they think they can throw out some general needs, get you to write a detailed proposal (free of course), build the whole thing only to come back and find out what they really want and not pay for the extra time, they fail the test. And speaking testing, they don't want to do that either. They think you're a programmer, you should know how to do all this (which includes mind reading.).

If their last project wasn't a success, it may not have been the developer's fault.

You may not be an agile fan, but sometimes this methodology can prevent you from getting too deep into a project with a problem client. Phase I wasn't what either of you expected; part ways and be thankful you didn't try Mega Phase I-X.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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