Was zero first then one?

At the beginning, there was a problem to solve, a process to improve, a solution to implement. The biggest problem the most abstract solution required, the most abstract architecture the simplest code snippets to implement, this is how it should be, how could it be otherwise?

The Tao of Programming depicts the problem as follow:

(§1.1) «Something mysterious is formed, born in the silent void. Waiting alone and unmoving, it is at once still and yet in constant motion. It is the source of all programs. I do not know its name, so I will call it the Tao. The Tao of Programming flows far away and returns on the wind of morning. The Tao gave birth to machine language. Machine language gave birth to the assembler.»

(§1.2) «The assembler gave birth to the compiler. Now there are ten thousand languages. Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao.»

(§1.3) «In the beginning was the Tao. The Tao gave birth to Space and Time. Therefore Space and Time are the Yin and Yang of programming. Programmers that do not comprehend the Tao are always running out of time and space for their programs. Programmers that comprehend the Tao always have enough time and space to accomplish their goals. How could it be otherwise?»

Writing understandable reusable pieces of software is a task that requires not only strong fundamentals but order and simplicity. Continuous improvement is a well-known quality assurance technique in manufacturing industry: check-do-check. Code remanufacturing should not be a postmortem task but a task parallel to the development phase.

Successful projects require united-enthusiastic teams, people that do not feel comfortable with their job will never deliver extra effort, and most of the times will not even perform quality tasks.

Selecting a technology because of personal moods is the same as selecting a technology
because it’s trendy, it’s a bad decision. Even more, the general architecture of the solution should be chosen for each layer in a manner that changing a piece do not affect all over the solution. Normally the best architecture is that selected by a rigorous team after many hours of discussion, the Architectural Design Document should be figured out in time, not only because it defines the meta-structure of the project but its development success depends on it.

No matter what the development methodology you decide to use, good analysis produces good design artifacts, good design artifacts facilitate coding phase. By selecting simple templates for analysis & design artifacts, changes to them will be done fast. Remember: «Continuous attention to technical excellence and good design enhances agility», «working software is the primary measure of progress». Hope you can find something useful here, in the same way, I hope to find something useful over there!

The aim of art is to represent not the outward appearance of things, but their inward significance. — Aristotle