Systematic and Structured Programming
The Background
The following is a way to develop programs that has evolved over a period of about twenty-five years to help students succeed with their introductory programming course. It is systematic, it is organized, and it works. That does not make it the one and only way to create programs (it isn't), but it is far superior to the hacking, guessing, and messing around process that many people seem to want to try first.
This process is used throughout this reference and strongly recommended for all introductory students; your Instructor will indicate to you if it is required in your course. Once you leave this course and go on to others, you may have your choice of program development strategies, although you will actually be given more stringent specifications if you go to work for a software development company. However, whatever system you choose to use hereafter should incorporate organized strategies as opposed to haphazard defaults. Enough said.
There are several reasons to use an organized program development process:
- It is true that most people can slap together trivial programs without working their way through a design and development process. As long as you plan to write trivial programs -- which might get you about halfway through most introductory programming courses (and nowhere in industry) -- hacking will work, at least to some extent. If you intend to write non-trivial programs, and possibly even get paid for it, you simply must have an organized and refined strategy for doing so
- The number two goal for a quality program is that it works. The number one goal is to write programs that other people can read and understand without spending very costly hours trying to figure out what it was you were trying to do. You can no more guarantee that your program is bug-free than you can guarantee that it won't rain. On the other hand, you CAN guarantee well-organized and effective program design and documentation, especially if you start with a well-organized and effective development process. Finally, you should be aware that for most products, including software, the working life of the software will be much longer than the development time, assuming your software product was of good quality. This means that in industry, much more time -- and money -- is spent on maintenance than on development; your program development must support that condition
- There are rumors that students taking introductory programming courses are actually enrolled in other courses. If this is true and you prefer to hack your way through programs, taking other courses is very foolish. However, if you plan on taking this course and others all at the same time, you had better have an organized and systematic way to design and develop your programs (and for some introductory courses, it must be this one). There is simply not enough time, with or without sleep, to try to hack programs together and remain coherent and reasonably healthy (and then there's that GPA thing . . . )
- The best has been saved for last: The number one problem students have with introductory programming classes is that they get psyched out by how "hard" it appears to be to write non-trivial programs. Truth: It IS really hard to write readable, quality programs that work. However, just as it would be rather foolish to build a four-story building in an afternoon without any plans, it is just as silly to develop a non-trivial program under the same circumstances. One of the fundamental laws of programming is NEVER SOLVE BIG PROBLEMS. Whether you are fixing a leaky roof, or developing a massive database, no intelligent professional will try to do the whole thing at one sitting, and without advance planning. The smart ones will break the problems down into easily conquerable smaller components . . . and the others will flounder. There is no in between
This is just a brief list of reasons why you want to use a refined and structured development process. As you progress through your career as a student and later as an employee, executive, or business owner, you will identify many more reasons. Your success at any of these endeavors will be predicated on your systematic and structured approach to solving problems. You will find it worth your while to start with these strategies early.