New technology is always an interesting thing, at least to me. It doesn’t matter if it is SQL Server related or not, I tend to be fascinated by the changes that occur daily in technology. The last decade though, the changes have been coming faster than it is possible for any normal person to keep up with. Some of the changes made have been great for convenience like the implementation of the Check Card, which has made it so that you can survive in America without having to carry cash around. The motivation for this blog post was a set of comments made on Twitter over the weekend by Brent Ozar (Blog/Twitter) and Aaron Alton(Blog/Twitter).
@BrentO:The four most dreaded words in retail checkout lines: "I need a manager."
@AaronTheHobt: @BrentO How about "do you accept checks?"
This really stood out to me because every time because my mother in law tends to be the person writing the check which these days, by comparison to other payment methods, is really good at slowing down the line. My wife always comments about this when they are shopping together, much to the humor of the poor cashier who has to actually process the check. Some stores have automatic check printing to help speed up the process, and most use a service like CheckFree to process the check immediately as if it were a check card anyway. It’s not that my mother in law doesn’t have a check/debit card, she just doesn’t opt to use it.
Other advances in technology that have come around to provide convenience have been things like the self checkout that you can find in most major retailers. I personally am a big fan of the self-checkout, and make use of them all the time. However, a problem with most self checkouts is a lack of understanding by the average shopper for how to appropriately use them. This very often leads to a slow down of the overall process while the machine works as designed to prevent loss for the store. Ever been behind someone who couldn’t figure out how to make the machine stop say “Item removed from bagging area”?
So what does this have to do with SQL Server and development? Actually a lot more than might be apparent at the surface. I see a lot of old coders that continue to use older paradigms in code when a newer more modern one is available to handle the work. I also find a lot of people that jump into a newer technology only to slow things down because they don’t fully understand how to properly use the new technology, which isn’t necessarily a problem at all times, but there certainly can be a problem in the correct scenario. There is a fine line between a delay for learning and continuously causing delays because you lack the abilities to handle a specific new technology. The same mother in law who won’t use a check card also won’t use self checkouts in most cases either. It takes more time for her versus waiting in line at a normal register.
A lot of us do things because that is what we are comfortable with. However, it is necessary to step outside of our comfort zones and at least give a newer technology a chance to see if it will in fact improve our productivity. Take for example Powershell, which has been around a bit of time now, but has been somewhat slow with adoption. It is a part of SQL Server 2008 natively and as people begin migrating, it is slowly taking more of a foothold in the scripting tasks that DBA’s constantly do. However there are a lot of DBA’s, myself included that have so much code invested in VBScript and batch files for automation that making the switch to Powershell is a task of its own. I caught myself recently editing an existing VBScript to accomplish a new task on a 2008 server simply because it was convenient and I was comfortable with it. While I accomplished the end result, I also gave up on an opportunity to learn something new.
So where does the trade off between completing a task fast, and learning a new skill occur exactly? I’d say it depends on the scenario. Some things lend themselves to spending a little more time learning something new, like my recent experience (and yes I went back and figured out how to do it with Powershell after the fact). However, there are scenarios where solving the problem immediately using current knowledge is more important. The balance comes in knowing the difference and then being able to make a note to come back and update the technology to current standards. This being the case, I am currently working on updating my code base where appropriate to leverage Powershell, or other appropriate technologies like Policy Based Management to accomplish common tasks in an automated manner with SQL Server.