Consider this the continuation of my post on management for idiots. Here's the dirt on that big hairy rush project I got sucked into.
Synopsis: Busted my ass on a project that got ran into the ground by people who showed no interest in anything but running the project into the ground, and now they're on the hunt for replacement yes-men, and yes-men on these projects almost always write contracts with tons of fine print and use VBA, and now I'm trashing them on my blog.
Someone I do work for got a side project and essentially passed it to me but took on a project management role -- the project was a new site for a major (the major, actually) comedy club chain. We had six weeks until some co-branded launch with MySpace -- April 1 was d-day. With six weeks to go, we argued furiously about specifications for two weeks. They tried repeatedly to sneak one more thing in. They tried every trick in the book to get us to commit to one more thing, then one more thing. Before I got ahold of the project, the guy I was working for/with was essnetially taking notes on what they wanted, and it read like a dot-com special. This set the tone for the rest of the project. They wanted user accounts, bulletin boards, movie files that automatically play on every page, photo galleries, a TV channel room (what?!), and a pile of other similarly innane things. We kept telling them that we needed everyone to comprimise, put their personal pet features aside, deal with each other in figuring out what the real priorities where, reach their own concensus, and then report back to us. This never did happen, not a month later, and six weeks later (8 weeks in) as I write this. At every point, each person involved in the project was extremely unhappy for some reason, and in some sort of co-dependant mutual ass-kissing, they all assured each other that they really deserve their features and should get them. This is design-by-committee in its ugliest form.
In three furious weeks, Perl was written to do everything in the specs we finally agreed to: maintain location, artist, event, news story, and media file records. The site scrapes Symfonee to re-badge the checkout process, and makes it a matter of two clicks then billing info entry rather than *16* screens at Symfonee, including multiple confirmation requests, and a lot of picking out magic values. I guess this is the style now for ASP applications, but rather than having numeric and textual values that are human readable and directly relate to real-world events and objects, everything is compressed, encoded, and singed into an opaque string. To figure out what the correct opaque string is for any given artist/night/time/dining options/seating section/etc, you had to hit a lot of screens. They wanted a search, of course, and that they got, though the version up there isn't the final one -- it's a stop-gap until the sistring implementation was finished. Of course, like everything, it's highly customized. Rich-text style editors were put up in the extensive admin suite for a half dozen different things, including location descriptions, artist bios, etc. Static pages are published out for five or six kinds of dynamic record. Events are "touted", or featured, on the main page and on location pages, by an admin. Each location has its own login that restricts which events it can edit and feature and where. Each type of information is displayed a dozen different ways. The touts automatically rotate according to some rules. Each artist has their own photo gallery (so to speak), video gallery, list of events, etc. I'm just scratching the surface here, touching on some of the major features.
So, with a week to go until d-day, everything basically works that we agreed to, except a few things. And then we get the graphic design. The client hired an outside designer and handed them our specs, with a few emblishments. The designer added a pile more. And the design we got... was a foot that didn't fit the shoe. Miniscule numbers of pixels were allocated to text, but scrollbars were found completely objectionable. The admin wasn't set up to seperate out synopsis from the full text of any article, and they hadn't been entering any data anyway. We, completely beyond the proposal, were doing a lot of what little data entry was done, besides mass importing old images and such. Rather than artists being featured on location pages and the main page, they were featured on nearly every page on the site, so the admin that features things will have to be completely redone and generalized. Rather than one page per artist, there are five. And the designs are extremely image intensive and required cut-up -- we were planning on doing something with CSS that scaled and was simple and tasteful in its simplicity, at least for the deadline. The design called for large amounts of JavaScript -- rollovers all over the place, different in different screens, and the photo gallery had prev/next buttons and pulled up the bio for each artist it showed.
And here's the wild thing -- we did most of that stuff, or at least made it half way work for April 1.
And they didn't launch it.
And it was all our fault.
For the next week, we dilligently worked away to adding more reports to satisfy what the designer saw for various pages, and did cutups for pages that weren't in the original design, and nailed everything down to pixel accuracy, and tried to make all of the fonts fit but not be too small (settling on 9px), fixed problems. There were about 14 different cut-ups, each different. When we started doing the image cut-ups, we had two pages to look at, and naturally assumed that all of the pages would look like one of the two. Wrong. We got scrollbars stuck on so text didn't mess up the surrounding page, and then took them back out again because they hated scroll bars. A week after the deadline, it doesn't look perfect yet, but all of the features and pages for the art that had been trickling in for were online and working, in some fashion or another. It looked pretty good, I thought. The images weren't pulling apart, and it was working in the various popular browsers.
But every day, we're bitched at and grilled -- and it's rapidly becoming apparent that nothing we do will make them happy. So a decision is made to make an all-out effort to manage client expectations. We put together a todo list with nearly 100 fiddly things on it, and attach reasonable time values to each -- 8 hours, 4 hours, 16 hours, etc -- to demonstrate the scope creep introduced by the graphic artist, who has no w hijacked the entire project and sabotaged any chance of success by lobbing the goal way off in the netherreaches. Hoping they'll chill the hell out, work with us on a comprimised version, we wait. And wait. Days later, the poeople that hound us every day finally get back to us. They want us to "just make it work". Is that so hard? You mean, do everything that everyone wants, and then do everything in conjunction with those that they realize they want, and then do everything in conjunction with all of that that they realize they want, repeat an infinite number of times, and have it to you by tomorrow? Oh, sure, no problem. Do you mind pre-paying for that infinite number of hours of work we're going to have to you at 8am? We reply essentially saying "No, we can't in fact do all of this in any reasonable time frame. As per the quote for the revised project, the time frame is two months. We need to work on a scaled down version. If you think you can find someone capable of doing this work in this time frame, you should start looking now.".
And sure enough, they start looking. We're essentially fired. They're going to find someone who will tell them that the impossible can be done. Fantastic levels of productivity isn't enough -- they're special, they demand the impossible. So, of course, they're going to hook up with someone willing to lie. Some sales person is going to rope them into using a shop that uses ASP. I've seen it happen before enough times to call in a prediction here. I'd predict PHP except they're not looking for developers, they're looking for shops, and not just shops, shop's sales departments.
The funny thing was we almost handled the project by having someone do a plugin for Mambo (we don't do PHP, sorry) and dressing up the existing site a bit. We should have. And they really wanted originally was to have featured artists and events automatically rotate. Oh yeah, not only are artists are featured, but so are events, mixed together. And the graphic artist made these banners rather than just thumbnails and text of the artist/event. Fine, but not fine for the deadline.
So, apparently, the graphic designer that hijacked the project has been trashing us to the client, trying to get us fired, and has basically managed. Since this whole thing was done as a favor for a friend, and me doing a favor for that friend to help him do a favor for a friend, that's really lame. On the conference call, she talks about her willingness to comprimise, and redo designs, and manage the project correctly, and so on and so forth, but email to her goes unreturned, or if it's something suggesting we need help from her in any way shape or form, presented to the client as evidence as our incompatence. Backstabbing bitch.
So, anyway, 8 weeks later, 3 of them spent doing nothing but arguing, there's a rather nice site that they probably aren't going to pay for, and are probably going to have redone from scratch in ASP/VBA.
Another way to break the whole situation down is that they never trusted us in the first place to make decisions, judgement calls, or comprimises, and they wouldn't accept that a short deadline required comprimises at all. In short, we had no credability with them. Probably because they were just so damn greedy. They wouldn't accept anything but a fairy tale because their black little hearts didn't consider the world worth living in unless they got every pony they asked their daddy for.
Yet another project I can't put on my resume... you'll notice I only have small companies. Well, that's because larger, impressive sounding things always pull some crap. Small ones only do about 4/5ths of the time.
-scott