Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at
Know Yourself

A couple of months ago I commented on Eric Wise's post titled Know Your Role, wherein Eric expounded on the need for a DBA on software projects. I took exception to the rule that DBA's are required, which sparked several comments and blog posts that seemed to fall just short of calling me an idiot for thinking this way. I don't have any real objections to having my ideas questioned... I'm not arrogant enough to think that I know everything. So I took a step back and thought about it for a while, and here's what I came up with.

I believe that one of the only absolute truths that can be stated is that there are no absolutes.

Very rarely is there a clear cut line drawn in the sand. One of my comments drew upon the experience I have gained as a developer on a large project. We have no formal DBA who controls or greatly influences our database design. We do have lots of developers with a great deal of experience designing systems, as well as several who were DBA's or database programmers in past lives. I asked around a bit, trying to get a feel for what the actual SQL gurus thought of our database design. The general consensus was that it was pretty good. Not perfect, but better than most.

Along the way, I did hear a few good stories about DBA's which may account for the developer comments paraphrased in Eric's post ("DBAs only get in the way" and "I'm not doing anything fancy, I don't need no stinking DBA"). In the minds of some of the developers I talked to, the term DBA is a synonym for difficult. I heard tales of entire database designs being entrusted to one sacred individual who was the only person authorized to make changes because someone, somewhere decided that they knew what was best. Tales of insane hacks being made to the application code to work around a schema that couldn't be changed, yet no longer represented the business. I'm guessing that this extreme is what has so many developers spooked.

Now I'm sure someone can point out the inverse scenario... You'll definitely find several if you browse through archives. The fact of the matter is that "DBA" is just a label. As is "Developer." Having a bad DBA controlling the database on a project may be worse than not having one at all. Having a good DBA who fits in with the team, enabling them to build the system to the specification of the clients with as little friction as possible is definitely an asset.

I still believe that most projects don't need someone to fill the DBA role. They need a group of developers who know what they're doing, from the database up to the presentation layer. I don't think that good database design is that hard for someone who's a little clueful, but it's always a good idea to have everyone involved in the conversation throughout the development process. The more eyes on the problem, the less chance there is of something being missed.

I hope this makes sense, as I'm not sure I've presented my ideas exactly the way I intended. Keep in mind that my frame of reference for this post is based on green-field development of a project. I do realize that database lock downs may be required in some situations. I'm just taking exception to a supposed rule.

Posted 10-23-2006 11:31 PM by Jeff Perrin
Filed under:



Rich wrote re: Know Yourself
on 10-31-2006 9:17 AM

To me, it has to do with your level of comfort as a developer working in and designing the data layer and the size of the project.  Most projects I work on in .NET aren't too great in scope in terms of the data layer - a few tables to represent objects, a few lookup tables, a couple of views and stored procedures.  I'm comfortable with setting all of that stuff up.

However, I work in a corporation that has a giant legacy system for customer data. No way could I handle that and I'm grateful that there are DBAs who know enough about the system  and the data to sort that stuff out.

Also, it's really nice to have a DBA that you can call when something goes wrong with the server.

Scott Whigham wrote re: Know Yourself
on 10-31-2006 5:40 PM

Quote: "I still believe that most projects don't need someone to fill the DBA role."

So who is responsible for the data security and data integrity (including disaster recovery) then? I just think it's a rather naive approach to think that, just because you know how to do database design and write stored procedures, that "most projects don't need [a] DBA..."

I appreciate your candor and I always like to have debates about what's good/bad - it always make me think in new ways - but I really think that your argument is the argument made by someone who hasn't experienced a major failure/disruption. I just have to believe that if you had ever had a "Suspect" database at 2:00PM (or even someone hack your system) that you would not be questioning the need for a qualified, well-trained DBA for any project worth doing.

Jeff Perrin wrote re: Know Yourself
on 10-31-2006 8:03 PM

Scott & Rich,

I guess my point is that you need a DBA... When you need a DBA. Most projects don't need someone in a special role to handle everything database related. However, if there's something out of your league that's database related you'd need to bring someone in to help. It all depends on the situation.

My current project is being worked on by over 35 developers, with not one person solely in charge of our database schema. However, I'm sure that when our multiple customers each deploy the product to a live server they'll each have a host of DBA's watching over it. It's a large app, that produces very time-sensitive data. I'd make no claim that a DBA shouldn't be involved in keeping it running. It all depends on the situation.

About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Google Reader or Homepage Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of
Red-Gate Tools For SQL and .NET


SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
NHibernate Profiler
Balsamiq Mockups
JetBrains - ReSharper
Web Sequence Diagrams
Ducksboard<-- NEW Friend!


Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers


Community Server (Commercial Edition)