Golden rules of engineering
- 1st rule: "If it's not broken, don't fix it"
- 2nd rule: Keep it simple, stupid
- 3rd rule: Transparent is beautiful
I've been thinking lately about how software construction process is actually a part of a larger effort, that aims to create new systems. Creation of new systems is specialty of group of people, namely engineers.
This writing is based on my experiences and studies in the craft of software engineering. I say software engineering, because engineering covers a lot more topics than just development. Engineering means thinking the system as a separate, distinct group of operations that has interactions with possibly other system or outside world. Engineering means also taking into consideration the whole lifetime of the system.
Every time new lines of code are written and put to use, a new system is born. System from engineering stand point has a few qualities that are general in nature and should be considered during the lifetime of the system. We can think of system's lifetime consisting of design, construction and maintenance. I try to list here a few simple heuristics, that I think can be utilized in large number of decisions involving decisions during system's lifetime. These are by no means of my invention, but I try to capture their spirit and discuss in separate posts how they can be utilized in software development process.