Click here to monitor SSC

What Counts for a DBA: Skill

Published 15 February 2011 1:57 am

“Practice makes perfect:” right? Well, not exactly. The reality of it all is that this saying is an untrustworthy aphorism. I discovered this in my “younger” days when I was a passionate tennis player, practicing and playing 20+ hours a week. No matter what my passion level was, without some serious coaching (and perhaps a change in dietary habits), my skill level was never going to rise to a level where I could make any money at the sport that involved something other than selling tennis balls at a sporting goods store. My game may have improved with all that practice but I had too many bad practices to overcome. Practice by itself merely reinforces what we know and what we can figure out naturally. The truth is actually closer to the expression used by Vince Lombardi: “Perfect practice makes perfect.”

So how do you get to become skilled as a DBA if practice alone isn’t sufficient? Hit the Internet and start searching for SQL training and you can find 100 different sites. There are also hundreds of blogs, magazines, books, conferences both onsite and virtual. But then how do you know who is good? Unfortunately often the worst guide can be to find out the experience level of the writer. Some of the best DBAs are frighteningly young, and some got their start back when databases were stored on stacks of paper with little holes in it.

As a programmer, is it really so hard to understand normalization? Set based theory? Query optimization? Indexing and performance tuning? The biggest barrier often is previous knowledge, particularly programming skills cultivated before you get started with SQL. In the world of technology, it is pretty rare that a fresh programmer will gravitate to database programming. Database programming is very unsexy work, because without a UI all you have are a bunch of text strings that you could never impress anyone with. Newbies spend most of their time building UIs or apps with procedural code in C# or VB scoring obvious interesting wins. Making matters worse is that SQL programming requires mastery of a much different toolset than most any mainstream programming skill. Instead of controlling everything yourself, most of the really difficult work is done by the internals of the engine (written by other non-relational programmers…we just can’t get away from them.)

So is there a golden road to achieving a high skill level? Sadly, with tennis, I am pretty sure I’ll never discover it. However, with programming it seems to boil down to practice in applying the appropriate techniques for whatever type of programming you are doing. Can a C# programmer build a great database? As long as they don’t treat SQL like C#, absolutely. Same goes for a DBA writing C# code. None of this stuff is rocket science, as long as you learn to understand that different types of programming require different skill sets and you as a programmer must recognize the difference between one of the procedural languages and SQL and treat them differently. Skill comes from practicing doing things the right way and making “right” a habit.

6 Responses to “What Counts for a DBA: Skill”

  1. timothyawiseman@gmail.com says:

    Just as there is no royal road to geometry, there is no royal road to the mastery of programming.

    With that said, what has worked best for me is iterating between studying and practicing. Without study, I keep practicing the same things over and over, which does help but only to a limited degree. Without practice, I learn concepts but often forget them and rarely really learn to apply them. By iterating them, with some experimentation now and then just to see what would happen, I at least make steady improvements in my skills.

  2. BuggyFunBunny says:

    Date and Pascal (at least before he went gaga) books should be kept near to hand (I’ll toss in Weikum & Vossen and de Haan & Koppelaars for cardio). That is, if your definition of DBA mostly means building schemas. If your definition means mostly doing backups and restores, then the ref manuals for your specific database.

    The use of the word “programming” when discussing RDBMS always makes my teeth hurt, because (modulo Prolog) “programming” is all about iteration. You do make the point. To a large extent, building normal form schemas, and database centric applications (as opposed to client centric applications) with them, is determined mostly by the suits in the corner offices. They mostly don’t have a clue, and chase the latest O’Reilly meme. In other words, having the latitude to *be* a skilled DBA, rather than just a file form baby sitter, is 99.44% of the battle. Find such a situation, and you’ll bloom.

  3. drsql says:

    Timothy, Amen my friend. Practicing doing things right is 100% of the job. And without knowledge of the common right way to do things, you are destined to do it wrong. But learn the common right way and you can easily improve upon what is right. I value originality and ingenuity more than almost anything else in a coworker, as long as they know why the previous way was done that way, and why their way is an improvement. I know most of the bad designs/code I have been involved with was because I hadn’t mastered the right way yet… Usually because there was a deadline and not enough skills to achieve it.

    Thanks!

  4. drsql says:

    Good point Buggy…

    Though I think your two definitions of DBA ought to overlap some. If you are mostly writing code, then having fundamental relational theory knowledge is important, but even a DBA doing backups ought to know why things work like they do, and vice versa.

    And I am not sure you should be too in pain over the work programming. To me, that term simply implies making a computer do thing via some sort of code. There are lots of styles of programming functional, procedural, object oriented, relational, etc, and kind of the point of this post was that it is a skill that needs to be cultivated. But you are correct about the suit thing. Originally, I wanted to make this column anonymous so I could be way over the top honest. But that picture (sadly for my wife) is actually me and that name Louis is actually my name… Which is to say that anything I say that resembles too closely some actual event in my life could be used against me. I once wrote a set of articles about interviewing and was nearly reamed out over it until it was made clear that the experiences I was reflecting were incredibly common (9 out of ever 9.99 resumes I see have gross over exagerations, and 9 out of 9.9 have complete lies…)

  5. Louis Somers says:

    According to my observations “Interest makes better” (perfect will never be achieved by human effort). Every scenario is subject to having contrasting best practices. Aptitude (I prefer it with a double ‘p’) is one buzzword that bubbles up in my mind (click my name to look it up).

    Before I was married I succeed in convincing my wife that if we would use the duodecimal system (base 12) instead of our decimal counting system to learn our tables at school, despite needing to learn two extra tables we would have to memorize less numbers because we would have more iterations. She didn’t understand what I was talking about. She understood very well that 10 was only divisible by 2 and 5 (leaving 1 out of the picture), thus for the tables of two we need to memorize 5 numbers that are repeated and for the tables of 5 we only need to memorize 2 numbers that iterate 5 times (then simply get the prefix right). She also could follow that 12 is divisible by 2,3,4 and 6. However she had never heard of a duodecimal system and never thought twice about how that ‘zero’ token actually worked. Our romantic evening ended with me telling her a long story about Fibonacci introducing the zero…

    She impressed me, she actually took the time and energy to learn about the zero and understand my point about the duodecimal system. A point I was not able to bring across to persons with a much higher education than hers. All others refused to invest their thinking energy in an idea that seemed too radical for any practical use. The difference? Interest! She was interested (maybe being in love helped, but I can’t imagine anyone being in love with me in the first place). Interest in the problem can give a drive in the direction of perfection.

    I’m wondering, if I teach my kids to count (using the duodecimal system) before they learn it at school, it will probably boost their physical/technical performance but damage their perceived performance in the observation of the frustrated teacher :-)

  6. Anonymous says:

    When walking up to the building where I work, I can see CCTV cameras placed here and there for monitoring…

Leave a Reply