Michael Angstadt wrote:As a software developer, I always feel a little embarrassed for myself when I have to write some SQL and forget how to do something basic like an inner join. Do you think it's possible to be both a good database programmer and a good software programmer? Or are the two domains too complex for any one person to be an expert in both?
Well I can tell you that no matter how much I program in
Java or in SQL, I keep a collection of links to reference guides handy. I added a dropdown list of these links to my browser toolbar. There's too much to memorize, so make sure you keep resources close to you.
Also, with ORMs like Hibernate becoming more and more popular, do you think the role of the "database programmer" is becoming obsolete?
The benefit of an ORM is to speed up development, but it often produces very sub-optimal SQL code. Inevitably after you develop an application you find a few bottlenecks where you have to peel away the ORM abstraction layer and write the SQL by hand. This is called a
Leaky Abstraction.
http://www.joelonsoftware.com/articles/LeakyAbstractions.html
Some people try very hard to use the abstraction layer no matter how much it fails them. Or they try to compensate for bad code by adding more power to their server. But neither of these are an economical decision.