EVERY software development project has three concepts on the structure of software every business owner and executive should understand. There are three layers to any software project and we'll use the analogy of a house to make the concept simple. The three layers of any software project are the foundation, the framing (framing, plumbing, electrical) and the overall finish (siding, flooring, cabinets, paint, etc.).
The foundation is the structure that everything else is built on. It needs to be rock solid to support the weight of the entire structure on it. It needs to be thought out enough to accomodate all the plumbing in/out, all the electrical hook ups and the general shape and form of the house. Keep in mind expanding and changing a foundation without a house on it is pretty straight forward but once you put the structure on top of it, it gets a lot more expensive and time consuming. The foundation is the database.
The framing creates all the functional use of the house. It defines the rooms, the flow of the house, the locations of entrances, of stairs, ceiling heights and all the other uses of the house. The framing creates all the usefulness. Without it nothing on top of the foundation would stand. The framing is the application layer.
The finish is the exciting part. It's the roof tiles, the flooring, paint color, tiles, fixtures, cabinetry, siding, tubs and everything else you look at and touch. It's the bling and the style and for many people it's the curb appeal and "wow" homeowners look for. The finish is the GUI (graphical user interface).
So there you have it. Every software development project whether its web-based, cloud based or desktop development is building a house. Foundation - Database, Framing - Application and Finish - GUI.
So please for the sake of every development company you might work with don't only focus on the Finish - GUI. Yes, it's the bling, the sizzle, the exciting part of the project BUT if you don't have a good foundation and framing the GUI will never stand. Don't force a project timeline to skimp on database achitecture and application development. It takes time to figure out and code and it's largely unseen, behind the scenes work.