Software as a 4D Construct
Last week, before a regular one-to-one meeting with the head of product and technology at my company, I came to a realisation - what if software is a 4D construct?
Generally when you think of a project, you tend to think of something that progresses in only one direction, for example, designing and building a house. While I am not an architect nor a builder, I imagine the process goes something like this:
- Surveyors go to the site and assess and provide specifications and details about the land.
- An architect gathers inspiration for what the house should look like from the customer, generates some ideas and iterates on them until both they and (more so) the customer are happy and in agreement.
- A structural engineer checks over the designs and schematics provided by the architect to ensure that the structure is safe and free of critical defects.
- The tradesmen come on site and build said house using the provided designs.
Once the house is built, you would argue that it's complete, with no more work needed so long as it's correctly maintained deterministically (as in a clear definition of how it's maintained with no unforeseen changes to that routine). It exists in 3D space, and it's easy to form an idea of how exactly it is constructed by inspecting it.
So how exactly is software any different - how does it exist in 4D space?
Consider this for code:
- The first dimension is a line of code
- The second dimension is a file of code
- The third dimension is a module of code (or any other name for a collection of files of code)
When it comes to actually creating the software though, there's a fourth dimension that comes into play: time.
Due to how software projects are managed using iterative agile practices, time (or more specifically, decisions that have occurred in the past) comes into play. Even though the code might currently be in a certain state, it seems that echoes of what was written in the past or what architectural decisions were once made, even if they're no longer in effect, influences what exists now. Something unforeseen will always bite you in the backside.
What do you think?