• Personally, I think the most common mistake made by developers is also the most common made by DBAs; being blinkered.

    The app and the database are two separate tools that, when used in conjunction, provide a solution to a business problem. However, whilst they are separate tools, there's a large overlap in functionality - some actions you may want to perform could be done by either app or database, albeit not necessarily with equal efficiency. I've seen many developers who'll only think about offloading functionality to the database when they physically cannot perform it in the app. I've seen many DBAs and DB developers who want to do pretty much everything in the database and only see the app as a bit of prettification for the users to look at. Both approaches have ended up with hugely inefficient solutions. Just because you can do something in a particular place doesn't mean you should.

    The most effective solutions I've seen have been put together by people who understand the strengths and weaknesses both of their programming environment and database platform, and have distributed the work across both areas according to those strengths. It requires a particular attitude of openmindedness, and for all too many developers and DBAs that means a rather uncomfortable cultural change.

    OK, I'll get off my hobby horse now.

    Semper in excretia, suus solum profundum variat