I am currently interviewing candidates for a new Junior DBA at my company. Even though the position for which I am hiring is a junior position, I do expect the candidates to have a base level of technology, know the basics of server administration, and have some strong critical thinking skills. So, to test the way each potential employee thinks, I ask a lot of intermediate to sometimes advanced SQL questions. My thinking is that, 1) I want to know what level the candidate is really at, and 2) I want to discover how they respond to questions they haven’t faced before. Have they dug down deep into the material, trying to learn as much as they could? Have they been casual observers of technology? Have they tried to test out ideas they’ve heard? I certainly don’t consider my questions pass/fail, they are just an indication of where the person sitting across from me is in their technical career.
I have had several candidates in so far and a few of them have come to me via a recruiter. After I had wrapped up with the recruiter regarding some of the candidates, I had mentioned to him that some of them, while completely qualified for this position, may want to stretch themselves a bit, because I see a lot of potential there. He asked if i could clarify, so I started trying to put it into a concise idea. I realized that the core of what I was trying to get across was simple, people who are starting into their technical career need to learn how to think about technology, not just learn the syntax and the base skills. So, I came up with these suggestions, mostly specific to SQL Server, that I thought would get the gears turning about how to start digging. These are not an end unto themselves, but simple stepping stones into building a technology paradigm; in this case, using the vehicle of SQL Server.
- Dig into how the syntax works. Start by opening up SSMS and going through the different wizards. Select different options and parameters, and then click the “Script” button at the top of the dialog to produce a script that you can read through. Start working through it and find which parts of the syntax are new to you. If you find a parameter you are not familiar with, or if you come across an entire group of keywords you have never used before, start researching them. Find out what the code is actually doing. Books Online is a great resource to start reading up on the syntax, but then expand your research and test it out for yourself. Books Online DOES have errors in it, as do hundreds of blogs, forums, and twitter-feeds. All of this information is coming from some human, double-check their work.
- Learn the first layer of Internals. Read up on how the Transaction Log functions and the role it plays in the database. Learn what VLFs are and how they work within the Transaction Log. Learn the process data goes through when queried, updated, and deleted. There is a lot going on here and understanding the basic principles will help you immensely.
- Start building a paradigm. I like to think that there is no technology that we posses today that was not built up through a quasi-logical process, placing one building block on another along the way. This enables me to build a paradigm that I can start plugging new information into. The more robust and thorough my model is, the better I can assimilate new ideas. If I come across something that doesn’t fit, I either have to recognize the failing in my paradigm and adjust my model to be more correct, or I have to find out why that new information is wrong. Those are the only two options I see, either I don’t understand something as well as I need to, or the new information is not completely accurate. It is up to me to find out which is true. Your brain may not work the exact same way that mine does, but having some type of model in your head of how different systems interact, helps you predict functionality and troubleshoot anomalies.
- Start to recognize false information. A lot of ideas get passed around the SQL community, and some of them are just straight-out wrong. There are some DBAs who believe everything they read or hear, this leads to a lot of myths being shoveled back and forth that are not true, or are not true in all cases. Knowing this information, or at least being familiar with it, will give you a leg-up. Start with Paul Randal’s “Common SQL Server Myths” document. This is a great summary of some of the information out there that is just plain wrong, and it will give you some good tools to start watching out for bad information that doesn’t fit into your paradigm.
Applying this type of thought to different areas of technology can help you start to think critically and proactively about the technologies that interest you most. So, when I speak of fundamentals, I am not talking about features and syntax, I am speaking of the fundamentals of being a technologist. This is a reminder that I myself need to come back to again and again, and I hope it can help someone else as well.