↑ Home ↑


A Plain Man's Guide to Software

Written by John C. Harwell
Illustrated by Rowland Emett

Click on the images to enlarge.

In August 2015, I was looking through my directories and came across this 1965 brochure by John C. Harwell. The HTML and GIF files were dated February 2006 and I have no recollection of where I found them on the Internet back then. An online search for the brochure's title and author produced no reproductions of the brochure, not even the web version I downloaded. I would be happy to credit the person who compiled the original web page.

The obvious draw for me were the illustrations by Rowland Emett (The Rowland Emett Society; Wikipedia). See his book, one of my favorites from childhood, New World for Nellie.

I was able to find a few references to the author, John C. Harwell. Simon Lavington, in his book Moving Targets: Elliott-Automation and the Dawn of the Computer Age in Britain, 1947-67, had this to say (Language H was a COBOL-inspired programming language):

Incidentally, Michael Irish, who joined NCR straight from college in January 1961 and remained for 10 years, believes that the 'H' in Language H stood for John C Harwell. This has been confirmed by others [24]. It is known that John Harwell was Manager of Computing Services at Honeywell Controls Ltd. in London in 1962 and 1963. He later moved to NCR and then, in about 1967, he founded a software house in London called Harwell Data Processing [24].

In a May 2001 posting on computer-programming-forum/48-cobol, Greg Hayes related the following:

I wrote 1/4 of COBOL Compiler in 1967 for ICL 4100 (also known as NCR 4100 and Elliot 4100, 4120 & 4130 models) ...

Our COBOL compiler took a year approx. and about 10 man years cost. It was contracted out to a software hou[s]e called Jack Harwell Data Processing. Jack Harwell had a language name[d] after him that he invented while at NCR called Language H.

In the 1980s, Inmos developed a microprocessor called the transputer (Wikipedia) intended for parallel processing; occam was the primary programming language. (I interviewed with a company in 1990 that was using transputers. I had previously read about transputers and, in some detail, about occam, but I was being recruited by my old boss to write VAX/VMS device drivers. Maybe I would have taken the job if I'd gotten to develop transputer software!) Interestingly, the Occam User Group Newsletter (No. 3, Summer 1985) reported John Harwell as a member:


Members who joined or moved between 12 Dec 1984 and 7 June 1985.
JC Harwell Esq, Harwell Data Processing, 7 Swallow Street, LONDON

Also see the complete 1966 calendar from Honeywell Computers, illustrated by Rowland Emett and consisting of the cover and six pages for each pair of months. (Images posted on Flickr by a talented photographer, Bernie, in his photo album, The Honeywell Years.) Note that the calendar illustrations are from "The Plain Man's Guide to Software"; the cover illustration is not included in the version of the guide below. Click on this image to enlarge:

[Calendar cover]

Without further ado, below is Harwell's and Emett's brochure, in the original formatting of the web page I saved way back when. The original GIF images were apparently scanned from the actual brochure, were muddy in appearance, and what was printed on the back partially showed through. Therefore, I cropped the brighter, sharper, corresponding images from the calendar and resized the resulting JPEG images to the approximate size of the original GIFs.

Published in 1965 by


in the interests of better software understanding

Written by J Harwell

Illustrated by Emmet [sic]


Our subject is not computers, because computers are a mass of wires, transistors, cores and other hardware. What we are concerned with represents a financial investment as great as that of hardware, but is itself invisible and quite intangible. We could call it program. But programs tend to be specific. They convert the general-purpose electronic digital computer into a special-purpose instrument. We are here concerned with a much wider notion namely the organisation and systematisation of programming generally. This is called software. It is obviously complementary to hardware. It maybe subject to patent; it certainly is subject to copyright; in any event it represents a very valuable property which costs a great deal to produce and which can save a tremendous amount of money by its proper use.

Software is as essential to the running of a computer installation as the structure of command is to the running of a military battle group.

data representation

It is perhaps an unremarkable feature of an electronic digital computer that the data with which it works consists of digits. It is digital because it works with digits. Originally a digit was a single item, perhaps like a finger or a toe. Today it generally means a numeral. One can create numbers by forming a string of numerals. Similarly a digit can be a letter. One can compose words by forming a string of letters. Just as there are ten numerals in our decimal system, there are 26 letters in our alphabet. This gives us 36 digits. Common usage requires many other digits as well, for example, comma, dot, open bracket, close bracket, asterisk, question mark, exclamation mark, percent sign, and so on, to a considerable number. In common usage we find about 56 or so and in special usages we may find almost 100. If one brings in both upper and lower case letters and the Greek alphabet and the full range of mathematical symbols plus the logical symbols and control characters for teleprinters, one finds the number going even higher. To be meaningful as a digit it is necessary for it to be recognized. Recognition by a human being involves each digit in having a distinct shape by which the human eye can recognize it.

For a computer, however, to recognize digits by such arbitrary shapes would require very expensive and elaborate electronic devices so the computer uses a much simpler means of distinguishing one digit from another. The designer of the computer first ascertains how many possible digits there can be. The number normally accepted is 64. This number is chosen because 6 binary digits, any of which may have the value plus or minus but no other value, can in combination provide 64 distinct patterns with each of which one human-type digit can be permanently associated. Thus if the human-type digit is converted into what is called its 'six-bit binary pattern' on input to the computer and provided that the reverse pattern happens on output from the computer all calculation and comparison done inside the computer can operate without confusion on groups of six binary digits each group representing one human-type digit.

In this way, and with suitable electronic logic, arithmetic can be done upon numbers, which are groups of numerals (each of which is a group of binary digits) and comparisons can be carried out upon words, which are made up of groups of letters (each of which is made up of a group of binary digits.) So we can see the beginnings of a hierarchy where very simple elements at the bottom can be grouped to form more complex units higher up. This process continues through programming right up to the highest level of software. It is the subject of this brochure.

computer organisation

There are two aspects to computer organisation, the intimate and internal on the one hand and the public and extemal on the other.


The most important aspect of a computer's internal organisation is its memory. The memory holds digits as described above. It matters a great deal to the owner of the computer how many digits the memory holds and how fast it can retrieve and present them to the controlling unit. Besides the memory the computer contains a master unit which is able to interpret groups of digits as instructions to itself. This unit organises itself by keeping a note of the position in memory of the last digit which it consulted. Thus if it proceeds through memory in a consistent manner a sequence of instructions can effectively be carried out by the unit.

The nature of the instructions which the computer can carry out is determined by the designer of the computer. Some computers can cause electric bells to ring, but in general, instructions are of the kind which examine digits at specified locations in memory and carry out addition and subtraction on groups of digits.

In summary, the memory contains numbers which are groups of digits, it contains names and words which are made up of groups of alphabetic digits, and it contains instructions to the computer which are made up of groups of digits also; and above all the master unit in the computer takes very good care not to mix up instructions with data.


The computer must communicate with human beings. The two points at which it must do this are on input of data to the memory from the outside world and on output of results of calculation, produced in memory and to be presented to the outside world.

On input the computer will read documents which, of course, are made up of rows (or lines) of digits organised, probably, in groups as words or as numbers, and it will input punched paper tape which consists simply of a string of digits already coded from their normal human shape into patterns of noughts and ones, or holes and blanks, and it will read punched cards which again are rows of digits coded from their human shape into a special pattern.

On output the computer will take digits from memory and produce them in visible form as lines of print on documents or as a sequence of groups of punched holes on paper tape or as a sequence of special punchings in a punched card.


Programming consists of writing out the instructions which the computer is to perform. Each instruction does very little - it might be said to have a very low power compared with the amount of processing which has to be done in total. To write programs demands great skill and is a very exacting task since the computer performs every instruction regardless of whether it is reasonable, taking into account the circumstances. The computer operates very quickly and it takes a very large number of instructions to occupy a computer for more than a few seconds.

Although the computer can perform all the instructions in a given program within a few seconds of starting, nevertheless it can be occupied upon that program for many hours. This is due to the fact that it is being presented with fresh data upon which the same calculations (with perhaps minor differences depending upon the values of the data) are carried out repeatedly.

So we now see two particular points which make the computer a powerful tool for processing information of all kinds. We trust in its ability to process groups of the simple primary digits plus and minus or nought and one, and groups of groups of these digits, and groups of groups of groups of these digits in a hierarchy without limit; secondly the ability to repeat a process any number of times with such variations as may be required by the data. Two deductions may safely be drawn: one, that the advantage of using a computer increases in proportion to the depth of the data organisation and, two, that the presence of fairly standard patterns in the data permit long and extremely productive runs to be carried out by the computer. And both of those deductions lead us straight to software, which we now discuss.


The two aspects of software which most concern the user are its organising and controlling functions exercised over normal computer programs, and the saving in cost which it permits through making programming easier and therefore quicker and more accurate, and as a result much cheaper. The three main functions of software are:

The first of these makes the output of the programmer many times higher than it would be if he were to write in machine instructions. The second of them makes the use of the computer much more efficient in that there is no time lost between programs which are called by the software in quick succession and are provided fully automatically with the requisite data. If a program runs into trouble it is removed at once from the computer so that it can be examined by its author at leisure and without holding up the work of the computer. The third removes the need for a programmer altogether and, within the narrow field in which the particular piece of software is effective, permits someone who is familiar with that field to put together any program that he wishes to run.

There are, of course, many other kinds of software. But the purpose of them all is to increase the ease with which a computer can be put to work and where possible, to increase the productivity of programmers, operators, and the computer itself.

three analogies elaborated


Only the gourmet in a restaurant would give detailed instructions to the chef on how to prepare his dishes. The ordinary diner is content to order the items given on the menu. He might ask for Sole Bonne Femme; garnished he might add; and I shall have a bottle of No. 84. With these rather brief instructions he initiates quite complicated activity in the kitchen. Without going into a lot of detail the diner can order for himself a particular food, cooked in a particular way accompanied by particular vegetables and provided with particular sauces. In order to do this he has learned how to order in a restaurant and he has in front of him a menu from which to see the dishes which the restaurant provides. In addition to this he has confidence that the restaurant will respond correctly in every detail to what he intends.


So you take each invoice, Miss Broadwick, calculate the discount and strike a total. And keep doing that until you have exhausted this pile.

That quotation might reasonably be heard from any Office Manager explaining a routine clerical task to a new employee. Instructions in similar terms ought to be acceptable to a computer. If such instructions are acceptable to your computer then you have good software, if they are not then perhaps your software could be improved.

When instructing an employee in office procedure it is not necessary to go into very great detail. It is not necessary, for example, to tell the employee to take each invoice by its corner and move it on to the work space on the desk, then to press the pencil between forefinger and thumb, then to move the pencil through the air towards the invoice, and position it above a certain digit on the form, then to lower the pencil and write alongside such digit some further digit which is a transformation of other digits. To go through such a verbal procedure would be nonsense. The invoice clerk would think her manager to be mad. Yet in instructing a computer on how to go about the same task it is not uncommon for such instructions to be written. If the computer has inadequate software then all instructions to it must be given in its own language, which, of course, is very detailed and reflects the general purpose nature of the computer design. The Office Manager, however, is not interested in the enormous detail which the computer is capable of, he is interested only in the standard of detail which he himself has to deal with, and that is a very much higher and more sophisticated level than that of computer instructions. To him detail is the substance of work, leaving out of account all of those procedures and action which he knows to be either obvious or already a standard feature of the job being done. It is no part of his interest to spell out the obvious in a strange and rather awkward form of coding. Similarly, if something goes wrong he does not wish the computer to jam or break down; he expects it to do as his clerks do when a similar situation occurs, namely to extract the faulty document and refer it to him personally. This process should neither hold up the progress of the rest of the work, nor should it lead to anything disastrous happening to the unfortunate document.

Why also should the computer not provide for the standard patterns of data movement in an office? For example, invoices, despatch notes and other documents will invariably move from a desk where one process is carried out to another desk where another process is carried out; perhaps on occasion there will be provision for some documents going one way and some another according to the nature of the document. If not only the calculation to be done upon documents but also the routing of documents through the office has to be specified to the level of detail required by the computer's own micro-steps, then instead of having only to specify his work the Office Manager finds himself having to program or cause to be programmed a computer in irrelevant detail.


The director of a large industrial firm is at the apex of a pyramid of control. He takes decision appropriate to the organs of execution upon which he can call. If the organisation is to operate efficiently as a unit it is not proper nor practicable for him to attend to the intricacies which are being carried out by his subordinates. If there is a failure by one of his executives so that he does have to attend both to his own level of operation and to the lower level of detail then his efficiency and his grasp of the whole will falter. Good management works upon a unit of operation for which adequate executive organs exist and are reasonably harmonious in the degree of detail which they compel upon the manager's attention. Much software resembles management functions in the kind of hierarchical growth of which it is capable and in the supervisory, monitoring, and information feed-back facilities which it offers.

software as capital investment

It is a common fallacy, joyfully agreed to by all computer users, that software is free, that it is provided free of charge by generous computer manufacturers. That is not the case. Software is very expensive indeed, and requires many man-years of effort to create. It is provided, and is regarded as important, for this excellent reason that the improvement in productivity which results from its use is very large. If, instead of employing 20 programmers a computer user finds that he requires only 10 programmers because the programming load is so much lightened by the availability of suitable software, then he has made a saving of 50% in his current costs. On any basis of accounting between capital and revenue it is unlikely that such a saving would be reckoned at less than £20,000. The software may have cost the computer manufacturer £100,000 to produce. So if five users make use of the software and thus make a saving of £20,000 each the National Economy is neither better nor worse off so far as the effort expended is concerned, but each of the 5 users is £20,000 better off: if, however, 100 users employ the software, then the saving is multiplied by a 100 instead of by 5; 100 persons benefit to the tune of £20,000 each, the manufacturer who created the software is no worse off than when he was providing the software for a small number of users and the National Economy is very much better off (by £1,000,000) than otherwise it would have been had no software been provided.

Another way of looking at investment in software is to consider that programming makes a general-purpose computer into a special-purpose machine designed for the job in hand. The cost of programming it for that job might be reckoned as the extra cost of fabricating the special machine. If the software is so effective as to save the user from employing programmers at all then he might consider himself to be acquiring a special-purpose computer to do his work at the price of a mass produced general-purpose one. And it seems a very reasonable calculation too.

Programming is very, very costly. Software comes to the users free with the computer. It is a point well worth the prospective computer user's careful consideration whether the software provided with the computer will save him merely £5,000 per year or £50,000 per year. Certainly it will lie between the two.


When you buy a computer ask about the software.

"A Plain Man's Guide to Software" (1965), written by John C. Harwell, illustrated by Rowland Emett.

Alex Measday  /  E-mail