One of my many hobbies is food—cooking, eating and preparing it are some of my favorite ways to relax and wind down. I’ve taken this way too far at times, and while I would never call myself a chef (that term is reserved for leaders of teams of cooks), I’m not a bad cook. One of the more adventurous meals I’ve ever cooked was this New Year’s—we had a total of 6 people, who were all really into food, and I prepared a really great four course meal featuring foie gras, squab, lobster, and about 356 plates that needed to be washed.
Recently, I was the event organizer for SQL Saturday #121, in Philadelphia. In a moment of hubris, or perhaps drunkenness, I decided that we should have the after party at our house. So this wouldn’t be cooking for 6—it would be cooking for 20-40 people, who had varying tastes and interests, and the best part is I would be arriving at the same time as the guests. So I needed to do almost all of the preparations in advance, so that my wife (my co-worker) wasn’t pulling her hair out trying to get ready. At the same time, I take a lot of pride in my cooking, and didn’t want to just serve crap that I got from the grocery store.
So, how does this relate to us as database professionals? Think of that New Year’s Eve dinner as a mission critical database, which you are 100% in control of. I managed all the ingredients (the queries), the plates (the hardware), and the cooking (the tuning). I had a limited audience, so I could give them 100% of my focus—I cooked for 3-4 days for that meal. Much like you might spend 100% of you time on that one mission critical application. When it came time for me to serve the meal (go live) I had a super detailed checklist of what went on each plate, and what needed to be reheated and when. I even thought out the courses—in effort to minimize the amount of work I would need to put into each one. (optimization, scripting). After all, I wanted to be able to enjoy the meal, too. (Leave early)
Planning for a big crowd is a lot different—especially when they aren’t your sole responsibility. Imagine going from managing one application, to managing all of the databases for a business unit. You can’t spend all of your time optimizing one thing (making the fantastic squab reduction that takes 6 hrs). Yet, as a professional you still have a lot of pride in your work, so you want to deliver. (good food). Where do you make the decisions to compromise?
The first thing I did was outsourced dessert (You rock Erin!) and bread—I’m not a great pastry cook or baker, and both of these items are labor intensive and messy. (Think of them as tier 1 support). This was an easy decision from me—dessert is probably my weakest point as a cook, and as a professional you need to know when to bring in outside expertise.
I knew people would be hungry and thirsty when they arrived, so instead of doing something labor intensive like cocktails, we had cava and a keg (Yards Saison—yummy) ready to go. Also, instead of fancy hors d’oeuvres or caviar (sorry guys—I had a budget), we had hummus, olives, baba ghanouj and great cheese. (there was an Époisses) All of these were easily prepared well in advance (scripted) and just needed to be put in a bowl or on a plate. (clicked and run).
For the mains I made pork shoulder—this could be done a day or two in advance, and reheated (again—like for any major DB project if you can do the hard stuff in advance do it)—it also has a large margin for error (easy to rollback from), and is really great picnic food. I made a wide variety of sauces—a couple from Momofuku, and a more traditional BBQ sauce. K made potato salad which has bacon, and I knew we had a couple of vegetarian guests (Developers) so we made another chickpea salad, and cool mushrooms (no, not those mushrooms) when they arrived. Amazingly, after a long day, everything went wonderful, and we had a really great party.
So where am I going with all of this? When you are dealing with a large number of applications (or guests), you can’t afford the time and budget that you can when you are working with a much more limited set, with less diverse requirements. Also, PLAN, PLAN, PLAN, and then execute. Chefs use lots of checklists—I know I did for both of the parties mentioned above, DBAs should use checklists and scripts. You won’t forget it if it’s done in advance.