Art of the DBA Rotating Header Image

Musings

We Are All Developers Now

Last year, I had a pretty intense conversation with a friend of mine at a SQL Saturday. It was one of those that started with the typical “grumble grumble grumble damn devs” statement. There was a time I would have echoed that with a hearty “harrumph harrumph”, but as I’ve progressed through my career, I’ve come to realize that the line between developers and DBAs has softened and blurred, particularly in the age of DevOps. What followed was a back and forth about the habits of DBAs and developers and lead me to a phrase I’ve added to my lexicon: “We’re all developers now”

I know, I know. What about the long standing division between righteous Operations folks (DBAs, sysadmins, network engineers, and their ilk) versus the .Net, Java, Node, and other heathens of the Developer world. These “barbarians” assail the fortresses of Operations with hastily written code that is not properly tested. This causes sleepless nights filled with pages  that a weary admin must respond to and resolve. Why would anyone in their right mind associate with these irresponsible practices?

Borrowing From Your Neighbor

The first step to answering this question is to step back and actually look at what happens in the developer world and compare it to what we do in administration. It’s a common practice to borrow code and practices from our peers in the SQL world, so why not do the same with those who develop other types of code? Especially those who develop code for a living (hint: consider the recursiveness of this statement).

As an administrator, I created all sorts of administrative scripts. Obviously I’ve got a reputation for PowerShell, but I also have T-SQL scripts that I use as well. For a while I would hack these together as any other good DBA and store them on a USB/Dropbox/Google Drive/OneDrive. It was functional, but I only ever had the current state of those scripts and didn’t always know why I changed things. I could put in a header, but this was tedious and manual, an anathema to how I work.

Enter my time at Xero. I hadn’t really used source control before and the teams there used it heavily. I got a rapid introduction to GitHub from Kent Chenery(@kentchenery) and Hannah Gray(@lerevedetoiles). It didn’t take long for me to realize the benefits of source control, not just for databases, but for my own personal scripts. Now I maintain my own personal GitHub repo and not only have a central location where my code is stored, but it can be shared with others who can contribute and collaborate.

Code, Rinse, Repeat

After adopting source control, I began to look at other developer practices and habits. While one can debate the pros and cons of Agile development, one of the concepts I like is iterative development. As with other work we do, iterative development isn’t rocket science, but it took me a while to adopt it because of a natural fear admins have: production paranoia (aka “what will this break”).

Admins of all stripes are in constant fear of breaking production, and for good reason. We want every change to be right and as close to perfect as possible. However, most folks who develop iteratively realize that perfect is a road block. It is hard to anticipate all the factors. When you develop iteratively, you ship what you can and fix/fail fast once you deploy it.

I’ve adopted this approach for my own script/process development. Whether I’m publishing a script or deploying a server, I focus on delivering a product. I test aggressively, but I’m prepared for the event that something will fail. I focus on the feedback loop to test, evaluate, remediate, and deploy. As an aside, this feedback loop is often where application developers will fail, because they are often driving towards the next set of improvements or features. It’s incumbent on both sides of the fence to adopt and enforce the feedback loop.

It’s All Just Ones and Zeroes

I could go on about habits I’ve adopted, but the real question is “why are developer practices important to administrators?” As we move into a realm of automation and scripting (as any good admin will), we are doing more and more code development. Sure, we can click through GUIs to setup SQL Server or run a backup, but the more experienced folks out there will have scripts to accomplish these tasks. Network and system admins are deploying infrastructure to the cloud using CloudDeploy or ARM templates. We live in an age where almost everything can be codified.

This codification means it is imperative that we focus on good habits for managing our code. It might be that we’re writing T-SQL code for SQL maintenance. Perhaps we’re writing shell scripts to execute code deploys or build a continuous integration pipeline. Suddenly we’re developers of a different stripe.

So what do you do about it? You probably haven’t implemented some of these habits and, likely, you might be a little mystified on how to get started. I suggest you start where I started: Go to a developer and talk to them. Maybe chat with a couple. Go to a local developer user group and see what they’re talking about. This is about learning, so find a mentor who can help you learn this topic.

And who knows? Maybe you can teach them a few things about your world while you’re at it.

Be Like Water

“You must be shapeless, formless, like water. When you pour water in a cup, it becomes the cup. When you pour water in a bottle, it becomes the bottle. When you pour water in a teapot, it becomes the teapot. Water can drip and it can crash. Become like water my friend.

Bruce Lee

 

If you look around the internet, you will come across this famous quote. Often cited by arm chair philosophers (myself included), these simple sentences speak on being flexible and adaptable within your life and how being too rigid can limit us. These limits will make it difficult to truly grow and improve ourselves, whether it is our professional or personal lives.

We can break this quote down in many ways, but I’d like to focus on how it impacts technology professionals. One thing I love about working in technology is how often things change. The joy comes from the constant learning we must do to keep pace. If we’re not pushing ourselves to explore and discover, we risk falling behind and losing our way.

Empty Your Mind

If we look at the IT career path through the lens of Lee’s quote, the idea of flexibility becomes obvious. Through my time in the IT industry, I’ve seen the rise of the Internet, the cloud, concepts like Agile development and DevOps, and other changes that range between large and subtle. If I’ve learned anything, it is that defining myself as a DBA, sysadmin, or developer limits what I am willing to do and narrows the opportunities available to me.

When someone asks you to take on a new task, how do you approach it? Do you look at it through the lens of your job role? Or, instead, consider how it relates to your career path? Do you determine what you want to work on based on what you know and are comfortable with, or do you let the opportunities shape your growth?

As technology professionals, it’s important not to limit ourselves. Today’s experiment might be tomorrow’s trend. A hobby we tinker with could easily become our driving passion. We need to be receptive to what’s around us, be formless and fill the demands that are presented to us. Do not close yourself off to challenges because you haven’t done them, but be prepared to know what it takes to fill those vessels.

H Two O

This probably sounds daunting because there’s so much going on in the technology world. Should we be able to do anything? Be ready to build networks, write applications, design databases, and so on? How do we keep up with the overwhelming number of disciplines and developing technologies in our world?

I’ve long held that the “full stack developer” is a myth. We live in a world of specialization and trying to have deep knowledge of all disciplines is impossible. Sure, we can understand something of everything (being a jack of all trades, master of none), but it becomes difficult to bring the full weight of our expertise to bear if we only know a little bit of a lot of things.

At some point in our careers we need to understand what makes up our “water”. This brings me to another long held view of mine: technologies change, but concepts remain the same. The example I like to use is relational databases. Over the years we’ve had platforms like Microsoft SQL Server, Oracle, MySQL, PostGREs…the list goes on and on. Each of these platforms introduces new features every few years, trying to one up each other.

At the core, though, each of these platforms is a relational database. The relational model was codified by E.F. Codd back in 1969. Think about that for a moment. While Microsoft SQL Server is adding new features every few years, the foundational concepts that we all work with are forty seven years old. Almost half a decade of a technological principle that we build our careers on.

I don’t consider myself a SQL Server professional. My skill set is not limited to just SQL Server as a platform, but relational database design and data management. I am strongest with Microsoft’s offering, but I can adapt to another platform because I understand and own the foundation. The core concepts are what I build upon, which is what makes me stronger and more prepared.

Be Like Water

Becoming like water is more than just being adaptable, it’s about understanding what defines you. Job roles and requirements are just vessels we fill with the knowledge and experience we have. If we choose to be like water, we remain fluid and can, at once, fill the needs of a role as well as be more than that.

Be the sum of the things you have learned, not the tasks you can accomplish. My challenge to you for the new year is to build a deeper, more fulfilling career. Flow and adapt, learn and absorb. Empty your mind and be open to the numerous possibilities in front of you.

Be like water, my friend.

Sharing My Summit 2016 Submission Results

Sharing your abstract results for 2016 has become a Thing(TM) that Brent Ozar(@BrentO) started this week. At first I wondered about the value, but as I read others posts it made sense to share because it helps pull the curtain back a little to how the process works for speakers. It also gives us insight into the kind of work the volunteers are doing. As such, I want to share some thoughts on what I’ve seen and how it can be improved.

First off, let’s get the fine print out of the way:

  • Thank you to Allen White(@sqlrunr) and the speaker selection team for managing this cat herd. It’s a tough job, but it shouldn’t be thankless. We appreciate your hard work.
  • Thanks to the volunteers who gave of their time to read and offer feedback on the abstracts. While I have some thoughts on the nature of the feedback, I recognize and appreciate the time it took to write those comments.

Let’s go over the general thoughts. I’ve been deeply intrigued by the speaker selection process over the past five years. With each year, the speakers who submit get better feedback and the process is improving with each iteration. Just like the software we work on, it still has “bugs”, but I think we all need to recognize the strides this process makes and how PASS is doing its best to balance all the factors to create an annual Summit with a variety of voices and a solid conference offering.

On this, my biggest complaint is the overall subjective nature of many of the comments. I’ll address mine specifically when I list my abstracts, but as I read others feedback, it seems like many of the reviewers let their bias color things a bit too much. It might be that we have different perceptions of session levels or that there’s a misconception about a tool, technology, or technique. My suggestion back to the abstract teams is that, as you’re reviewing, step back a moment and be careful that your reviews do not contain too much subjectivity.

(Yes, even THAT might be considered a subjective judgement. Take it for what it’s worth.)

Now, let’s look at my abstracts (All General Session submissions):

Powershell Jumpstart for SQL Server DBAs – Level 100

(Accepted)

Abstract:
Powershell can be intimidating. There are many challenges to using it, especially for those not familiar with its nuances. Once understood, the language can be used for effective and robust automation that brings together SQL Server with other Windows components, such as the file system or Active Directory.

In this session, we will cover the Powershell fundamentals, how you can use Powershell itself to learn about concepts and syntax, and techniques for using Powershell with SQL Server. We will focus on core language patterns that you can use immediately, take the mystery out of the code, and help you get started writing your own PowerShell scripts. Attendees will not only acquire an understanding of Powershell, but see practical examples of how it can be used with SQL Server, along with a set of resources they can use to learn more about the language.

Prereqs:
None

Goals:

  • Introduce attendees to Powershell, what it is and where it came from. Cover basic syntax of Powershell and how it is written.
  • Demonstrate specifics of how Powershell can be used to manage and automate tasks around SQL Server.
  • Provide attendees learning resources for Powershell.

Feedback:

  • abstract – detailed but not compelling
    topic – level too low
    subjective rating: not interesting
  • The outline seems to clearly describe the contents of the presentation.  The topic and goals should be compelling to attendees.  The target audience should be big enough to support this session.  There appears to be a reasonable amount of live demonstrations in relation to the topic being presented.
  • Attendants would be interested this session because it is a beginners session.

My Thoughts:
This is where I have an issue with the subjective nature of the feedback. Maybe I’m a little too sensitive about DBA’s perception of PowerShell (I have the debate of “Why bother?” more than I care to count), but the “not compelling” comment is off base. A basic PowerShell session may not be compelling to the reviewer, but we have a LOT of DBAs out there who want this kind of information. I know because I talk to them a lot. I also take issue with the “level too low”, because this session is specifically designed to make PowerShell easy to grasp for those who haven’t worked with it.

I guess I shouldn’t complain too much since this was the one selected. I’m proud of it and the content. It has been very well received at other venues, so this is a case where I think the reviewer was letting their own personal bias of the content color the abstract review a little too much.

Automating Azure SQL Management with Powershell – Level 200

(Not Accepted Popular topic, higher rated session selected)

Abstract:
Azure is still a new frontier for many database administrators. While cloud environments bring a lot of flexibility and freedom, there is a lot to learn and a lot to keep on top of. The current portal provides a functional GUI experience, but the most effective way to manage Azure environments is by using Powershell. In this session, we will look at the fundamentals of using Powershell with Azure SQL databases. We will dive into the tools that can be used to deploy and manage these environments, as well as patterns and processes to automate these tasks. Attendees will leave with a solid foundation to build and administer SQL database environments in Azure.

Prereqs:
Basic familiarity with Powershell and Azure.

Goals:

  • Review Powershell Azure cmdlets and how to use them. Includes connecting to your Azure account and setting your subscription.
  • Examine the Azure cmdlets specifically built for Azure SQL Databases and how they apply to the Azure SQL Database operating model.
  • Demonstrate how to use the cmdlets to create, modify, and remove an Azure SQL Database. Discuss patterns for using these and automating Azure SQL Database deployments.

Feedback:

  • Abstract-  well written, compelling
    topic –  topic and title clear. Topic rarely covered
    subjective rating – interesting
  • Great topic. I would like to attend.

My thoughts:
I think this was just a full field and I had another session accepted. The feedback was pretty sparse, but there is an interest here. I’ll probably submit this one again.

Benchmarking SQL Server with Powershell – 300 Level

(Not Accepted Other sessions selected based on building a balanced program for track coverage, speaker coverage, topic coverage, and session rating.)

Abstract:
Performance is key for any database system. As professionals, we are constantly challenged to to keep our servers performing at peak condition. The struggle is many administrators do not understand their current profile, so it is hard to know when performance degrades. Benchmarking SQL Servers is a vital task that is often overlooked because it is either not understood or difficult to manage. This session will cover the important metrics to measure for an effective benchmark and will also demonstrate how a benchmark can be captured using Powershell. Attendees will leave with a clear plan of how they can measure their SQL Server performance, how that measurement can be automated, and how to develop an action plan to dynamically manage these tasks at scale.

Prereqs:
Understanding of SQL Server performance fundamentals, such as perfmon counters and wait statistics. Basic understanding of Powershell.

Goals:

  • Review what constitutes a good SQL Server benchmark. This will cover perfmon counters and wait statistics.
  • Demonstrate how this benchmark can be collected with Powershell.
  • Show how the benchmark can be automated and reported on.

Feedback:

  • abstract: one grammar error in abstract, but detailed;
    topic interesting
    subject rating: I like this topic
  • I would attend this session.
  • Topic is a good and relevant option.
    Level is good for prereqs and goals.
    Abstract is ok, with a few wording and grammar choices that could be improved/changed to make reading easier (ie. ‘performing at peak condition’ and  ‘The struggle is (that) many… ‘.

My thoughts:
Again, full field. This is a session of mine that has evolved over the past year. It started as more PowerShell focused and has become more “How to do a benchmark” focused with PowerShell the supporting actor. The grammar comments are something I continue to work on, because I tend to get waaaaaaay too verbose when I write and put myself into grammatical corners (see what I did there?). I would submit this again, because it appears to have been well received.

SQLPS In Depth – Level 200

(Not Accepted Higher rated session selected)

Abstract:
A big hurdle for using Powershell and SQL Server together is the SQLPS module. Both old and new users of Powershell don’t completely understand its capabilities. There’s also the concern of how Powershell, SQLPS, and SQL Server all interact with one another. In this session, we’ll talk about the cmdlets you may not know about, tricks to save time using the provider, and even a few gotchas on how the provider works that can save you some time and energy. We will go in depth on what happens in SQL Server when commands are run using the SQLPS module. When we’re finished, you will have a deeper understanding of how you can use SQL Server and Powershell together, along with best practices to integrate the module with your automated tasks.

Prereqs:
Minimal familiarity with Powershell, basic familiarity with SQL Server

Goals:

  • Review the SQLPS provider functionality and go over what it is and how it works.
  • Cover the cmdlets in SQLPS, how they are used and gotchas in their implementation.
  • Demonstrate practical applications for both the provider and cmdlets for SQL Server automation.

Feedback:

  • I would like to attend this session.
  • The outline seems to clearly describe the contents of the presentation.  The target audience may not be big enough to support this session.  The subject matter does not appear to match the experience level (somewhat advanced topic for a 200 level session).
  • abstract: detailed
    topic: goals not compelling
    Subjective Rating : so and so

My thoughts:
The biggest take away here is “The target audience may not be big enough to support this session.” I think that’s true, and the reason is a double edged sword. Many view PowerShell as a niche topic, so there might not be as much demand for this. However, the whole reason I talk about PowerShell and SQL Server (and I submit sessions like this) is to try and move it beyond being a niche topic. This session is intended to get more people excited about PowerShell by seeing what it can do and how to get over some of the hurdles of working with it.

That being said, I had an advanced PowerShell session at last Summit that was deeply technical and still had 300 people in the audience. Maybe it’s not quite as niche as I thought. However, I believe I need to focus on sessions with more general appeal for future Summits.

Three Things I Want From My Job

I’ve been off for a while and I apologize for that. The beginning of the year has been crazy and I am just now getting my feet back under me. The short version is I recently changed jobs and have started working for UpSearch(@UpSearchSQL) as a SQL Server Consultant. This is an exciting change for me, full of new challenges and opportunities.

Blah blah blah blah, right?

Without making light of the change, I know you all hear this every time someone starts a new gig. This post is not about that, but about some reflections I had about why I changed jobs, what satisfies me at work, and the reasons we do this stuff in the first place. I want to share these thoughts with you to hopefully help you broaden your perspective on why you are at your job and what it is that keeps you going back (besides the obvious paycheck).

Three Things

When it comes to our jobs, whether we’re interviewing for something new or looking back on our current position, we should have a list of what keeps us happy. After all, we measure and track statistics around our databases and compare them to a baseline. It should be no different for our careers. This list can be as detailed or broad as suits you, but you should have something. My list is actually pretty simple, consisting of three questions that I ask myself:

  • Am I compensated fairly?
  • Am I working on cool s#!t?
  • Am I respected?

These questions do not have simple answers, but they do have answers. As we go over each question, hopefully you start to see how they might apply to you.

Compensation

This probably seems the simplest. After all, we all get paid and we want to make sure our salary is competitive to the market, right? This definitely is something we should be thinking about and reviewing. It also takes a bit of self honesty about our capabilities and how they match to what is being paid for. Are we senior or mid-level talent? How much do we drive value for our employer? Salary is very much a two way street.  If we want to be paid fairly, we need to demonstrate our worth.

Of course, we also need to keep in mind that compensation is far more than just salary. I’ve worked jobs where I got paid pretty well, but had to fight to go to conferences like the PASS Summit. Some jobs had liberal vacation policies while others offered the minimum. When you consider your compensation, you have to ask yourself what keeps you happy from a larger perspective.

Coolness Factor

I’m the kind of guy that needs to be challenged. It is why I spend time blogging and presenting, as well as playing with different kinds of technology. This is how my work fulfills me. I could simply punch the clock, work from 8 to 5, and collect my check, but this wears thin pretty quickly. I need more in a job than just going through tasks by rote so I can go home at the end of the day.

This is why it is important that I get interesting work. I need problems to solve and challenges to overcome.  To be clear, I understand that I will have to do the tedious stuff as part of any job. Work like this needs to be balanced out, though. Heck, sometimes the challenge of managing the tedious stuff in a more efficient manner is engaging in and of itself. The key is that I want my job to help me grow, not allow me to tread water. Job satisfaction is measured on this growth.

R-E-S-P-E-C-T

This last item is the linchpin. For the longest time, I was happy with the first two items on this list. Then one day, I sat up and realized that I was getting worn down by my job. I couldn’t quite place my finger on why, because I was getting what I wanted out of compensation and the work was definitely cool and challenging. The problem was I was struggling with going into work every day and my motivation was rapidly draining.

The key, I realized, was a matter of respect. Whether it is peers, team members, or management, I need the people I work with to respect my time and my knowledge. This may seem a little arrogant, but it is important to recognize your own value. Companies hire me to be a database expert, and an expensive one when you boil it down. This means my time and opinion carry a certain amount of cost, and when that cost is being wasted because others in the company do not recognize that value, it becomes wearing.

Without trying to sound too negative, we need to understand our professional value. As with the compensation question, it takes a lot of self honesty to value ourselves appropriately. It is important to recognize that within ourselves. This is because it is an important factor for job satisfaction, because not only should we recognize that value in ourselves, we need others to realize it and respect it.

Can I get a little satisfaction over here?

Job satisfaction, while ultimately a binary yes or no answer, has a lot of degrees of measurement. After all, I can think of jobs I’ve had where the pay was fantastic but the environment sucked. Or where the entire team thought I was a rock star, but I was not working on interesting or engaging work. When I felt my job satisfaction going down, I could always track it back to one of these three items.

What is important here is that by understanding what satisfies you at a job, it gives you a tangible item to resolve. It might simply be a matter of going to your boss and telling him what the problem is. This gives you something tangible to work on with your employer and is fair to them, because chances are they don’t want to lose you and will work with you. It also may mean you need to find another job that fills that gap. In this case, when you sit down in an interview, you can have a conversation with the person across the table about what fulfills you.

Whatever your reasons are, it is important that you know why you get up in the morning (or other time) and go to work. Your reasons are probably different than mine, as these tend to be pretty personal. I hope that by giving you some insight into what job satisfaction means to me, it can help you build your own list of questions. Measure your job satisfaction, know what makes you happy, and then figure out how to get it.

#SQLPASS 2015 Board of Director’s Elections

Apologies for the unplanned blogging hiatus, but I’m back. While I’ve got a few technical post ideas bouncing around in my head, some events over the past two weeks have arisen that I want to blog on. If you’re hoping for more Powershell posts, do not despair! They will be along shortly.

Recently PASS took nominations for the annual Board of Directors election. This is an opportunity for members of the community to step up and volunteer their efforts on a global level to help shape and guide PASS, as well as act as a conduit for the community’s voice. Every year has a solid slate of candidates and this year is no different. In no particular order, they are:

As a community, we’ve got some tough decisions, as all four candidates are outstanding members of our #SQLFamily. Thanks to all of them for devoting so much time and effort to make our organization better. No matter the outcome of this election, the PASS community will be well served.

With all this being said, I wanted to share a little more with you about the new candidates and voice my support for them in this election. This is not to tell you how to vote, but to provide you some insight to who these gentlemen are so you can make a better informed decision. To be honest, I’m going to have a tough time myself.

Ryan_400x400Ryan

Ryan Adams is a PASS member I’ve known for a couple years now and very few people can compete with his passion and drive for building the community. Ryan is the President of the Performance PASS virtual chapter, helping guide and build that outlet into one of the stronger virtual resources out there. This is in addition to being a board member for the North Texas SQL Server Users Group, one of the largest PASS chapters out there. Add to this the fact that Ryan is an active community speaker, sharing his knowledge and passion at numerous PASS events. This makes it no surprise that he’s an active Microsoft MVP, as he’s an excellent community voice for SQL Server and the people who support it.

But that’s all out there on the Googles for you to find. You probably want to know what sets Ryan apart. I can tell you that there are very few people as driven and energetic about PASS as Ryan is. I’ve had several conversations with him and his passion is infectious. Combine this with his grassroots organizational experience and it is no surprise that he has thrown his name into the hat. Ryan is someone who not only knows what needs to be done, but also how to make it happen.

ArgenisFernandez250sqArgenis

Full disclosure before I get started: Argenis Fernandez is a close friend that I’ve known for several years. He’s had a tremendous impact on both my professional career and community participation. This shouldn’t discount any of want I would say about him and, hopefully, only strengthens these views.

I think most people have probably heard of Argenis at this point. He’s a Microsoft Certified Master and MVP. For a long time he’s been one of the strongest technical voices in the community. What sets Argenis apart is that he has a fantastic ability to connect with others. Anyone who has talked with Argenis knows that he genuinely cares about the success of those around him. He constantly mentors other and builds up those he talks with. In sports terms, he’s that super start that makes his team mates better.

My personal story relating to this is from two years ago, as I was just getting started with my speaking career. Argenis was in Denver on a consulting engagement and we were going to dinner. The conversation meandered, but at one point I mused about possibly taking the Microsoft certifications. Argenis simply looked at me and said “Dude, just take them. You can pass them.” As with most mentors, he didn’t just nudge or suggest, he outright shoved me. A year later, I had all five certs to get the MCSE Data Platform. I could tell you at least 10 other stories like this where Argenis motivated someone (not just myself).

The Election

This upcoming election, as I said, will be tough. While I spoke specifically about Ryan and Argenis, Tim and Jen have both demonstrated their commitment to PASS. Hopefully I have been able to fill in some gaps about why the new candidates should also receive your consideration.

What’s most important is that you vote. Last year I blogged about some issues I had with the direction PASS is going. This is your chance to influence that direction. The candidates have the opportunity to mold and shape PASS over the next several years, so these elections have tremendous impact. Over the next few weeks I’m sure you’ll get a chance to learn more about all four candidates, more than I have shared here. Take that opportunity. If you’re on Twitter, you can interact with them there and learn about the candidates yourself. And vote.

The Cult of Automation

Last week, while perusing through the usual interesting links from Twitter, I came across an article from Kendra Little (@Kendra_Little) titled “Not Everything Should be Automated”. It’s brief post where Kendra talks about why she has stopped automating some of her tasks. The title is attention grabbing (well, it grabbed MY attention), but there’s a core debate hidden in here that I want to take sides on.

If You Liked It, You Should Have Wrote a Script For Itbrodoyouevenscript

I often hear “you can’t automate everything”. As a card carrying member of the Cult of Automation (caps mine), I usually respond with “why not?” Many of my daily tasks can and should be automated. When doing these tasks manually, I am exposing the work to risk from skipping something, flubbing a syntax, or some other human error. The cost of these errors is compounded by the fact that it often takes a person longer to execute a process manually then if it were automated. This all adds up and can heavily impact your the value you bring to your employer.

This is, after all, why GUIs were created. By providing that interface, we aid users with a method to execute tasks that can have mistake protection built in as well as providing a speedy way to complete the work. This is the conversation I end up having with folks who want to use the SQL Server Management Studio GUI to create databases, that they can do it faster than having to type out that tedious CREATE DATABASE statement. The benefits are less errors and faster time to completion.

Automating a process isn’t really that different, because you’re wrapping up an action in a script so it executes the same way every time. The goals are the same: reduce errors and increase speed. It’s just now, instead of providing a GUI for interaction, we’re scripting out all the actions and getting the heck out of the way. The result is repeatable, consistent action.

Why wouldn’t you automate then? To me, it seems a no brainer to script something out if you do it more than once. When you do that, you reduce your errors while increasing the speed of execution. This is the message of my Cult and one I would hope more people subscribe to.

How do you get to Senior DBA? Practice, Practice, Practice

Let’s go back to Kendra’s post, though. Her message is that she forces herself to type out commands instead of scripting or snippeting them because she wants to make sure she knows and understands those commands. It’s a matter of mastering the syntax. If you automate a task or put it behind some sort of interface, you can quickly lose touch on how to write it. You might forget the options or the exact syntax, which means your skills can get rusty.

As a musician, I know and understand the value of practice. When preparing for a concert, I often rehearse a section of music dozens of times in order to commit it to muscle memory. This means when it’s time to perform, my brain doesn’t get crossed up trying to remember what the notes were and I can focus on making music. Code practice is no different, because when it gets to crunch time, you shouldn’t be flailing with how to do a point in time restore because you can’t remember how a command is written.

This all sounds fine in theory, but let’s talk use case. Restore testing is a perfect example, because it’s something that will commonly be automated. I’ve written my own scripts to aid this and will often set up a regular job to select a database, restore it to a target server, run a DBCC check, and catalog a report of the process for later review. To manually test all my databases is way too long and if I were doing that, I couldn’t work on any of the cool projects. This makes automation a perfect and necessary solution.

However, I still do regular manual point in time restores. This is because I need the practice. I won’t do all my databases and I won’t do it every day (usually once a month), but I still do it. It keeps my skills fresh. It applies for other tasks as well. I have many automated processes, but I will occasionally bypass the automation so I can get my reps.

This takes us back to the GUI discussion. Many of the tasks in SQL Server we could do graphically through SSMS, but more experienced DBAs eschew that to typing the script. We’ve all used the learning tool of scripting out an SSMS action. To script is to understand, at the core, what is happening in SQL Server and gives us better knowledge of how to manage it. I remind many DBAs I’ve talked to that pretty much everything in SQL Server is a T-SQL command of some sort, so it behooves you to understand the relationship between the action and the syntax.

The Bone of Contention

Now we get to my issue with Kendra’s post. I don’t disagree with any of her statements, but I disagree with the tone of the post as set by the title. We’re not arguing against automation here, but instead championing practice. You still should try and automate as many tasks as possible. Just don’t lose sight of the skills you need to build that automation. It’s very difficult to write a script if you don’t know and understand the actions you need to script. Worse yet, if someone hands you a script and you run it without understanding how it works, you could be doing lasting damage to your environment.

Practice makes perfect, and perfect makes automation. You should build and practice your skills, understanding what makes the platform tick. Once you do that, you can script it. Once you script it, you can start practicing your next automation trick. Just don’t lose sight of the skills that got you this far.

Validation and Inspiration

I’d like to take a brief break from the technical posts to talk a little bit about community. As I write this, I’m currently heading back to Denver from SQL Saturday Phoenix. As with other SQL Saturdays I have attended, this was a fun event with lots of great learning and camaraderie with my fellow SQL geeks. This is a bit of a love letter to those geeks, but I wanted share with you some of the impact this event had on me.

Validation

As with everything else I’ve done in 2015, my presentation at this event was Powershell related.  I gave a presentation on Powershell Tips and Tricks for SQL Server DBAs for the third time this year and was pretty pleased with my execution. What blew me away was the reception from the audience. I had a ton of positive feedback and comments and could tell the attendees really appreciated what I shared with them.

Why am I telling you this? Because I want to convey to you why you should present and the benefits of it. It’s more than just having your ego stroked or getting that pat on the back (though those don’t hurt). When you share your knowledge, you have an immediate and profound impact on other people’s careers. Each and every one of us has something that others can benefit from.  We need to share it. To know that I showed my audience a better way to do their jobs and help them step up to another level is extremely gratifying.

Much is made of technical presentations being used as a vehicle for advancing your career. They are also a vehicle to advance the careers of your peer group. The great thing is the more we help each other, the more we help ourselves and make our skills and abilities stronger. I could see this in the gratitude of my audience and the feedback they gave me from my session.

Inspiration

What I like most about technical conferences is not just the education and the sessions. These are valuable for both the presenters and attendees, but the true value is gained in the conversations that happen around the event. This is why it’s so important to make time to talk with the other people at these events, to chat with speakers, and to avail yourself of the social aspects. You’ll find inspiration for solving problems at work, developing new strategies for your current position, or defining the next moves in your career.

I had several such conversations while I was at the event. Coming away from this SQL Saturday, I was able to help some of my peers with strategies and ideas for their blogs, their presentations, and their jobs. Beyond that, though, I was inspired for other things I could do to both improve myself and my career.

One example was a conversation with Amy Herold(@texasamy), where we talked a lot about Powershell and automation. She gave me a few ideas that I could further develop and we talked about some projects we could collaborate on. I’ve got some exciting ideas that I hope to work with Amy on over the next few months that will help both of us grow.

It’s hard to have these kind of conversations during our day-to-day jobs. Since we’re usually only one of a couple people (or maybe the lone gunman) doing data work in our jobs, it’s difficult to bounce ideas off of others and get that inspiration. You’d be amazed at what kind of thoughts you will get when you have really smart people to talk with.

Satisfaction

The reason SQL Saturdays are such great events is it allows the greater SQL community to share, connect and learn with one another. If you haven’t been to a SQL Saturday, I strongly encourage you to go. I know it’s sometimes tough, being on a weekend when some of us would rather be getting along with our non-database lives.  I want you to think about what you could do with your career, though, if you gave up that one weekend. Where could you go if you could have that kind of free learning. Most of all, how much better will you be by plugging in to the SQL community and feeding off the energy and knowledge you can find at these events. Building your career is more than just learning, it’s collaborating and sharing. SQL Saturdays give you all of this in spades.

 

It’s business time!

Just a quick update on some on going items that will hopefully be of some interest to you.

SQL Saturday Albuquerque (358) and Phoenix (370)

For the third year in a row, I’ll be down at SQL Saturday Albuquerque.  I love this event and the people who run it, and going to Albuquerque is always a nice trip to the past for me (I used to live there many moons ago).  This year, I’m talking about Powershell.  A lot.  As in, I’ll be giving an Introduction to Powershell precon lot.  If you’re going to be in Albuquerque for this event and want (nay, need) to get started with Powershell, this is the perfect opportunity.  I’m starting from ground zero and building a foundation for learning and using Powershell in your environment.  I’d love to see you there.

Oh, and then I’ll be presenting a Powershell tips and tricks session at the event itself.

No precon at SQL Saturday Phoenix, but my Powershell tips and tricks presentation has been selected for that event as well.  I’m really excited about this session, because I can share some of the gotchas I’ve learned using Powershell and share it with folks who are just getting started.  The goal is to help people get going faster and better with Powershell.

A theme for 2015

As you can guess, there’s a bit of a theme here.  For me, 2015 will be the year of sharing Powershell with the community.  My community friends all know how much I love Powershell and the things I can do with it, but it’s still a technology that’s struggling to get traction in the SQL Server community.  There’s several reasons for that, but I think most of it is simply driven by a lack of familiarity.  No, I’m not going to tell you that Powershell should be used for everything.  It can do a lot and, especially in the day and age of the cloud and moving faster, this tool is becoming less optional.  I challenge you to get ahead of the curve and start learning.  Don’t worry, I’ll hold your hand.

The new gig

I’m not sure who knows, but I’ve been working a new job for about nine months now at a great company called Xero(@Xero).  It’s been a fun ride with some really smart people and I’m challenged every day.  Why do I mention this?  Because we’re hiring in our Denver office for a mid-level DBA.  If you want to work with me, get challenged every day, and work with the cutting edge of SQL Server (and other tech), fill out an app.

That’s all for now

Again, this was just a quick post for some business related items.  More of the usual content coming soon.

Fixing the #passvotes problem

Following up on my last post, it looks like PASS has addressed the election issues.  The gist of the fix is:

  • The voting deadline has been extended to October 14.
  • Members have until October 5 to update and validate your account.  Go do this.

My thanks to the PASS Board of Directors to doing the right thing on this.  As an organization, you should always be concerned with the care and service of your current membership.  I still have one question, though:  Are we addressing the symptom or are we fixing the problem?

The last week and the issues that came out of it were a mess and the Board make a great effort to fix it.  But this isn’t a long term fix, this was simply a one time repair of the the problems caused by the change in process.  What I want to know is what PASS is doing to prevent a similar problem next year?  My suggestions to PASS are:

  • You can not rely on email to communicate changes like this.  Make sure you are leveraging other methods (Twitter, blog posts, LinkedIn).
  • If accounts need to be validated, build this validation into the website.  Force members to update/review their profile when they log in.

Now that I’ve been burned by this, I will certainly pay more attention to how PASS is managing my account.  However, PASS needs to think about folks who aren’t as vigilant and be proactive about communicating changes.  Connect, learn, and share isn’t a one way street.

The Great #PASSVotes Cock-Up (of 2014)

I really hate having to return to my blog to write this.  I should be putting up another post about Powershell, SQL Server, and happy life in general.  Alas, this is not the case, and I need to express some thoughts publically regarding the recent PASS Board of Directors vote.  I’ve made quite a bit of noise around this on the Twitterz, so it’s only fair I put out my own big post on this to suffer the slings and arrows of outrageous fortune.  Or some other such nonsense.

For those unaware, this week has the vote for the PASS Board of directors.  Four candidates who are noble in purpose and want to contribute to the SQL Community in a leadership role.  It’s a song and dance most of us have been through before and I applaud these folks for stepping up.  There’s usually a hiccup in the process, but this time around it’s one that is pretty unpleasant in my eyes.

First, let’s talk about the problem.  The SQLPass.org registry is a hot mess.  Folks have multiple accounts, old email addresses, and internet profiles that have been collecting dust for a long while.  The organization has been trying to clean these up (which I’m all in favor of) and this time they said “Everyone should update their profile and we’ll send LOTS of emails about it so they know!”  If you didn’t, well you didn’t get to vote.  You’ll get cut off and have to file again the next time around.

I’m one of those people that missed the email and didn’t update my profile.  The reasons are simple:

  1. I, like many others, get a ton of email.  Lots of it goes to spam.  Things that don’t, I’ll glance at the subject line and only open if it interests me.  PASS sends me a LOT of stuff, most of it I don’t open because I don’t have time.  So I can’t tell you if I skipped it or it got spammed, but I didn’t get the message.
  2. Very little has changed for my profile.  I usually keep my online profiles minimal anyway because, well, spam.  Call it wearing my internet condom, but I only put stuff online that I absolutely must.  The only thing I’d like to update is my account login because the domain is no longer around.  Alas, I can only do that if I send an email to PASS HQ and have the staff intervene behind the scenes.

So there ya’ go, I didn’t update, I don’t get to vote.  Sounds pretty cut and dried, except that I don’t see it that way.  Mostly because of the way PASS decided to handle this, then how they decided to communicate this, and finally how they’ve handled things after the whole thing went up in flames.

Updating your Profile

Let’s talk about the process.  Update your profile?  I mean, I guess, but how many of us do that on a regular basis?  I’ve got so many online profiles I could probably turn them all into sheep and start a mildly profitable wool business in New Zealand. I’m not going around to update these unless I’ve got a reason to.

However, PASS has other ways (or should) to identify my active profile.  I’m the Vice President of Events for the Denver SQL Server Users Group.  I log into the site 3-4 times a month to manage chapter events, send out emails, and generally keep things running.  Are there no logs of my use of the site?  I use the same account (linked with sqlpass.org if you didn’t know) and have used it to register with 6 SQL Saturdays this year.  To insist that a profile update is the only way to know my account was active is silly.

Let’s go with the having to update the profile, though, since that’s what they want.  Since you want folks logging in to the site, can’t you just force them to update their profile on log in?  I have to do it for other websites, it’s not a new concept.  I’d have been annoyed, but by forcing me to complete that, PASS would have accomplished their objective.

Communication

Email.  Always with the email.  With a tech organization, you would expect them to understand the kind of impact email has on our daily lives.  We get tons of it, so we build filters and rules to manage it.  Email is a mess and it’s not getting any better.  (Believe me, I worked for an e-mail marketing firm for a while.)

So why does PASS expect people to always read every single email they send them?  Sorry, I’ve got to much going on.  “But Mike, that’s no excuse!”  Fine, but I expect someone running a tech based community to have enough sense to realize that email shouldn’t be the only means of communication.  Sure, Bill Graziano made a single blog post in January (6 months before the deadline), but no others?  No website notices?  Banners?  As Chris Carter would say “C’mon man!

The Aftermath

So here we are, about 48 hours after this all went nuclear.  There’s been quite the twitter storm and lots of chatter.  I’ve received 4 pieces of communication from PASS personell:

  • 2 form emails from PASS HQ essentially saying “Yeah, you can’t vote”.
  • A direct message from a board member saying “I am fighting to make this right, have patience.”
  • A direct message from a different board member saying “I want to talk about how we should have done this better.

First, the DMs.  To the first, thank you.  This is what we need on the board.  Someone fighting for the community, because without us there is no PASS.  The second…well, I know we need to make things better in the future.  But we also need to make things right.  Now.

The form emails are form emails.  Enough said, we’ve gotten enough crap like that over the years.  Might have well just gone to my spam box.

This is what really angers me.  I’ve been an active member of PASS for 4 years, presenting at SQL Saturdays, spending money out of my own pocket to attend Summit, helping run the Denver users group, and ultimately trying to show people why they need to be in on this.  I’ve been busting tail on behalf of this organization for a while now and it sure as hell feels like I’m being told to “shut up and sit at the back of the bus.”

What also rubs me raw is that we’ve also had a dust-up over the re-branding of PASS to be a more inclusive data organization.  Lets set aside that debate for another time, but right before the vote opened, we had this post on the SQLPass.org blog on how we need to have a bigger umbrella.  Great!  Sure!  On the heels of this we then have an event where many folks (not just me), who have been serving PASS for years, get essentially shoved out from under the umbrella due to a technicality.  I’m pretty sure this wasn’t the intended message, but timing is everything and this one was pretty poor.

No, I don’t think any of this was intentional.  No, I’m not looking for a grand conspiracy to disenfranchise folks.  This was an accident, one that I believe came from poor planning and execution.  Like any mistake, however, the way you recover from it defines you and I’ve got a dim view of how this is being handled post-mistake.  The party line is “Can’t do anything, our hands are tied.”  That’s a line I just can’t swallow, considering the number of long shifts and incident meetings I’ve had to participate in to fix business mistakes.  The right thing can always be done, it takes the will and desire to see that it happens.

TL;DR

I’m calling on PASS to do the right thing.  I’m asking the Board to represent the community that they stand for.  For the third time this year, we the community are calling for transparency and accountability from our organization (The other two?  Rebranding and Speaker/Precon selection for Summit 2014).  If we can’t fix this, we need to know some details around why (disparity of systems why that was chosen, why we are unable to pull additional active voters into the mix, etc.).

To the Board, this is not a personal attack on you.  I know most of you, you are good folks and I like you.  But mistakes are being made and your community needs you.

To everyone else, thanks for reading.  It’s a big wall of text, but one I felt I had to write.    Am I going to get my vote?  Probably not.  Am I giving up on PASS?  Not on your life.  I will continue to tell everyone I can that PASS is the most supportive and open tech community I’ve ever been a part of and will strive to make that so.  Don’t give up faith in the community because, no matter how it gets branded or who’s at the top, we’re the ones that make PASS special.  Connect, learn, and share with those in your office, city, state/province, and country to make PASS what you want it to be.