The Danger of Working With Other Freelancers
Today I’m up at 5:30 after only getting four hours of sleep, because I’m dealing with a complete website meltdown. Yay fun, right?
The difficult part of it though, is that I didn’t code this site. Instead I had hired another developer to help me out because the site required a ton of backend work that was above my head. I do this quite often (and am upfront to the client about it) so I didn’t think twice. I don’t mind sharing work when it’s something I can’t do or am not interesting in doing.
For some reason, it’s impossibly hard to find a good backend programmer, or even (honestly) great freelancers period. I think because it’s so easy to get into this industry that people with barely any understanding of how to handle customers, or even a great understanding of the skill itself, can hop online and set up shop. I decided to hire this person because they seemed like a great developer and I was trying to help them setup their new business and get away from a full-time job. Plus the fact that they had recently been in the front of the industry didn’t hurt either. I like to take newbies under my wing and help out when I can because I think freelancing is fantastic and more of us should get out from under employers. But I’m getting off track.
It’s always a risk hiring someone new, heck it’s even a risk hiring someone you’ve worked with before. Things and situations change and a great worker can become a shoddy worker if they’ve taken on too much or have other things going on in life. I’m not here to name and shame (although to be honest, it has crossed my mind several times), but I want to provide a lesson to would-be subcontractors in how to conduct business and a cautionary tale to those of us who are looking to hire others.
Communication on this project was great the first time around. Until they went full-time freelancing. Then all of a sudden several days, even weeks would go by without a single reply to an email or even a tweet. I had to publicly tweet them several times before I finally got a reply.
If someone hires you to do a job, it’s on you to make sure you keep in touch. Of course you’re not expected to be at their beck and call. Heck, I normally only check and answer my emails once a day, especially when I’m fully scheduled up. But letting several days go by without a single word (even an “I’m on it”) is completely unacceptable. Answer your emails from your clients. They’re paying your bills.
If you build it, it’s on you to make sure it works. Stuff happens and things break, it’s part of the job. Unless it’s the fault of the client, it’s your job to make sure what you’ve built is free of bugs, How would you feel if you bought a very expensive product that only half worked? Or in this case, didn’t work at all? You would expect the manufacturer to replace or fix it. Code is no different.
Instead, the developer in question (after a couple of weeks of absolutely no communication) decided they they were just too busy and refused to work on the site Leaving me with something I paid for but doesn’t work. Which meant my client was screwed.
Everyone codes differently. What’s awesome about web development is that there are a million ways to code a website. I’m pretty lenient in how my sites are coded – I don’t require a certain format, framework or accessory bolted on to my sites. I just want them to be clean, semantic and above all, work.
What’s not cool? Deploying LESS with a WordPress plugin that doesn’t work when moving to another server. You should never, ever deploy anything server-side. It slows a site down and things always break. It’s common knowledge that deploying preprocessors server side is a bad practice, and I was surprised to learn that someone who was so pre-processor focused would make this obvious and common mistake.
Then there was the integration into WordPress itself. None of the sidebars (again a basic requirement in WordPress) were editable by the client. In fact, the sidebar was implemented differently for each template. Some templates were pulling from a sidebar include (correct), while others had the sidebar coded into the template itself (incorrect). The code was repeated several times for the same function (incorrect). I ended up rewriting the whole thing.
The worst of all though, was that the one feature the entire site was based off of is completely broken. It was supposed to search through jobs by location and display those results underneath using AJAX. There are no less than three WordPress loops running inside of each other and jQuery for sorting on the fly – which means the site worked great when there was only 1 or 2 job listings during testing. But completely fails in the live environment (with only 19 listings!). I now have to pay another developer to completely rewrite this from scratch.
What to do?
As you can imagine, I’m not very happy about the whole situation. I’m in the middle of a rough personal time which has led to an emergency move back across the world, so it’s not like I have tons of funds to keep paying for the same thing (not like I ever did anyways).
The worst of all is that this has disappointed my client and made me look bad. I pride myself on always maintaining a professional relationship, but when a subcontractor drops the ball, that makes me drop the ball and ruins my own reputation. This is why I no longer (with the exception of one subcontractor) give out or manage work for others. If I can’t take on the project, I completely pass it on to another developer for the client to deal directly with them, instead of having me in the middle. This of course, means that a lot of people have missed out on potential work.
This is exactly why it’s hard to find great clients. I can now emphasize with every client who comes to me telling me about how they were screwed over by their previous developer. It just gives the industry as a whole a bad name.