Friday, March 11, 2011

DBAs and Developers - complementary skill sets

This is a comment on one slide from Cary Millsap's NoCoug presentation

The slide showed the skill sets needed by Developers and DBAs. He suggested that there was a partial intersection in skills.


DBAs
Developers
Operations
Algorithms
Resource management
Languages
Troubleshooting
Frameworks
Physical data design
Design
System interfaces
User interfaces
Data modeling
Data modeling
SQL optimizer
Debugging, profiling, tracing
Oracle product features
Business-domain processes

Personally, I'd match up the developer's Debugging skill against the DBAs Troubleshooting. Both are forms of problem resolution, but the developer's focus will be on algorithm/process with the DBA responsible for the Operations.

I like the thought that both need to understand data modelling. I'm not convinced where the Developer's responsibility for the data model passes to the DBA, or whether there is an analyst/architect/designer column missing. It probably varies between organizations. DBAs are definitely responsible for tablespaces and file concepts. Constraints and indexes fall into a DMZ between the two. I recall getting into a heated discussion with HJR on the old Dizwell forums about whether the DBA should be able to make constraints deferrable by default. I still think constraints are a 'logical' concept arising from the business model.

System interfaces are about the only other area I'd be fuzzy on. I'd still put these as heavily 'business/process' constructs that sit with the developers.


Any major skill sets missed ? Anything in the wrong box ?

4 comments:

Quest said...
This comment has been removed by the author.
Surachart said...

Developer skills have Debugging, profiling, tracing. What should they do, if they don't have privilege for debugging, profiling, tracing?

Gary Myers said...

It is understandable if the developer doesn't have ANY access to production, let alone something like profiling. Then it is up to the DBA to supply the developer with data if they need to work on an issue.

If a DBA won't give those privileges in a development environment, then it is a case for negotiation, bribery or managerial intervention. You can only work within the constraints you are given.

Anonymous said...

Hi, I am a developer and think, it is very important to have knowledge about the SQL optimizer, too. I work a lot with SQL queries and to avoid bad performance at an early stage I need informations about the design (table partitions, indexes) and experiences about the optimizer behavior. Then the optimizer knowledge of the DBA normally isn't used often. ;)