Just a refresh
The brief was two sentences long. The second one was “we’re happy with the site itself, we’d just like to refresh the look and feel.”
Five weeks past the date we’d given them, we handed over a new CMS, a content migration, a redirect map, and a refreshed look and feel.
Nobody was lying, including us. I’ve now watched that sentence turn into that project twice, and both times every person involved meant exactly what they said, right up until the week it fell over.
They’re describing their own site correctly
First, “just a refresh” isn’t a negotiating position, and it isn’t somebody angling for a rebuild at reskin prices. People mean it. More than that, they’re describing what they’re looking at accurately.
To a client, the site is the pages. The colors, the photography, the way the navigation sits, because that is 100% of what they have ever touched. The templates, the CMS version, how the content is stored, where it’s hosted, all of that is plumbing they have never had to think about, and the reason they’ve never had to think about it is that it was our job and we did it.
So when a request that sounds small is enormous underneath, the gap isn’t in their understanding of their own site. It’s in ours, about what we ever made visible to them.
Word brought its own fonts
The content is the first place it goes wrong, and it’s the one nobody opens before saying a number.
Four years of a WYSIWYG editor means a couple hundred pages whose body copy has the presentation baked into it. Here is a chunk of one of their services pages, tidied only in that I’ve indented it.
<p><span style="font-family: Verdana, Geneva, sans-serif; font-size: 11px; color: #4a4a4a;">
Serving the county since 1994. </span></p>
<table width="640" cellpadding="6" border="0">
<tr>
<td width="300" valign="top"><img src="/uploads/team.jpg" width="300"></td>
<td width="330" valign="top"><font size="2">Meet the team</font></td>
</tr>
</table>
(The <font> tag is not a typo, and it isn’t the oldest thing in that file either.)
None of that is visible while the design stays where it is, and it has been fine since 2012. The table is 640px wide because 640 was the content width in 2012, so the day the column gets wider or narrower is the day a layout table pushes a scrollbar across every phone in the state. The photo is 300px on the page and something closer to 2400px in the file, which is the hero image whose weight I never checked turning up on somebody else’s project.
So the redesign means touching the content, and touching the content means knowing what the content is, and now there’s a content audit in the project, which is a piece of work with its own budget and its own person. That wasn’t in the two sentences.
The theme is the application
The second one is that in a lot of these setups there’s no skin to swap.
The theme is where the logic lives. The file that draws the listing page also holds the query that decides what goes in the listing, and the pagination, and one hardcoded exception for a category that got renamed in 2014. Pulling the presentation out of it means rewriting the thing that fetches the data. You went in for a stylesheet and you’re in the database.
Nobody decided any of this
And the third one is that the requirements moved while the site sat still.
The 2012 site was built against a set of expectations that have quietly expired since. It has to be responsive now, and that argument ended in April of last year when Google made it a ranking signal in mobile search, which I wrote about last November. So it isn’t a design preference anymore. It should be on HTTPS, which as of last month is free and has no excuse left attached to it. It’s probably on PHP 5.3, which hasn’t had a security fix since 2014. The CMS is a major version behind, and the upgrade path there is a rebuild instead of a button.
Nobody decided any of that. It accumulated, quietly, in a box nobody had a reason to open, and a redesign is the only time anybody opens the box. So it all comes due in the same five weeks.
I gave a number for the part I could see
Where I went wrong on that project wasn’t the work.
The estimate came from me. Somebody asked in a meeting what the front end would take, I had the designs in front of me and the site in a tab, and I said a number out loud in about a minute because I wanted to be the person who could answer. I had not opened the CMS, read a template, counted the pages, or asked anybody what happens to the several hundred news posts from 2013. In March I didn’t think to open a style guide I’d built myself, so not consulting the thing that would have told me is well established by now.
So the number covered the part of the job that was on my screen, and the rest of it turned up in the third week. Which is a bad week for it to turn up, because by then the number isn’t ours anymore. It’s sitting in somebody’s budget with a name next to it, and it got there on my one minute of confidence.
It’s the same shape as the fifth of an estimate I once spent on IE8 that nobody had asked me for. The question that would have settled it was available both times, and both times I didn’t ask it, because asking looks a lot like not knowing.
Three estimates instead of one
One brief like it has come in since, and what I did differently was refuse to say anything at all until I’d spent a day inside the thing, and then give three numbers instead of one.
A reskin, in place. Colors, type, spacing, imagery, on the templates that already exist. Cheapest by a distance, fastest, and it comes with a written list of what it can’t fix, because the page structures are the constraint. If the templates can’t do the layout the designer drew, either the design moves or the price does.
New templates, same platform. The front end gets rebuilt, the content stays exactly where it is, the CMS stays on the version it’s on. This is the middle one, and my sense is it’s what most people actually want once somebody puts a name on it. It doesn’t fix the platform, and that sentence goes in the same paragraph as the number.
A rebuild. New platform, migrated content, redirects for every URL that changes, and a real decision about what doesn’t come across. Different order of money, and the only one of the three that fixes the thing underneath.
The point isn’t which one gets picked. It’s that “just a refresh” is a description of the first one, and until all three are written down the client is choosing between one thing and nothing while believing they’ve asked for the cheap one.
Somebody has to say which half
Migration is the biggest number on the third option and it’s the one that gets waved through in the meeting.
Several hundred pages sounds like a script. It is a script, for maybe 70% of them. The rest are the one with the embed nobody recognizes, the one where somebody built a two-column layout out of a table, and the one nobody remembers exists which is the top result for the company’s own name.
The genuinely hard part isn’t technical at all. Something like half of that content is dead and shouldn’t come across, the only people who can say which half are the client. They will not do it, because it’s tedious and it means saying out loud that a thing somebody wrote isn’t needed anymore. I’ve watched that stall a project for weeks. I put it in the schedule now as a task with a person’s name and a date on it, which helps about as much as you’d expect, but at least the delay is visible while it’s happening instead of afterward.
Alt text went the same way in February. The decisions that need somebody who knows the content best keep landing on whoever in the project knows it least, and then sitting there.
Not their job to know
I’m not proposing anybody stop saying “just a refresh.” It’s a perfectly good description of what they want, and it isn’t their job to know what’s sitting under it. That pile of decisions is exactly the sort of thing an agency exists to carry on somebody else’s behalf.
The failure is ours. It’s that we hear a sentence about appearance and answer it with a number, when the honest answer is that it might well be a refresh and finding out costs a couple days of somebody’s time. Two days is an awkward thing to ask for in front of a client who believes they’ve asked for something small. It’s also a lot cheaper than five weeks, and the one time I have managed to say it out loud, the conversation in the third week was about which of the three we were on.