I was reading an article (blog post, really) from Jim Shore today that got me thinking. In the past, I've kind of boughten into the whole idea of "building the foundation first". Because of this, I wasn't really agreeing with him on all points in this article. However, there is a certain quote at the end of the article that not only got me on board, but served as a swift metaphorical kick up the side of my noggin' (Thanks Jim :D). Without further ado, here's a quick realization to have in order to understand Jim's frustration:
In the software world, there is no reason for us to follow the practices of an industry limited by Newtonian laws. We have no gravity. There is no inertia. Lines of code have no weight.
If we want to dig a metaphorical hole after pouring metaphorical concrete, there's nothing to stop us. If we want to flip the software upside down and build a foundation after we've built the building, we can do it. Our only limits are in are heads. Once we stop thinking that software development is like construction, we'll have one less limitation to struggle with.
All I can say is that I never really thought of it in those terms before. I think I might be thinking about this for a while now.