I took a course back in my second year at university called Software Engineering I. It was a requirement for the program I was in, and turned out to be one of the heavier duty courses I would end up taking. It offered me my first taste of writing real, actual software.
Needless to say, it was a lot of work.
As part of the course curriculum, we learned about two software engineering practices that are in actual use in the real world: the Waterfall Model, and the Spiral Model.
The Waterfall Model
The Waterfall Model was a bit of a first attempt by its inventors at adding structure to the process of building software. Briefly, the software development is broken down into five separate stages: requirements gathering, design, implementation, verification, and maintenance. As each stage of the process is completed, the development team advances to the next stage. Previous stages are generally not revisited. What is done is done.
This method tends to be the goal for large, monolithic pieces of software that have a well-defined set of requirements. I spent the summer working on a new air traffic control system back in the nineties. This was the engineering model in use for that project.
More often than not, the Waterfall Model tends to be not much more than a programmer’s pipe dream these days. The world changes too quickly for the ideology to flourish. By the time requirements are figured out, designed, and half developed, the initial ideas are out of date. The model no longer represents reality at that point, thus it is rarely an effective way to produce quality software today.
And if I were building a self-diagnosing piece of software like Lore, I would likely create it in such a way that it employs the same model I used to write it with.
The Spiral Model
The Spiral Model for developing software borrows much from the Waterfall Model. Essentially, it is the first half of the Waterfall Model, except iterated upon over and over, until the truest possible design is agreed upon. After which point the second half of the Waterfall Model is executed.
Whereas the Waterfall Model tends to ignore change, like it didn’t happen, almost with an attitude of, “you made your bed, now you have to sleep in it”, the Spiral Model attempts to incorporate change at the earliest possible stage. Almost inviting it. Attempting to mitigate difficult modifications at a later stage in the process. Thus building the best, most appropriate end product possible.
It is the basis for most modern day software engineering processes and projects. It of course has it’s fair share of problems too, but there is no question that it is a much more effective methodology when it comes to building software.
And of course I’m sure you can guess where this is headed: it is in all likelihood the development methodology used to build and run Lore’s younger, non-evil brother, Data.
Which Lifestyle Engineering Model are You Running On?
And now for the hard part: Data is in the minority. Not just because he is a robot, but also because he runs on the Spiral Model.
Everyone starts life by learning the basic skills. We then go to school to learn about something we are possibly not all that interested in mastering. Because we are simply too young to know. We finish school. We start a career. We buy a house. We have children and watch them grow up. We keep at the career even though we likely don’t enjoy it. We pay the house off. We finally retire. We travel a bit. We work in the garden a bit. We die.
It is completely human nature to live by the Waterfall Model. Likely because us humans love to accomplish things. We don’t like admitting failure. At all costs, we avoid going back and changing what we thought was once right. That can be embarrassing! Not to mention a lot of work to fix.
But the truth is, the Spiral Model is the lifestyle engineering approach we should aspire to. Always evaluating. Always actively looking for ways to improve things. Then incorporating them at the earliest convenient time.
Is this house really the ideal place for us to live? Maybe it is time to move on. Will I enjoy spending the next twenty years working my career? Maybe it is time to find a new one. Or a way to not have one at all.
Do I love walking my friend’s dog? Maybe it is time to get my own dog. Do I feel good when I exercise? Maybe I should get a bike and use it to get places. Do I hate living pay check to pay check? Perhaps it is time to ditch cable and daily cappuccinos.
Don’t be afraid of change. Relish it. Use it to your advantage. That is the key to engineering your ideal lifestyle.