Next-> <-Prev
Talking Tech

Are you interested in understanding the underlying technical philosophies that guide application development?

Model the Whole Problem:

The nature of software has changed dramatically in recent years. While it once made sense to describe a series of algorithms – the cookbook steps that a program might follow to achieve a certain goal – it is now more profitable to think in terms of models.

Software is layered. At the lowest level, data is stored and modeled in related tables in a database like SQL-server. Above that, tools like Entity Framework allow us to shape data into into arbitrarily complex representations of real-world objects. Complete models can then be transmitted to HTML5 user-interface devices such as computers, tablets and phones where we can interact with them.

The shape of the model and its technical format change as it passes from one level to another. SQL data columns and rows become entities representing people, places and things with names, histories, biographies, coded in a language such as c#. Transformed into javascript and JSON, these models travel across the ether.

Models allow us to think about information at a higher level. This only becomes possible when our information frameworks are designed to automatically translate complex models as they travel between software layers. Once this is accomplished for every stage of the round-trip journey from our minds to our servers, we are freed to focus on the real-world issues being modeled.

Design efforts must continue beyond the last mile of wire. Once the model reaches a device, whether that's a computer, tablet, phone or headset, the most significant leap is yet to be made. To reach our brains, the model must be able to transform itself to and from audio-visual presentation. Our frameworks should encompass this translation, automatically rendering information and then incorporating updates.

By applying a philosphy of always programming to a model software can exhibit intelligence at each level, maximizing efficiency while minimizing grunt-work and band-width.