Developing software in short Sprints requires a different approach than traditional software development, though it seems strange to call something only a few decades old “traditional.” Winston Royce coined the term “Waterfall software development” in 1970 and he said in that very same article that we shouldn’t use it because it doesn’t really work.
Many of the things that we recognize as poor software development practices seem to have been fostered in a Waterfall environment, such as specialization, siloing of knowledge and teams, and more importantly, creating an environment where software doesn’t need to be changed and so little attention is put on writing code that can be changed. Then, when the inevitable happens for successful software and changes are needed, it becomes extremely expensive to provide them.
We think about software in a lot of ways by relating it to tangible things, because we cannot truly visualize it or understand it. We think about software construction like physical construction but they are actually worlds apart both in the skills you need and the way you approach the problem. This should be no surprise because the forces at work in each problem domain are entirely different.
In physical construction, the forces are the laws of physics but in virtual construction, we don’t have the laws of physics. However, we do have physical laws and here’s the distinction: we work with a predefined system that includes binary logic, predicate calculus, propositional calculus, functional programming, object-oriented programming, and much more to come, I’m sure. Our very understanding of modeling the world is evolving and it’s showing us a model for how we think and understand the world in our own minds and giving us ways of seeing ourselves we could never have otherwise experienced. For me, this is what’s most exciting, seeing the relationship between consciousness and software because it in itself is the little microcosm that we can look into and see another aspect of ourselves.