Faster Software Development
 

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, it 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, is was 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, and faster.

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.