The Rise of the American Programmer
c 1994 Michael C. Daconta

I. Introduction.
	My name is Michael Daconta, author, programmer and founder of a Virtual Corporation that is today building software products.  In this paper, I'd like to refute some incorrect views on the American Programmer, discuss software methods I have seen work and lastly look at the bright future of the American Programmer in the expanding Global Information Market!

II. The Problem.
	Ed Yourdon, a well-known proponent of structured programming, is WRONG.  He attempts to address the problem of software quality and productivity by inventing a crisis to support his solution.  His book, "Decline & Fall of the American Programmer", is his self-serving attempt to promote his own agenda.  His tactic for doing this is to promote fear and preach destruction for those who do not follow his structured methods.  The structured programming method has been a proven failure in the majority of cases.  In fact, structured programming is the chief cause of "the mythical man month."  The entire object-oriented paradigm is based on the philosophy that overlaying external design processes on top of software development does not work.  Of course, Ed Yourdon does not agree and he is quick to threaten organizations that do not invest ($30,000 per programmer!!) with extinction!  Ed Yourdon is chiefly defending Computer Aided Software Design (CASE) which essentially attempts to automate his generation's structured programming methods.  Let's look at why CASE is a failure.

	The problem with CASE is that it is too expensive for the little benefit derived from it.  The majority of CASE tools simply draw and print fancy diagrams and data dictionaries!  Some produce code stubs to start your development.  Few have attempted full-blown code generation with mediocre results.  Unfortunately the case vendors sell these fancy drawing tools for $40,000 to $70,000 dollars (and up)!!  Only now are we seeing some vendors putting out low-cost CASE (for example Rational Rose by the well-respected Grady Booch).  The majority of companies (which happen to be small and medium sized businesses) have rejected CASE mostly because of cost.  Instead they have chosen plug-components and objects.  Visual Basic, Next Step, OLE and Open Doc are good examples of this.  Pluggable modules offer real functionality.  If a programmer is going to build an application by the "connect-the-dots" method, then by-God it better give the company a working prototype (though maybe not the most efficient) and not just fancy diagrams!!  Let me tell you the best investment my company ever made in "CASE": the purchase of a white-board for every programmers office!  This simple step dramatically increased software design, productivity, and quality!  Now let's take a look at some solutions to the problem of Quality Software.

III. Solutions.

   A. Simplicity of Design.  
	This is the most important element of any software project.  Design is and must be first; but only simple design.  Here is the ONE-SENTENCE-RULE: if you cannot state the function of the software in one clear sentence, then it is improbable that you will successfully code that system.  Now you may clarify that sentence with a short paragraph but that is it.  Your design MUST fit within that one paragraph.  The implementation may be millions of lines of code but the design of the system must be simple.  In the majority of cases, if you fail to have a simple design, then you either do not have a correct solution or you do not really understand the problem.

	Prototyping aids simple design.  By continually working with the user in an iterative cycle, the emphasis is placed on solving the problem first.  The "heart" of the matter is quickly reached and the peripheral issues are delegated to the sides.


   B. Talent.  
	Talent is the primary ingredient for successful implementation.  Simplicity is for design.  Talent is for implementation.  The goal of the manager is to marry up the talent with the idea.  Lines of code and function point analyses are irrelevant.  I personally know programmers who can turn out 30,000 lines of quality, functional code in 2 weeks.  I work with the military, and I chuckle when I hear the military standard for code is 10 debugged lines per day.  HA!  What a joke.  When the design is simple, and you have talented people on the project, the implementation flows naturally without regard for how many modules you need to implement the design.  With talented people, you trust them to be creative and produce a better implementation than you originally envisioned.

	Americans are grasping this principal and running with it!  Management is rampant with Quality Circles and organization development (OD).  The Saturn auto company (a well-documented, OD case study) is creating and selling quality cars.  Tom Peters is preaching skunk works and project teams.  And the information highway is spawning tele-projects and virtual corporations!!  These are exciting times!!

   C. Profiling and Reliability.
	In this area, I strongly agree with Ed Yourdon.  These are two issues where automated tools are needed and where management needs to devote resources.  Profiling aids tight, efficient code.  Reliability testing insures dependable software systems that can handle mission critical applications, hospital systems, and many other key components of society. Of course, the devil is in the details so let's look at some lessons learned to help us with those details.

	The lesson of the C language is that more abstraction is not always better.  In the context of profiling and reliability, C has proven successful by staying close to the machine.

	The lesson of C++ reusable libraries is that you cannot trust just object libraries.  You must get the source code.  Also, be wary of getting locked into one vendor.  The access to source code usually prevents this.

	The lesson of the GNU project is that we need more tools but they should be at a reasonable cost.  Translation - almost free!  The areas of profiling and reliability in software are so important to the entire industry that the solution should be widespread. 

   D. HyperMedia.
	One of the root causes of poor software quality and the failure of CASE is that technology is a fast moving train.  CASE repositories have failed to answer why should you store outdated technology?  For example, why should you store tons of code that is mainframe-specific, when your entire organization has just decided to transfer to client-server systems?  Ooops.  Let's write off that $300,000 CASE repository product for the mainframe.  Poor software also results from this onrushing future.  "Just keeping current" has become a major obstacle to the modern programmer.

	The technologies of hypertext, search and retrieval and multimedia are making it easier for a programmer to both learn faster and quickly find the references he/she needs.  Good examples of this are Think Reference and Windows hypertext help.  Voice recognition and Multimedia will even make this process better.

IV. Conclusion
	Americans have historically been ill-prepared for conflict.  We have gone into every major war with a disadvantage but were able to correct our course and win the war.  I think this is tied to our optimistic natures.  We don't want to be always looking over our shoulders for the enemy.  I'd like to leave the hysteria to the Ed Yourdons of the world.  In fact, I hope every foreign competitor reads his book and implements his methods.

	Let's look at our progress:  Object Oriented programming shows promise in its insistence on the primacy of data and matching the problem domain to the language domain.  Prototyping and pluggable components will enable better and faster solutions to immediately pressing problems as well as greater end-user participation.  Virtual Corporations and flexible project teams will allow the rapid connection of talent to ideas!!

	Lastly, let's look at the future.  First of all, Americans love technology and science as evidenced by our obsession with Star Trek and Asimov's robots! We will not give up the fight so easily!!  Second, the global information market is an expanding pie!  We are not in a zero-sum game.  Ed Yourdon fails to see this.  It is not that India will steal from the U.S. because both will fall short in filling the global demand!  We have just started the Information Age!  Therefore, in conclusion, although the American Programmers role may change (with the effects of visual programming and objects), we will surely flourish and increase in numbers!!!

V. About the Author
	This paper was simple and short by design.  I do intend to take the individual ideas expressed within and expand upon them.

	I have been programming for over ten years and have authored C Pointers and Dynamic Memory Management published by John Wiley & Sons.  I am currently writing C++ Pointers and Dynamic Memory Management, which is due out this summer.  Most recently, I founded a Virtual Corporation called Virtual Magic, to produce quality, affordable software with other programmers, artists and engineers across the country.  Our Newsletter, Virtual Inc., reports on the growing trends of online business, virtual corporations and telecommuting.  If you would like to discuss software quality, work on a virtual project, or learn more about Virtual Magic and its products, email me at vmagic@aol.com.  You can also call (800) 269-8825 (Mon. thru Fri.) to get a free sample issue of our newsletter.

 - Mike Daconta
    Author of C Pointers and Dynamic Memory Management
    Programmer University Int/Adv C Instructor
    President, Virtual Magic, Inc.