I used to know a lot of software developers. Now I know a lot of web developers.
Having just completed a new website project for the dayjob, I can say that the breeds are similar. If you are offended by this, oh well.
There is a (famous?) comic/web comic out there detailing how a website project can quickly become a hellish torture – I don’t have the link with me right now. And having done projects myself, I totally get that comic, but thought it would be nice to do SOMETHING from the perspective of the client – which I have also been several times. Hence this post.
My (sort of) joke goes like this: Hire a software developer to design a piece of software that counts from 1 to 10. Said developer will deliver a program that flashes a 1, and then a 10, on your screen. You will then ask, “But what about 2, 3, 4, 5, 6, 7, 8, and 9?” and they will reply, in all seriousness, “You didn’t ask for 2, 3, 4, 5, 6, 7, 8, and 9!”
Now, you are the client from hell. Because you assumed 2, 3, 4, 5, 6, 7, 8, and 9 were steps between 1 and 10 without actually saying that you needed them in your request.
Assuming anything in a development project is bad, m-kay? Even something you think of as ‘common sense’ has to be laid out, in detail, and reiterated often.
In the case of my most recent development adventure, I tried to learn from past mistakes. I created a detailed Word document containing everything we wanted and needed. I used that to find a developer. All of them were impressed with the document and used the information it contained to build their bids*. Which was awesome. We chose the one who seemed to be offering the best deal for the money. There was one element of our wishlist that seemed to be contentious with everyone except this company – they said they had it, they knew it, it wasn’t an issue.
We made a special trip to their office to verify this fact. They brought their lead developer into the room and we asked him point blank about the element. He said, “Yeah – it’s no problem. We have it figured out.”
So with that assurance in place, we signed the contract and made a down payment.
Two months later, they came to us and said that they did not, in fact, have it, that they couldn’t make it work at all the way they had assumed, and, oh by the way, the only way TO DO IT, would cost us two thousand dollars up front and outside the scope of the contract, and an additional five hundred dollars a month, recurring, to the developer of an extension – the only extension – that did what we wanted/needed. And what would we like to do?
Extremely unhappy, we decided to soldier on without our one major element we had stressed wanting so badly. In order to do that, to move on, surprise! They needed more money. According to the contract, they were supposed to get incremental payments each month as progress happened. But they spent a lot of time on the element they couldn’t get going and never bothered to do the monthly billing, so, in order to keep moving forward – they needed a decent chunk of change despite having made zero progress. We discussed it and decided to pay it so we could move forward. They promised us some extra stuff at the close of the project to help offset our unhappiness. Essentially, they wasted 2 months of time and hours we’d paid for, and we wanted something to show for that – hence the free stuff.
Now – I want to let you know that the contract specified a dollar amount for the project. Nowhere does it state ‘hours’. This will come back to haunt us later.
In the weeks and months that followed, we learned that our project manager had no experience with the ecommerce software the developer was using, that he was brand new with the company, that he never read the document I provided them in the beginning, that he was completely unaware that we had a blog, or that they had agreed in the contract to create a theme for both the website and the blog, so they would look the same – the list goes on and on.
We were asked to setup a new webhost at the beginning of the project, one that could host the ecommerce software and where we could setup a development environment. We did that. The developer didn’t set anything up on it for several months, which meant we were paying double hosting – our old host (which couldn’t support the new software) and the new host.
The developer, sensing our displeasure, sent us a link to a development website and said it was ‘ready to go’ and wanted us to take a look at it and tell them what we thought.
We thought it was crap. Nothing was the way we wanted it. Things weren’t working. Extra stuff we’d asked, and paid for, wasn’t part of it. We went through it with a fine tooth comb and provided detailed feedback.
The developer replied that we had misunderstood and that it wasn’t really ready for primetime yet.
We kept making forward progress though – it was a website. It just needed… stuff. Our stuff. The stuff we wanted. The stuff we’d asked for. I kept reminded the developer of this.
They came back with how they needed more money. They already had more than half the contracted amount. We paid a little more because now we felt like we were being held hostage. No work would be done until they got a payment.
I just about lost it and was encouraged, strongly, not to talk with the developer while pissed off.
This is when I also found out that our project manager had no idea we had an existing WordPress blog, or that they were supposed to be doing anything with it. He tried to say that any blog work was ‘outside the scope’ of our contract, forcing me to be that guy who pulls out the contract and says, “Well, on page blah blah blah it states you will do your god damned job…”
I was strongly encouraged not to speak to the project manager while pissed off.
Said project manager sent us another ‘the website is ready to go!’ email. It wasn’t. We sent back notes – there were tons of things that weren’t working. We had to buy extensions to do things because, despite laying out what we wanted way back when in that Word Doc, it turns out the software couldn’t do this, or that, or the other thing. So buy this extension, and that one, and oh – it’s not covered in the scope of the contract, and you have to pay more money now, and we need this…
“Hello, can we speak to…” essentially the Project Manager’s boss.
“I’m sorry, such n such is no longer with the company…”
A bunch of people had left this company in recent months. Quietly. In our original meeting, they had brought 4 people to the table to chat. Only 1, the project manager, was still there. Oy.
Everyday, I would come in and have my finger ‘on the trigger’. Which means, I was ready to pull their access to everything: server, software, ftp, etc., if it looked like they were going under.
Communication was done through gritted teeth. I usually let my company’s GM do all the talking because I had had it.
Then we get the call. “You’ve run out of hours…”
Um – what now?
The dollar amount included X hours, and they had burned through them (we believe on the element they ultimately didn’t know how to deploy). Mind you, the website was not live. It was not ready. You could not ‘check out’. When you created an account, the information you entered didn’t write to the database. It was supposed to be a responsive web design – it didn’t work. The blog was not setup. Products weren’t displaying correctly. Taxes were fucked up. There was a lot wrong with the site, but they were done until/unless we gave them more money.
It was a nightmare.
Agreement was reached (thanks to our GM), work moved forward. The developer wanted us gone and we felt the same way.
The site went live late last month. Nothing ever got done on the blog, so I did it myself.
The contract included training on how to navigate and work the admin area. “Oh, you’ve already had that training…” Um. No. No we haven’t. And what about those freebies you promised us after you fucked up? “*Crickets*”
Moral of the story?
Hell if I know.
*There was one company who sent me a questionnaire. That questionnaire contained questions answered in my document. I did a copy/paste, but was annoyed.