Sunday, July 8, 2012

Definition of a Serious Programmer

Here is a definition from to C:  A Reference Manual, 2nd Edition, by Samuel P. Harbison and Guy L. Steele, Jr., Prentice-Hall, 1987, page xi (Preface):

“… serious programmers are more concerned with correctness and reliability than with programming speed.  Their programs are meant to last a generation, not a weekend.  Their programming emphasizes clarity, maintainability, and portability rather than clever tricks and the fewest number of source program lines.”

If you think about the high standards for reliable operation that were once expected of the American telephone system, then you can understand this definition.  The circumstances today are different.  I believe almost every company developing commercial software expects to ship products than have some bugs in the software.  Your bank ATMs work very reliably, but that cannot be expected from most new software products.  Shipping on schedule is the paramount concern and corners get cut to make schedule.

A lot of companies today do not last a generation, and neither do their products, so why develop software that stands the test of time better than the company creating the software?  Still, Harbison & Steele's definition of a serious (superior) programmer is a nice ideal for certain types of products.

Remember that different product types demand different measures of excellence.

Robert

No comments:

Post a Comment

Comments require my approval before they appear. Be patient. It will take a day or two for your comment to appear.