Custom applications used to be like houses. You’d get a call about an application someone wanted to have written and you would spend some time architecting it. Like a house builder, you’d quiz your client about the size, the number of bathrooms, the number of garages, etc. You would go about the construction of the Spreadsheet Of Needs (or however you named it) and produce an estimate of costs and fees. Then, with the numbers gathered you would architect the solution to accommodate that menu of things the customer wanted. We would architect that house on the hill to match the customers needs and all would be well (assuming they paid on time).
Custom applications aren’t really like building a house on a hill anymore. Now we build houses in existing neighborhoods, with many other applications already in place and doing things in a certain way. If we keep building our own houses, without regard for the others we’ll quickly run into trouble.
You can avoid some trouble by considering modern application development in a larger context. Lucky for us, such a context already exists: Urban Planning. A pioneering urban planner, Jane Jacobs, came onto the scene in the 20th century when urban planning was more “bulldoze and pave” than actual planning. She advocated building spaces and places so they could adapt and accommodate. Our applications should be so lucky.
“Dull, inert cities, it is true, do contain the seeds of their own destruction and little else. But lively, diverse, intense cities contain the seeds of their own regeneration, with energy enough to carry over for problems and needs outside themselves.”
Like Jane Jacobs, we can serve our existing users better and work toward a more flexible plan for the future by considering how things interconnect. Consider how things might be made at the scale the work is performed. Do you want to build 1060 W. Addison? Or do you want to build Chicago?