I came across a job posting recently which I felt compelled to apply for - someone who was at the point of dropping Joomla! due to the awful experiences they had with another contractor and was looking for a 'last chance' developer to rescue their site.
The job posting stated they wanted someone from Australia (as they are an Australian company) but I applied anyway explaining my background and how I thought I could help them. The job involved customising an extension which we have used quite a bit - Joombah Jobs - so I had a bit of a head-start as I'm already fairly familiar with the system. They hired me for the job, and I could immediately see why there had been problems - the site was being developed in an outdated version of Joomla!, the template was poorly coded, and the customisations they needed to meet their business needs had not even been attempted.
Right speech - a challenge at times!
It's quite a tough role to play when someone has had such a traumatic experience, of course you want to make sure that you don't repeat that experience but I also have to be reminded frequently of the precept I find hardest .. right speech! This means not engaging in berating the previous developer which is quite challenging at times, especially when your employer initiates that kind of conversation! Ultimately, I've had jobs that have gone wrong, overrun significantly, haven't met deadlines - it happens. I don't know what was going on for that person or whether the story I hear from the client is the whole story, but it is terribly tempting to play that out to my own benefit (look how great I am, I'm not like that). This goes against the speech precept as you are (intentionally or not) inflicting harm on that person, speaking harshly about them, and probably not being particularly mindful of the situation.
Honesty is the way forward
I've found that in this situation the best way forward is complete honesty. Even if it means that the client is going to have to invest a significant amount to put right what was wrong or finish what hadn't been started - it's better to lay things out clearly so that they can make an informed decision whether to proceed. I try to remember that actually, I wasn't the person who caused the problem but I have been asked to see if I can fix it, and I need to clearly explain what needs to be done to fix the problem.
Of course, this means letting go of the fact that you might as a result lose that job, if they decide to ditch it all together. On the flip side, you might also be respected for the honesty and for your knowledge, and be asked to carry out the work - which is what happened in this situation.
Clarify, clarify, clarify!
It's important to remember that many clients are totally outside their comfort zone when hiring a website developer - most of them do not have an in-depth knowledge of website design and many are not particularly great at getting their vision for their site over to someone else - it is very easy to get the wrong end of the stick, especially if there is a language difference somewhere in the equation. Add to this someone who has already had a bad experience where something has gone wrong, whether it be their fault or the contractors, there is the potential for a repeat occurrence.
I can't emphasis enough the importance of clarity in communication and having an open channel to clarify anything you are not sure of. I don't mean that you can call them at 4am to ask what colour a heading should be, but you should both be able to question, clarify, and communicate freely. Personally I find that Skype is great for this, and if you need to screen share you can use TeamViewer which works cross-OS so shouldn't be a problem on Mac/Linux/Windows/mobile/etc.
Don't forget the time-zones
It is also important to bear in mind time-zones if you are working with clients on the other side of the world - you might need to adjust your working hours to accommodate for that. I use Kubuntu and I have several clocks on the right of my desktop which show the time-zones of the various clients I'm working with so that I know when I can expect a dialogue. Skype also helpfully tells you the local time for your contact when you open a chat dialogue. My Gmail also has a labs widget to tell me the local time of the person so that is also quite helpful! It's all about awareness at the end of the day!
Ask for regular feedback
As the client has had a bad experience previously, I would always suggest asking for regular feedback - get them to check and sign off each major task you do for them, and ask if there is anything else that could improve it. Make sure that they are happy with the work you're doing and provide a channel for any potential problems to be dealt with quickly. Also, have the courtesy to tell your client if you are not available for any extended period of time (generally I would advise if I am not going to be able to work for more than a day) - otherwise they are likely to go into a tailspin if they're trying to contact you and you're not responding because you're at Great Aunt Mabel's for her 90th birthday party in Spain and don't have Internet connection. I made this mistake once by saying I was going to be away for a day, but due to time-zones it turned out to be a day and a half, which unfortunately ended up with a really frustrated client. It doesn't take two minutes to fire them an email or drop a message on Skype just to let them know, and apologise if it's unplanned or means you're going to miss a deadline. Things come up, and if you're honest about it, they will usually be accommodating.
I hope that this helps people who are in the unenviable situation of dealing with clients who have had bad experiences before they come to you - I'm afraid this seems to be happening on an increasingly frequent basis which is resulting in a lot of people losing faith in Joomla! when in fact the developer or designer was at fault - here's to putting that situation right!