Laila Lotfi

.NET tools Brand Manager & Simple-Talk Editor

The Exceptional DBA - A Developer's Perspective

Published Monday, June 22, 2009 9:13 PM

What makes an exceptional DBA? It depends on who you ask. In his book, How to become an Exceptional DBA, Brad McGehee gives his perspective on what it means to be a DBA, and the skills and traits that distinguish the exceptional DBA. It is the first time that anyone within the profession has spelled out in detail what the job really entails. The task isn't over, though. To be even clearer on the qualities that are required, we need to add in the consensus viewpoints of associated specialists, including developers, testers, architects, managers, and end-users.

A DBA's primary responsibility is the security, availability and performance of the company's databases, and the integrity of the data they contain. However, a DBA could get a tick in every one of these boxes, therefore making him exceptional in the eyes of other DBAs, but still fail to get peer approval from the developers he, or she, works with. The knowledge and skills of the DBA whose job it is to support a development team must extend beyond the database, and into the realm of the application architecture. It is the only way to appreciate the problems that developers face, and to be able to provide a solution that allows everyone to meet their obligations.

A DBA cannot afford to be too inflexible regarding opinion of the "right way" to architect an application. If the team is using nHibernate, for example, the DBA needs to understand how to reconcile the performance and security issues, rather than simply retreat into a state of entrenched opposition. This doesn't require mutant brainpower, but it does require patience and a willingness to listen, empathize, and to build trust within the team. Brad certainly covers this with his usual thoroughness but it would help to get the developer's view on this, because real-life development, inevitably, is never straightforward. According to one developer at Red Gate:

"There are a few times in my developer career where I can honestly say I received help from a DBA. Some DBAs are approachable, and more than willing to advise on problem queries, and show you clearly where you went wrong. However, I can count many more times when a DBA has been unapproachable and unhelpful - occasionally condescending and obstructive. How many times have I heard a DBA say "no" to a developer based on some vague "company policy issue" or on what he personally does and doesn't like to allow in his databases. Is it any wonder that developers stop listening to you or try to bypass you?"

So what, from a developer perspective, makes a DBA exceptional? Say, for example, a DBA realizes that a development policy will not scale up as required, or will not meet the security requirements in the business. How would an exceptional DBA handle this situation, and avoid it escalating into the usual state of guerilla warfare? How far should a DBA assist in the development of the application domain model? Should he, or she, get involved even in the User Interface, to ensure that the way that data is represented to the user is in line with the business's data model? Do developers see DBAs as merely providing a service in supporting a database whose schema is provided by the developers? It would be great to get your views. If you work with a DBA that offers your development team an exceptional level of support, then why not nominate him, or her, for the  Exceptional DBA Awards, to be awarded at this year's PASS summit?

Cheers,
Laila

by Laila

Comments

 

Rowland said:

From my experience I like to see DBAs who have a well rounded level of experience in operating systems, hardware, applications, software development and of course database platforms. That's just the technical side!

I think there's a soft-skill thing too:
1) Willingness to help others without belittling or demeaning
2) Maintaining things well enough there isn't any need for heroics
3) Being calm under pressure when --say--the production database server has just lost a motherboard and you have to cut over manually from Log Shipping while everyone is demanding answers.

Nice article--Thanks Laila!
June 23, 2009 11:52 AM
 

BuggyFunBunny said:

Developers (coders) are generally (universally, in my experience) ignorant of the relational model and database.  From COBOL to java, they treat data as mud which they intend to mould with their code into a shape of their desire.


>> How far should a DBA assist in the development of the application domain model?
The exceptional DBA specifies it.  The logical and physical integrity of the database is the DBA's responsibility.


>> Should he, or she, get involved even in the User Interface, to ensure that the way that data is represented to the user is in line with the business's data model?
May be.  It depends.  The widget used is up to the coder/user/business analyst/whoever.  On the other hand, the DBA is responsible for the meaning of the data, therefore, should the Others somehow manage to mangle or even corrupt the meaning of the data through UI, then the DBA has step in.


>> Do developers see DBAs as merely providing a service in supporting a database whose schema is provided by the developers?
Yes, and this is why so many applications are a mess.  Changing the pecking order, for better or worse, is determined by Upper Management.  In succesful organization, the DBA or an Architect, will have this responsibility.  Most companies don't have Architects, alas.


In a nutshell, a plumber is not qualified to be a neurosurgeon, even if he is able to disassemble a chicken in the kitchen.  
June 23, 2009 3:52 PM
 

Daily Links for Thursday, June 25th, 2009 said:

June 25, 2009 6:34 AM
 

HowWeLaughed said:

I find a lot depends on who end up supporting the resultant app(s). As having over 20 years experience in both dev and as pure DBA (both Dev and production) - I have found those who support are far more focused in the quality and deliverables. If the dev team support, they are far more willing to listen to an experienced DBA. Those teams who are tasked only with development and no responsibilty afterwards seem the most resistant to the DBAs advice and are only interested in delivering functionailty to deadlines (often tested on small dbs in single user environment). As a result, the poor performance then has to be addressed by the 'lowly' support DBA who then has to solve problems in production immediatley and with the additional burden of trying to work within/around source code/change control. These are when your exceptional DBA skills kick in (often just the bit where you bite your tongue and dont say 'I told you so').

To give an example only 6 months ago, one developer informed me that security isnt an issue/requirement because it wasnt in the 'Business Spec' - alsa it was the production DBAs then who were deemed as having failed the Sarbannes Oxley Audit for lack of security being implemented.

On an aside I personally dont like the idea of a DBA role being that off 'supporting' a dev team, they shouldnt support - they should be part of it - a 50/50 team effort - after all we are (or at least should be) all vested in the end product. If your DBA is only supporting - you are possibly not making the best of their skills.

There is too many skills/ much knowledge to be truly exceptional in .net (or any dev language) and in database technologies - you need experts in both who work together and see (and therefore respect) each others skill set. This can be implemented by good management, and this is where I believe I have observed the true weakness of the Developer/DBA relationship to be.

Nobody seems to want to bang our respective heads together.
July 2, 2009 10:35 AM
You need to sign in to comment on this blog

About Laila

I’m currently working as a Brand Manager in the .NET tools division of Red Gate Software. I also write the .NET Reflector newsletter, so if you have any feedback on the content you want us to cover, please do get in touch.


















<June 2009>
SuMoTuWeThFrSa
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011
Finding Stuff in SQL Server Database DDL
 You'd have thought that nothing would be easier than using SQL Server Management Studio (SSMS) for... Read more...

Mission Critical: SQL Server 2008 Performance Tuning Task List
 In which Buck Woody imagines how the US military would have tackled DBA checklists for... Read more...

Simple Query tuning with STATISTICS IO and Execution plans
 A great deal can be gleaned from the use of the STATISTICS IO and the execution plan, when you are... Read more...

Switching rows and columns in SQL
 When they use SQL Server, one the commoner questions that Ms Access programmers ask is 'Where's the... Read more...

Writing Efficient SQL: Set-Based Speed Phreakery
 Phil Factor's SQL Speed Phreak challenge is an event where coders battle to produce the fastest code to... Read more...