Begin with the end in mind… Code First vs. Database first not the right question.

When starting any software development project one must understand the goal—what is trying to be achieved.  In business, the goal is usually related to making money or saving money (or paving the pathway for those to occur).  While that may seem simple, one must also keep in mind user satisfaction (for adoption), performance (slow software dies), hardware requirements (PC/Mac/iPad/Honeycomb/Browser/etc), the longevity of the software (will the software be running in five years), quality, flexibility, extensibility, supportability, and cost to develop/maintain (I am sure there are other factors, but these are the ones I usually think about).

For business applications, one must next gather all the inputs and all the outputs from the current process—these are usually data entry forms (often Excel) and reports.  With these in hand, only then can one start to prototype the User Experience and the Database.  The User Experience must not be limited by “frameworks.”  And the database must support both the User Experience (input data) and reporting needs (output data).  Code first or database first doesn’t matter—what matters is the end result.  Don’t use a framework that limits the user experience and don’t select an ORM that limits reporting.  In most cases, hand crafting the DB for easy reading (report writers) makes the most sense.

And when I hear NoSQL in my mind I think NoReports.

Leave a Reply

Your email address will not be published. Required fields are marked *