If you’ve been working around the IT industry for a few years then you have probably heard mention of commodity servers. These are machines that run a standardized hardware spec, and are easily interchangeable with others. The price point around the machines is that it is typically cheaper to replace than it is to repair them, so once the warranty runs out you just throw the old one away and get a new one.
I was thinking about this the other day, and how it really goes beyond servers, which is where I thought about Database Administrators as a Commodity (or DBAaaC).
When first considering DBAaaC as an idea it really does not seem to make much sense. After all DBAs have to do all kinds of different work, and many have very different sets of skills that are applicable to a wide variety of situations.
If you are thinking that then the odds are that you are a DBA, or have worked closely with one over the years. This is not something that the vast majority of people, in particular IT management type folks seem to think.
What makes me believe this to be the case?
DBA Job Requirements
I’ve been in the DBA business for about 17 years now (why yes, that does make me feel old, thank you for asking). In this time I have had a few jobs, interviewed for many, and been an interviewer for even more. I have seen more generic DBA job desscriptions than I care to remember.
There are hundreds of jobs descriptions for SQL Server DBA jobs that look almost exactly like the one above, do a search yourself and see what commonalities seem to exist between roles. Think back to the last job description that you read, was it something similar to this?
Would it surprise you to learn that the above job description was actually copied from the job description of a company that was looking for an Oracle DBA?
How many jobs have you seen looking for someone holding an MCDBA? That’s a certification that existed through SQL Server 2000 and was replaced by the MCITP with 2005, and then with the MCSE Data Platform in the last couple of years. It would seem that with management team that these things are easily interchangeable, after all there really is not difference between running SQL Server 2000 running in a cluster, and SQL Server 2016 with a multi-subnet Availability Group running on a cluster that is not joined to a domain, using DMVs to help you identify performance bottlenecks.
What about jobs that are looking for an MVP? That’s an award given by Microsoft for community contributions. It is not a barometer of technical knowledge, and yet I have seen several DBA jobs looking for people who are MVPs.
Over the years I have seen many jobs that also will only consider people that have bachelor degrees, because apparently having a bachelor degree means that you will be good at your job. I do not have a degree (of any kind), and know several excellent DBAs that do not either, but every one of us would be excluded from these jobs just because we did not take four years of college (and we’ll ignore for now how that plays into systemic racism in the US).
Here are the general guidelines for DBAs that I’ve seen over the years:
- Junior DBA – < 3 years of experience
- DBA – 3-6 years of experience
- Senior DBA – > 6 years of experience
These are usually baked right into the job descriptions, and it is how companies seem to manage peoples careers and job progressions (not to mention candidates looking for job seem to think that their skills put them in line for a job thanks to years working with SQL Server, not with actual knowledge).
This completely ignores whether a person looking for a DBA role has 5 years or varied experience, or 5 years doing the same thing day in and day out (checking if jobs ran, and answering business questions).
All the Technologies
Your generic job description will frequently be looking for someone with experience (if not expertise) with
- DTS (yes really)
- AlwaysOn (even though it’s not a thing)
- MSCS (even though it was replaced by WSFC almost a decade ago)
- VLDB (many places believe > 50GB = VLDB)
- Windows 2003/2008/2008R2/2012/2012R2
- Maintenance Plans
- and many more…
There tend to be long lists, like the above, for job roles. It is really just a list of buzzwords that the hiring manager (or the recruiting team) have put together so that they can plug them into their software to automatically weed out candidates that don’t have those words in their resumes.
The above examples are all ways to quickly recognize if a company is likely to treat anyone coming in as a DBAaaC.
What would be better?
A More Reasonable Job Description
Given the very generic information that is listed for almost all DBA positions what would make a role stand out? Usually it is something that is a little more crafted, and provides and understanding of the world in which the DBA works. For example a job that listed the following things:
- Required 3+ years with Availability Groups
- Understanding of DMVs and how to use them to troubleshoot server performance
- Can tune queries to improve performance and lower server impact
- Ability to manage SQL Server backups and restores to meet companies documented RPO/RTO
- Experience managing maintenance for tables larger than 100GB in size
- Knowledge of how Windows and Active Directory settings can impact SQL Server performance
- Can work with development teams on best practice guidelines for new code, and provide performance enhancements when problems occur
- Can troubleshoot SSIS packages
- Preferred current MCSE certification
This by no means would be a perfect list, however it does provide some good information, and would let a potential candidate know that management here at least has a clue as to what is required to perform in the role, and provides a basis for a conversation.
Working as a DBA
Once you are in a company how can you recognize whether or not you are being treated as a DBAaaC?
Think about potential new hires that the company are looking to make. Are they using generic job descriptions?
Do promotions seem to happen thanks to longevity in the role, rather than be based upon some more hard based criteria around the work that you do? Is there a planned career path for you to move to the next position?
Do you perform the same work day in, and day out? Are you solely focused on backups, or indexing, or checking on failed jobs?
Is there a way that you can receive ongoing training to help you get additional knowledge? (even if this means just paying for some online videos, or giving you a section of time every month to spend on skills development)
Does your manager treat you like a truly valued member of the team, or are you just there ensuring that things are set to run smoothly?
If any of the above ring true to you then the chances are that you are seen as a commodity, and you can be thrown away at any point, and replaced by someone else (at least management believes that to be the case).
A Word of Advice to Management
There is every chance that you believe that the people that work for you are interchangeable, no matter the role (I’ve seen this over the years with developers, database, Windows, and Unix admins). People really aren’t, except at the lowest skill levels (and frequently even not then).
People are not machines, do not think that you can just throw the old one away and pick a new one up. Consider the ongoing learning that is required for your people to have skills that remain current, and help you move ahead. Certainly, at times you will have people leave, or you may have to let people go, but don’t treat your entire team as if they could be replaced at a moments notice.
If you think that all DBAs are the same, spend some time looking on Stack Exchange at some of the questions asked, and consider what questions on there your DBAs could answer (and what questions they may post). You’ll quickly see that DBAs are all different, they have different areas of focus, and each can give you different things. They are far from being a commodity.