Today was not my best day. For several weeks I've been working on some significant changes to a large and heavily used member site for the company that I work for. I added a new responsive layout, a cleaner and sharper UI, integrated a new web service, rethought the main landing page with more useful information, and made it much easier for the user to update some key information.
It was time to demo the new updates to several interested people in the company including our CTO, another C-level executive, the directors of five different divisions, and the team leads of our customer service department.
I've had the code ready to go since early in the week, just waiting for the big meeting on Thursday to demo the changes, gather feedback, etc. I was well planned for the presentation, I had my notes, my key points, I knew what I wanted to say. I like being well prepared for a demo or presentation.
It really bugs me when someone isn't well prepared for a meeting, demo, user meet-up talk, or conference talk. It's frustrating to watch someone fumble around with the concepts they are trying to convey because they didn't prepare and are trying to wing it. Don't do that, have some respect for the people that are hoping to get something out of the talk. I make a conscious effort to be well prepared.
When I arrived at work this morning, I double-checked the new site on a development server, everything worked fine. I ran through my presentation one last time. I set the site aside, so to speak, and worked on a few other things until the meeting at 3. At about 2:30, I went into the conference room to login and bring up the site. It came up with just a blank white screen. What?! This just worked a couple of hours ago, and for weeks before that, and I haven't changed anything.
Now I have about 25 minutes until the meeting, and am frantically trying to figure out what is going on. I restart the server, clear the cache, nothing. I rollback to code that worked earlier in the week, nothing. I try a different server, nothing.
At 5 minutes till, it's clear that I'm not going to figure out the issue in time. So, I had the miserable experience of letting everyone file into the conference room, then have to tell them, "Sorry, the site is broken right now. I don't know why. Sorry to waste your time, I have nothing to show you".
In the end it turned out that a test deploy had gone out about 90 minutes before my demo from a different team, different platform, unrelated project, and failed. The problem was that the failure removed or corrupted some database objects that my site relied on. There wasn't any indication that a problem had happened until I tried to bring up the site for my demo.
I'm trying to think about what I could have done differently. I could have gone to the conference room an hour early instead of thirty minutes. Thirty minutes seemed like plenty of time to login and bring up a webpage. Even if I had logged in with more time, say an hour, I wouldn't have had a fix by the time of the meeting. It took us a good hour and a half to track down the issue, it wasn't all that obvious.
I think the lesson is to double-check your demo with enough time to, at the very least, cancel the meeting, but not too far ahead of time. Had I tried an hour ahead of time, I would of at least been able to try the most obvious steps to fix the site, which I wouldn't have succeeded in, but I could have then at least canceled the meeting more than 5 minutes ahead of time.
Getting everything working hours ahead of time came back to bite me. There was too much time for something to break in between, especially in a development environment with multiple teams.
Next time, I'll make sure everything is running first thing in the morning, and again an hour ahead of time. Then probably about every two minutes leading up to the demo!
Sometimes you just flat out fail.