Six Warning Signs

I. Unreturned Phone Calls
Software development is an intellectual exercise, and you are half the team. If your developer isn’t returning calls, then he’s working blind at best.
II. Frequent Miscommunication
If he’s taking calls, but doing the work wrong, then you need to rethink your relationship. Granted, everyone occasionally misunderstands – he can’t read your mind or vice versa – but if it’s a habit, then you need to either change how you communicate or change who you are communicating with.
III. Bugs cost you more than the software
You should be able to budget your projects accurately – if it costs more to get the software working then it does to write it, then your budget becomes a guess. Find a developer than can make price estimates and stick with them.
IV. Frequent system downtime.
Is your system down as often as it is up? You shouldn’t be riding a productivity rollercoaster – when things break, your developer should fix them ASAP. If not, find a new one.
V. New features getting more expensive.
Are new features getting more expensive and taking longer? You might be building on a shaky foundation. If your current developer didn’t create your software, and just maintains it, talk to him about writing a new codebase before continuing. If not, think about finding someone that can write maintainable software.
VI. It’s not my fault!
If your developer won’t take responsibility, then you need a new one. Responsibility is different from blame – he might or might not be responsible for any given bug. (Software breaks for lots of reasons – one of my clients had an electrician short an ethernet cable across a wall socket, destroying a critical server in the process.) A responsible developer, though, fixes the problems when the happen, even when the client is at fault.