“Make it work first before you make it work fast.” [Bruce Whiteside, Woodridge, Illinois]

Abstract

Writing the program (coding) is an important part of any software development project. Frederick Brooks said it’s 17% of huge software tasks. I would us say: Mostly it is about 50% for small to medium software tasks. You will find programmers who think this is 100%. But if you do not ask your customer or if you do not give any presentation or introduction to him then let us agree it was a poor job.

All you need to know about coding is written here, I think:

Programming Pearls, Jon Bentley, ISBN 0-201-10331-1 (I have the newer version, too - but I prefer the first edition)

More Programming Pearls, Jon Bentley, ISBN 0-201-11889-0 (on page 125 he shows Napoleon’s disastrous Russian Campaign - one single picture tells the whole sad story)

If you are really keen on programming, consider also:

The Elements of Programming Style, Kernighan and Plauger, ISBN 0-07-034207-5

Writing Efficient Programs, Jon Louis Bentley, ISBN 0-13-970244-X

The Surgical Team (Harlan Mills)

For 10-people programming teams Harlan Mills suggested:

  1. The Surgeon. This is the chief programmer. He needs 10 years experience, and he personally defines the functional and performance specifications.

  2. The Copilot. He can do any part of the surgeon’s job, but is less experienced. The surgeon tests his ideas with him, but he does not need to follow his advice.

  3. The Administrator. He handles money, people, space, and machines.

  4. The Editor. He criticizes, reworks, and completes the surgeon’s documentation.

  5. Two Secretaries. They work for the administrator and for the editor, one each.

  6. The Program Clerk. He is responsible for all machine-readable and human-readable files. He transforms the programming from private art to public practice.

  7. The Toolsmith. He will construct specialized utilities, catalogues procedures, or macro libraries.

  8. The Tester.

  9. The Language Lawyer. He finds neat and efficient ways to use the programming language to perform difficult, obscure, or tricky things.