I had lunch with my good friend Allen White (blog | twitter) on Thursday and he was picking my brain about a project I’m working on (I’ll be blogging about it in the weeks to come), and it made me think about how important it is to have a lab environment. It also made me think about a blog post that my boss Matt shared with me about Facebook’s culture of “The Hacker Way”.
At Facebook, they value proofs-of-concept and evidence that something will work over a person’s clout or lengthy talks about a subject. I can really respect that. I work at a small company where time and resource are limited. EXTREMELY limited. We make decisions quickly and we need to move on them even quicker. If we don’t, we’ll become stagnant, and for a company to become stagnant is to be left in the dust.
Don’t get me wrong, I’ve had plenty of lengthy and in-depth discussions about various things I’ve worked on, but at some point you have to get your hands dirty and go from an idea in your head to an actual working solution. Besides, if you can actually show that something will work, it carries much more weight than if you only prove it in theory. For example, you could talk until you’re blue in the face trying to convince me that shrinking a database isn’t a horrible thing that kills a kitten* every time you do it, but until you can come to me with actual evidence of a time where you did it, bad things didn’t happen (like fragmentation or corruption), and the kittens are still alive and meowing, I’m not likely to believe you.
This is where having a lab is key. It allows me as a developer & DBA to go from having a couple nebulous ideas in my head to an actual working prototype, while messing up and making mistakes along the way. Mistakes are a part of learning and a part of life. I’ll never get everything I do right on the first try, and that’s OK. After all, I AM human (contrary to popular belief). In fact, it’s more than OK. The more mistakes I make and have to fix, the better I’ll learn whatever it is I’m working on. Having a lab environment allows me to do that, while keeping those rapid changes and mistakes away from my actual development, testing, and production environments. As a bonus, once I have done my proof-of-concept and received the go-ahead to build the real thing, I can take what I did in my lab, bring it over to my development environment, and continue on my way to making the final solution instead of starting over from scratch.
Having a lab also allows me to be creative, since I know it’s safe to try anything I want. ANYTHING! (insert evil laugh here) It doesn’t matter how crazy the idea sounds. The important thing is how crazy the idea actually is to implement and whether it works or not. Often times something sounds crazy enough that it just might, and having a lab environment lets me show that to be true. Or not. My ideas don’t always work out, but since I built them in a lab, it’s no big deal if they break or go horribly, horribly wrong. Hey, at least I found out in my lab, at scale, instead of in production with our business on the line.
Another great aspect of having a lab and working “The Hacker Way” is that I can learn about things that I’ve never used before or that I might never get to use in my regular work. This can be great for studying to get a certification or for learning about new product features. For example, the project I’m working on now involves SQL Server Service Broker and can sit on top of SQL Server 2012’s AlwaysOn Availability Groups. I’ve never used either of those features before. Heck, I never actually thought I would use them. But having a lab environment empowered me to not only consider them as a possible solution, but to learn about them and eventually prove that they would work for us. That wouldn’t have happened without my lab.
With SQL Server 2012 due to launch on 3/7/12, my lab has also been a powerful learning tool for me to gear-up for my MCITP DBA upgrade exams and to get ready to eventually upgrade our servers at work. Sure, I probably could learn about SQL Server 2012 and study for my exams with books and simulators, but having a lab with several instances up and running is a much more powerful way to learn about it and gain practical, hands-on experience with it.
So, if there is one thing I’d like you to take away from this post, it’s that you need to get a lab. It’s critical! Not only to you and your knowledge, skills, and career, but to your company as well. I was able to convince my boss to get me a Dell R410 to use as a Hyper-V host for my lab, and I couldn’t be happier. We lease it, and it’s really not very expensive at all, especially when you look at all of the benefits we’re getting out of just a single piece of hardware.
*Disclaimer: No kittens were harmed in the making of this blog post. Please help control the pet population and have your pet spayed or neutered. Rescue animals can make wonderful pets, please support your local animal shelter and adopt your next pet.