picture by londonbonsaipurple via Flickr
Why do some developers think they can dive in and build a database application without first constructing a data model? They are violating the whole premise of software engineering which is to think before acting. Data modeling provides a means for focusing the mind and is necessary for a systematic, repeatable approach to development.
- They are not required to construct one. Many organizations lack software engineering guidelines and give their staff wide latitude for how they build applications. Many organizations also do not care how their contractors build software.
- They underestimate how data models can reduce the potential for failure. Databases are complex and difficult to construct. A data model states your plan for building a database and increases the odds of success.
- They’ve never learned about data models. Many universities do not teach data modeling. Many professors avoid the topic and instead emphasize programming.
- They don’t have time to construct one. They are inexperienced at data modeling and don’t have the chance to learn. If their employer doesn’t value the skill, they won’t be able to develop it.
- They think data modeling is a waste of time. But that’s not true as skilled developers can build applications faster with models than without.
Furthermore a model need not be complete all at once. If you uncover the key abstractions, that is a big step. You don’t have to flesh out details until you are ready to prepare a database design.
- They don’t know how to construct a data model themselves and lack access to someone who can help them. This situation is unfortunate. About all we can suggest is to allot some time to try to construct a model anyway. Often an imperfect model is better than none at all.
- They’ve been misled. Some agile development advocates spread the myth that you don’t need a data model. They say you can write code for an application directly. That may work for a simple application. But it’s a recipe for disaster for large and complex applications.
The agile folks are right in that you don’t want big modeling up front (BMUF). Such an approach is common for large government applications. In contrast, a data model is concise, gets at the core of a problem, and focuses on the intrinsic complexity. Skillful data modeling can be performed quickly, certainly well within the scope of agile iterations.
- They don’t realize how a data model promotes communication. A data model brings the knowledge of both the business and IT to bear on a problem. A data model helps the business articulate what they want. A data model gives a high level specification to IT so that they can build the software.
- They lack a data modeling tool. Even so, it is still beneficial to prepare a data model and write SQL schema by hand.
Models provide benefit in their own right. And the use of a tool provides further benefit. It’s a mistake not to use some kind of data modeling tool. It’s a further mistake not to have a data model.
- They don’t care about enterprise concerns. Developers are often rewarded for their particular application, apart from the impact on the overall enterprise. Data models are important for building applications. They are even more important for coordinating and integrating applications.
Data models are important for building and procuring quality applications. There is no substitute for the clarity of thought that a data model can provide. There is no excuse for not constructing at least a summary data model.