Rob Kremer


Practical Software Engineering

Programming as Human Performance

Classes of Computer Users

  • Professional programmers : system programmers, application programmers

  • Occasional programmers outnumber professional by about 10:1. They write for scientific research, engineering develop, marketing research, business applications....

  • Programmer hobbyists work on small business, personal and home computers.

  • Database query people use languages such as EASYTRIEVE, Query-by-example, SQL.

    In addition, there are data entry people, CAI, command/control, library information retrieval, computerized banking, wordprocessing, supermarket checkout.

    Programming Tasks

    1. Learning the language. A crude way to assess programming experience is: This is an on-going task as new features (styles of usage, languages, utilities, editors...) require continuous learning.

    2. Design of the program requires a detailed knowledge of the problem domain, experience in the application area, and creative insight. The designer must:

    It is a difficult area to evaluate since much depends on subjective value judgements.

    3. Composition involves taking a problem or design and coding it for execution. A crude classification of program size is:

    It may be an individual process, team process or a multiple team process. Management and coordination of the project is essential.

    4. Comprehension of a program is vital. Old programs are read to promote communication among workers, prepare a modification, locate a bug. There are levels of comprehension:

    This process differs for

    5. Testing is verification that the program meets the design specifications. It may involve construction of test data or merely checking the specs. It should be done by each programmer, then by someone not involved in writing the program.

    6. Debugging or error removal is best avoided. Errors may be

    Most syntactic errors are caught by the compiler. Semantic errors may be: 7. Documentation is extremely important especially with a high level of modification. Many languages facilitate self-documentation. Sometimes professional documenters are used who use a standardized format, a uniform level of detail, lucid English. It is a difficult skill which must be practised.

    8. Modification may be as much as 75% of a programming task. It requires competence in comprehension, composition. The comprehension must be done on large programs in a short time, and modifications made which do not affect the rest of the program.


    The programming environment is a key determinant of behaviour, e.g.: It also includes social interaction factors --

    Cognitive Model

    A syntactic/semantic model includes the basic programming tasks, plus a cognitive model which describes the cognitive structures that the programmer uses and the cognitive processes involved in using or changing this knowledge.

    What kind of knowledge is available to the programmer in long-term memory; what kind of processes does the programmer use in building a problem solution in working memory?

    Problem Solving

    Program composition involves problem solving. Polya (1966) suggests four stages:
    1. understanding the problem
    2. defining a plan or general strategy for solution
    3. carrying out the plan - translating plan to action
    4. checking the result - testing
    The first phase involves the problem entering the cognitive system of the programmer and going into working memory via short-term memory, and analysed in terms of the given state and the goal state. General information from the programmer's long-term memory is called up.

    The second phase is devising a general plan for writing the program, and is done iteratively, i.e. general approaches followed by functional solutions and the making of subgoals.

    Personality Factors

    Personality factors play a critical role in determining interaction among programmers and in the work style of individual programmers. Some factors are: Doktor (1976) defines cognitive style as a mode of information processing analytic or heuristic: Many studies have looked at programmer personality, and many consider it to be of more importance than other factors.

    The Myers-Briggs Type Indicator is a psychological test which is sometimes used to put together programmer teams. It looks at four dimensions extroversion/introversion, sensing/intuition, thinking/feeling, judging/perceptive.

    An individual's preference in each dimension is not as important as the interaction of preferences.

    Finding Out -- Forest or Trees?

    Intuitives Sensing types
    Like solving new problems Dislike new problems unless there are standard ways to solve them.
    Dislike doing the same thing over and over again. Like an established routine.
    Enjoy learning a new skill more than using it. Enjoy using skills already learned more than learning new ones.
    Work in bursts of energy powered by enthusiasm, with slack periods in between. Work more steadily, with realistic idea of how long it will take.
    Frequently jump to conclusions. Must usually work all the way through to reach a conclusion.
    Are patient with complicated situations. Are impatient when the details get complicated.
    Are impatient with routine details. Are patient with routine details.
    Follow their inspirations, good or bad. Rarely trust inspirations, and do not usually get inspired.
    Often tend to make errors of fact. Seldom make errors of fact.
    Dislike taking time for precision. Tend to be good at precise work.

    Deciding -- Rigid or Flexible?

    Perceptives Judging Types
    Tend to be good at adapting to changing situations. Best when they can plan their work and follow the plan.
    Do not mind leaving things open for alterations. Like to get things settled and wrapped up.
    May have trouble making decisions. May decide things too quickly.
    May start too many projects and have difficulty in finishing them. May dislike to interrupt the project they are on for a more urgent one.
    May postpone unpleasant jobs. May not notice new things that need to be done.
    Want to know all about a new job. Want only the essentials needed to get on with it.
    Tend to be curious and welcome new light on a thing, situation or person. Tend to be satisfied once they reach a judgement on thing, situation or person.

    Where's your world? -- Expressive or Reserved>

    Introverts Extroverts
    Like quiet for concentration. Like variety and action.
    Tend to be careful with details, dislike sweeping statements. Tend to be faster, dislike complicated procedures.
    Have trouble remembering names and faces. Are often good at greeting people.
    Tend not to mind working on one project for a long time uninterruptedly. Are often impatient with long slow jobs.
    Are interested in the idea behind their job. Are interested in the results of their job, in getting it done and in how other people do it.
    Dislike telephone intrusions and interruptions. Often do not mind the interruption of answering the telephone.
    Like to think a lot before they act, sometimes without acting. Often act quickly, sometimes without thinking.
    Work contentedly alone. Like to have people around.
    Have some problem communicating. Usually communicate well.

    Analysis -- Head or Heart?

    Feeling Types Thinking Types
    Tend to be very aware of other people and their feelings. Are relatively unemotional and uninterested in people's feelings.
    Enjoy pleasing people, even in unimportant things. May hurt people's feelings without knowing it.
    Like harmony. Efficiency may be badly disturbed by office feuds. Like analysis and putting things into logical order. Can get along without harmony.
    Often let decisions be influenced by their own or other people's personal likes and wishes. Tend to decide impersonally, sometimes ignoring people's wishes.
    Need occasional praise. Need to be treated fairly.
    Dislike telling people unpleasant things. Are able to reprimand people or fire them when necessary.
    Relate well to most people. Tend to relate well only to other thinking types.
    Tends to be sympathetic. May seem hard-hearted.

    Combinations of perception and judgement compared

    people who prefer sensing & thinking sensing & feeling intuition & feeling intuition & thinking
    focus on facts facts possibilities possibilities
    and handle these with impersonal analysis personal warmth personal warmth impersonal analysis
    they tend to be practical & matter-of-fact sociable & friendly enthusiastic & insightful intellectually ingenious
    and are good at
  • production
  • construction
  • accounting
  • business
  • economics
  • law
  • surgery
  • sales
  • service
  • customer relations
  • gen. practices
  • welfare work
  • nursing
  • research
  • teaching
  • preaching
  • counseling
  • writing
  • psychology
  • psychiatry
  • research
  • science
  • invention
  • securities
  • analysis
  • management
  • cardiology
  • There are many other tests used with programmers.

    Intuitive needs a sensing type:

    Sensing needs an intuitive: Feeling type needs a thinker: Thinker needs a feeling type

    UofC Practical Software Engineering, Department of Computer Science

    Rob Kremer