Material programming
Did you ever stopped and considered the difference between "programming" and "building a software" ?
In my opinion there is a big difference between the action of "programming a computer" and the action of "building a piece of software".
When I say "building software" the meaning is that "something" is going to be built, and that something would last, it won't disappear after a while.
Instead the phrase "programming the computer" doesn't mean that "something" will last.
Some people prefer to think the software development in the way of "programming" instead of "constructing something that will last".
There are groups of people that make pressure to make the sofware development a perpetual programming. Usually these people are those who gain money from acting as intermediary between workers and customers, the so called "body-rental". Of course they make more profit if the software development is considered just "people in front of a keyboard and programming".
The opposite way of thinking is to consider the software "something", not a service but a thing, that is conceived, designed, constructed, and made to last.
A software is a collection of parts, like any other product of industry.
Yes, it may consist of a very large number of parts of many different types but it is always finite. Furthermore the software can be described completely and exactly, which is not possible with physical systems.
I think that the software that lasts, that grows and is used again and again for years and years it is exactly the software which is developed with the "material" point of view.
I choose the name of "material programming" (MP) for the "building software" way of thinking software development.
A "material programmer" is an individual who knows every piece of a software in development, and treats the pieces like little parts. Sometimes he decides to remove a piece, or add a new piece, or transform a piece. Sometimes he applies a set of transformations to the software by replacing many pieces at the same time. However he always considers all the pieces equally important: in a software the smaller piece is as important as the larger one.
In MP the main objective is to maintain and expand a collection of software pieces, which are robust, self-contained, with as few dependencies as possible, and suited to be used together to build new applications.
In MP there is continuity from a project to the next, each project inherits the set of pieces of the previous and adds some new pieces. Sometimes there is a big transform but it happens only when it is really needed.
Material programming can even go through a change of the programming language because the concepts of software pieces can be maintained almost entirely.
The point of view of this Material Programming is akin to the UML methods.