To reduce the time to develop software
is to eliminate everything that wastes time. I know it is possible to reduce
the time to zero. That is to say remove all the time wasting efforts in
software development, what you have left is very little, and in most cases,
is just the effort to decide what you want done.
When it now takes four
hours to determine how to run a program in the background, something is
wrong. Or the forty hours just to setup Visual Studio so I can start work, I
have to consider that maybe there is a better way. The four days trying to
get Oracle to load a CSV file without reformatting it and failed then I have
to think there might be an issue with our computer software development
technology. There was nothing technically wrong with the format, just not
accepted. Hours spent just to read a file, or convert a date, or load an
image; the thousands of tasks that go into creating an application that
wastes my time.
The first time wasting indicator is: does it require documentation.
If the answer is yes, then there is a better approach. Nothing in software
development should ever require documentation. So start by listing them: The
language, APIs, functions, data transport and storage, unit conversion,
command line arguments, and so on…
Take “functions / APIs” that we use as a crutch to write software, they
always require documentation. To remove the requirement of documentation, do
not use them. Your software development time was just cut by 80%. You say.
”How do I write software without functions?” You don’t really need them, not
in the form that requires documentation. Change the concept of logic
handling and that whole time wasting effort is gone. As each of the islands
of documentation is removed, the task of software development gets easier,
The Intel Assembler Language documentation is forty seven hundred pages.
To have a system that does not need this type of documentation is a littler
harder to eliminate, but it is possible. We must get rid of the thing that
requires documentation, the Assembler Language itself. The great thing about
software is that we do not need to get rid of anything; we just need to find
a way that humans don’t need the documentation. Here we must look at what
the Assembler language is doing and do I as a human really need to know how
it is done, or do I just need to get it done. I love Assembler, but having
the single language statement to a single hardware instruction requires
documentation. The one-to-one statement needs to be done, but
only is a way that does not require documentation. To do this I will expand
the "Jane language" to handle all of the hardware instructions with access
to every bit setting without the need for documentation. We know the words,
"overflow" "underflow" "equal" "not equal" use the terms we already have and
we can control any piece of hardware without documentation.
Everyone says Clif it is impossible to reduce software development
from man-years of effort to minutes". No it is very possible and it is
needed to build the future. There is much more to it than just getting rid
of documentation, but in reality that is all that I am doing, nothing
magical, nothing hard, we loss nothing but the wasted time. Next time you
write something try and do it without documentation. There are a lot of technical
challenges, but it is more of a mind set than anything else. Once all the
documentation is gone, then the possibilities are infinite. A perfect
software development system is one that does not require documentation, or
put another way, the system is as simple as it can get.