There’s an old saying that if you want to judge the character of the person you’re on a date with, you should pay attention to how they treat the waitstaff. Is she polite even when she doesn’t have to be? Does he get angry over minor mistakes, and leave a lousy tip?
Another dating red flag is what your date has to say about their previous relationships. If their dating history is a litany of jerks, assholes, idiots, and losers, you may need to consider the fact that there’s only one common element in that string of disappointments.
For the freelance software developer, getting clients is a lot like dating. And in my experience, some of the same warning signs apply.
One of my early clients told me a story about how useless the previous consultant he’d tried to work with was. I had a not-so-great gut feeling about this client from the start, but I needed the money. He would pay me to make suggestions about application architecture, which he’d then try to pass along to his overseas development team. Not surprisingly I wasn’t able to be very effective in this largely non-coding arrangement, and he eventually soured on me, saying that he wasn’t getting the “rock star” performance he thought he was paying for. He wound up stiffing me for my final invoice.
More recently, I had two startup cofounders approach me. They had been traveling the country raising funds while their one programmer built the application. They were super excited about their upcoming launch, but they needed some help. It seemed their developer wasn’t working out. They were feeding him changes and tweaks as they did this fundraising tour, and he was taking way too long to deliver. They were ready to replace him, and they wanted some help both in finding a new developer, and in bridging the gap until one was found.
They gave me a story about how he was relatively new to Ruby on Rails, and he was working alone, and he just wasn’t up to the task. I’d heard this story before: inexperienced developer teaches himself a little Ruby and Rails and immediately starts taking contracts, leaving a trail of unmaintainable code in his wake. When I took a look at their codebase, I was braced for the worst.
What I found, instead, was a clean, nicely-factored codebase, using current best practices and with a more than adequate test suite. After poking around in the code for a while I got in touch with the founders. I told them that they had lucked out in their choice of developer, and that the problem clearly wasn’t with his ability. I told them that the problem was more likely to do with communication and/or motivation. I said I’d be happy to sit down with all three of them and help facilitate a discussion of their issues. And that it was my considered opinion that they’d be much better off resolving their issues with an obviously competent programmer who already knew their system backwards and forwards, rather than changing horses right as they were about to launch.
They never got back to me.
I’m still a relative noob when it comes to freelancing. But here’s one rule of thumb I’ve come across: assume the way the client talks about previous or current consultants and/or employees is the way they will talk about you. Then decide if you’re OK with being treated that way.
Yes, there are legitimately substandard developers out there. And maybe your prospective client has had a string of just plain bad luck.
But in my experience, people who are worth working for find ways to be tactful about even the worst of their ex-employees. They don’t go on and on about other people’s failings at the drop of a hat. Instead, they have to be specifically asked before they’ll say something negative. And even then, they make an effort to note possible extenuating circumstances. They’ll say “she was really looking for a different kind of environment than we could offer” or instead of saying “she was a total disaster”.
People who are worth working for make the assumption that everyone is doing the best they can with the resources they have, until repeatedly proven otherwise. And even then, they are professional about how they discuss those who have been disappointments. They also are more focused on the task at hand rather than the screw-ups of the past.
So if you’re a freelancer, or even a developer looking for a new full time job, take this experience for whatever it’s worth. Oh, and trust your gut. I’ve yet to be wrong about having a “bad feeling” about a client.