Lessons in Leadership from the Trail

Lead From the Front

Take charge and explain where you are going with detailed instructions on how to handle likely situations. In doing so you appear open and willing to communicate, considerate of the task at hand, and confident – a leader!

Pack Extra Water

Part of leading the group involves retrospection over our own experiences in order to help the group avoid mistakes. Staples like water can be easily overlooked by someone who has only ever gotten it from the tap or plastic bottle. Sometimes different backgrounds can yield completely tangential perspectives.

Look Back and Fall Back

Sometimes being the leader means we actually are the strongest, fastest, or best suited. From my experience, a good way to approach this is to consider that I have been given an ability not only so that I can finish first, but also to share the experience with others. By taking time to look back and offer a hand I get to actively help the whole group have a better hike.

Let Your Followers Follow

Conversely to the previous point, if I spend the whole hike looking back and helping everyone we won’t get anywhere! There is a balance, of course, but part of why people hike is to overcome obstacles themselves and gain a sense of achievement.

Things That Matter That I Learned From Video Games

Lately (edit: not so lately… my son is on his way to five already! [!!!]) my three year old son has taken to playing video games. Watching him get excited about the “bawk bawk” of Mario’s fireballs brings back fond memories of my own childhood. I can still remember being 5 and begging and pleading with my mom in Kmart to get me my very own Nintendo Entertainment System with 3-games-in-one-controllers-IR-gun-and-runningpad-included-OMG-BBQ! I try to superimpose the rabid lust Nintendo 64 kid has in the popular YouTube video, but I think there was something more pure about my days as a child gamer. I recall a sense of ushering in a revolution in our lives, as though somehow life could not possibly be the same post-NES.

Video games were less common, and thus to some less a threat in those days. Here are some observations about them I believe directly relate to my successes in life:

They taught me patience, passion in perseverance, and reward.

Without endless hours of leveling up characters, trekking to the far reaches of the world map, and saving up to buy the ultimate weapon the satisfaction of a job well done could not have been more soundly earned. All the while meticulously combing hidden places for interesting trinkets of the virtual world. It wasn’t that I spent hours on end to get minimal gains – it was that I really really enjoyed sifting through the details of the world. Work life is a lot like the “grind” – it isn’t beating the boss or getting to the plot twist, but there’s a passionate perseverance that makes the days fly. Many of my coworkers seem to have let the grind get to them instead of taking the mundane by the horns. I’ve found that with a little imagination and asking the right questions to the right people can stir the same passions as games instilled within me!

They taught me how to lose gracefully, put others first, lead and follow.

Social gaming teaches putting value in the experience of the group over the experience of the self. As a corollary, group experiences teach us patience with each others flaws, the chance to learn from those more adept, and to generally be a good sport.

They were a valid, important, and unique creative inlet.

My childhood was directed toward the arts and literature at almost every turn. I have many fond memories of dressing up for the Symphony, which lead to my own pursuit of music. I spent more hours reading than most any other activity (aside for gaming, perhaps!) and the thrill of being transported into a new world never got old. Video games were truly an interactive multimedia experience to me, filled with the same emotions drawn out by the soundtrack and artistry as a symphony or art gallery provided. Many daydreams were just as grand and majestic with video games as from the stories I would create while attending symphonies or delving into classic novels.


Games today as a whole are different – an industry has evolved around them to mass-produce and insulate investors from risk. Every seasoned gamer and paying customer approaches a new game with expectations built upon hours of prior experiences. The games are changed by that, a-priori. My hope is that there will always be a way for true innovators to work their craft in the medium of video games as I grew up with. Not for myself so much, but so my son can live out the same spirit of adventure, challenge, and fun that I had in virtual worlds that truly have no limits!

Config: Configuration

This release cycle is in full tilt and I’m busy working on tightening up some of the superfluous aspects of our code promotion processes. We’ve settled in on building the configuration scheme around SSIS’ indirect XML configuration file, which we expose to SSIS via an environment variable. The environment variable simply passes the dtsConfig location on disk to the SSIS package, rather than having you explicitly provide the dtsConfig location. Once the package pulls in the config file at runtime, the individual nodes of the XML formatted dtsConfig can be assigned to package variables and then used in expressions. Here’s what the screen looks like in SSIS for both a direct and indirect XML configuration:

SSIS XML Configuration – SSIS_CONFIG holds the location of the dtsConfig file.

The XML-based dtsConfig file has worked really well, allowing us to provide a single point of setup configuration for each environment to the SA’s that hold the keys to the installation. Our process goes like this: remote development zone -> remote final deployment zone -> test zone -> production (hands off). We try to keep everything from all dev’s merged into the initial development zone in order to create a single flow of artifacts through each deployment. We take the following actions to configure each zone:

  • Create the XML environment variable indicating where the dtsConfig is located.
  • Configure the dtsConfig with server names, flat file locations, SharePoint URLs, etc.

That’s it! From these two simple steps in each zone, we are able to pass the environment specific values from the dtsConfig to our deployment AND unit test files. PowerShell plays really well with reading and writing XML – so well we use them to log checkpoints to an XML config during the deployment process. In addition, we use the XML object to reconfigure our unit tests when they are initiated at each environment – again based on the dtsConfig values!

Sonam Rastogi has a handy write up of how to use the XML object with PowerShell: http://blogs.msdn.com/b/sonam_rastogi_blogs/archive/2014/05/14/update-xml-file-using-powershell.aspx

I won’t go into our specific details of our code, but will simply rave about how well the indirect configs have worked for our completely disconnected environments. Add in PowerShell’s easy to use XML object and you can quickly automate the deployment and testing of your own database solutions.