My first outsourcing disaster

It’s been slightly over 3 weeks since I first posted my first outsourcing project. (Find out more about my experience with Elance, the initial outsourcing site I chose). The project was to create a custom WordPress theme for this blog. And I’ve just received the deliverables from my service provider.

It. Was. Terrible.

Actually, it was more than terrible. It was disasterrific. Before I go into all the gory details of how I was mentally mutilated due to the horrific nature of the deliverable, let me give you more details of my encounter with the service provider.

First, I was given 3 samples. My gut feeling told me immediately the most appealing one. Then I said that one had a partial outdoorsy header background, which doesn’t suit this programming blog.

So that background part was changed to a sinusoidal wave, with a diminishing amplitude from left to right. Well that won’t do, since it seemed to insinuate the gradual downfall of my blog.

So I asked them to change it back, but the colour theme was a bit discordant. I said there seemed “too many” colours, that I read from web design material that 3 main colours is enough.

The next sample had a practically monochromatic look. I sighed. Giving the header picture some more thought, the female face in the image seemed to stand out. As much as I love looking at Caucasian females, her face seemed out of sync with this blog. So I asked them to take her out (pain, pain) and replace her with something else.

I got a small girl and some math formula drawn in chalk. This is a respectable and professional programming blog site! Whilst cute, the little girl eroded the programming aura on the site. My patience wearing thin at this point, I asked them to put in some C# code instead. That should be more appropriate, and I thought I should really start giving more concrete instructions (more so than before).

It was fine actually. I also thought I’d like to change some code text in the image. I asked them to change the namespace name from “TotallyUnnecessaryNamespace” to “TotallyCoolNamespace”. At this point, I felt the faintest hint of irritation from the service provider get a bit stronger.

The code text was changed alright. If you’re at all familiar with programming, you’ll know the natural fonts to work in are the fixed width fonts, the popular one being Courier New. The changed code text, was written in some sans serif font. Oh my goodness! How can I present myself as a competent programmer if I don’t even have matching code fonts!

I asked them to make changes again, and suggested perhaps using Notepad so that matching fonts and correct aligning was almost guaranteed. The next sample came back, with a code line missing a semicolon!! That [insert appropriate expletive] line won’t even compile! Ok, I’m starting to lose my cool here…

The deadline was looming, and the service provider’s already gone ahead with setting the theme up on their test server. I decided to stop this tennis-balling of changes, and told them it’s fine, and I’ll wait for the test blog site to be up.

When it was up, I went to take a look. I peeked at the HTML source code, since I specifically asked for CSS driven layout. I thought that was understood to be layouts without using tables. Apparently, my specification was taken to mean using CSS to control just colours, widths but not with divs. Unbelievable.

It was kind of late in the project timeline, and they offered me two options, either they refund my initial payment (of US$150) or I give them 7 more days to rewrite everything using CSS the way I wanted. I’m this far in. I might as well go all the way. Oh for the love of all that’s good and pure! Fine, I gave them 7 more days.

They surprised me. Just 2 days later, they told me to go to the test site and take a look. I went, and naturally looked at the HTML source code again. I scrolled up and down, and while the div tags weren’t how I envisioned, they seemed to do the trick. Then I scrolled to the end of the HTML source. Behind the html end tag, there was a script tag, doing document.write() of a series of integers.

I didn’t know what it wrote, but I surmised it’s probably a series of ASCII characters. So I wrote a small program to print out the ASCII characters. It was a script tag with a reference to a Javascript script file on an unknown site. I Googled the site. It was banned!

Imagine my horror! Then a panic wave crashed over me. I quickly closed my browser, shut everything down, fired up my antivirus program and ran a search through my computer. Then I got up from my computer and started to swear sulphurously.

After I exhausted my list of curse words (which isn’t a lot), I inhaled a deep breath, took a long draught of cool clear water and waited for my incensed feelings to soothe. By the time the antivirus program finished, I was calm enough to compose a terse but direct message to the service provider asking for the existential reason of the malignant script.

The next day, I got a reply that they had no idea how the script got there and they’re rectifying it. My instincts told me that my constant changes had miffed them to the point that poorly thought out layout samples and irresponsible scripts started creeping in.

Finally, the theme looked fine, the HTML source checked out and I sent the service provider their final payment of US$150.

And I waited tensely for the deliverable to arrive. After that long and arduous journey, the end was finally near. What I expected was something similar to free themes you’d get from the WordPress theme viewer. Zip file containing a few PHP files, an accompanying CSS file, maybe a screenshot picture, and an image folder with the images used.

When I downloaded the zip file, I immediately subjected it to an antivirus scan. Twice. That baleful script tag episode made me paranoid. It was also surprisingly huge in size. The free themes I downloaded were maybe 65 kilobytes. I thought this would be similar.

Man, was I wrong!

They sent me the entire default WordPress directory compressed into an 800+ megabyte behemoth. Complete with index1.php, index2.php and other temporary working files. The CSS file had misspellings such as pannels, serch_text and catagory. Inconsistent use of hyphens and underscores were used in names.

I felt like I was put through a dozen Worse Than Failure‘s all at one go. My eyes hurt. My brain froze. My heart palpitated. My fingers curled into claws. I wanted to wail and cry about the inanity of it all. My mind screamed “Why is this [insert favourite expletive] happening!” and “What in [insert your desired higher being]’s name is going on?”.

Granted, the instructions were to unzip everything and FTP everything into my server. They were trying to be helpful, so I’m hands-off, treating me like any non-technical buyer. Well, I’m a programmer. I’ve got to know what goes into my server.

So I looked deeper. After scanning the unzipped files and folders of course. Image URLs are hardcoded to the test site. What!? What if they shut down the test site? Then I thought harder. Maybe they’re helping me save my bandwidth by hosting some of the images off my site. Then I thought harder still. What if they’re using me as part of a traffic referral plot? The audacity! The nerve!!

In the half hour since I opened that zip file, I felt anger, surprise, disappointment, humour, hand-on-the-face resignation, jaw-dropping shock, white-hot irritation, soggy cold depression (alright I’m running out of adjectives, somebody help me here…)

This project cost me US$300, an amount bid by the service provider. I just wanted a simple, clean and maybe artful design. I thought that amount was maybe low, but should still secure me something reasonable. Wrong, wrong, wrong! I got slapped with a dose of reality. You get what you pay for.

I should’ve done this myself.