Just the first 15 of the 60 questions
construction is just a mechanical translation of a preexisting design into a computer language Correct
Construction involves substantial creative
construction requires judgement
Construction is mostly coding, but also invloves detailed design, planing, testing, integrsation and other activities
Building
Designing
Planning
Checking work
30-80
10-50
20-30
You should know this one by now
Programming is NOT a one-person activity
Programs do NOT need to be readible
Unlike writing programming requires less originality and more reuse of old ideas
programming is like writing a letter: you figure out what to say as you go.
By comparing a topic you understand well to something similar you understand better, you come up with insights that result in better understanding of the less-familiar topic.
Because metaphors are colorful language you come up with insights that result in better understanding of the topic.
By comparing a topic you understand poorly to something similar you understand better, you come up with poor understanding of the less-familiar topic.
Because metaphors have little suggestive power you come up with insights that result in better understanding of topic.
Model
Heuristic
Algorithm
Theory
Increases dramatically with the distance between when the defect is introduced and when it is detected
Increases linearly with the distance between when the defect is introduced and when it is detected
is unrelated to the distance between when the defect is introduced and when it is detected
Decreases with the distance between when the defect is introduced and when it is detected
Incremental project planning
Extensive up-front planning
ad hoc planning
Basic up-front planning
20-30
30-50
5-10
50-60
Be chosen to suit the project in all areas
always all be used in some of the areas
be chosen to suit the project in some areas
Always all be used in all of the areas
conceptual integrity
overall program structural balance
high level harmony
Freedom for the programmer to use variations where appropriate
understanding of requirements
Trying to figure out how the language works
using good programming practices
Writing of new functionality
Managing complexity
Producing a tidy result from a sloppy process
restricting possibilities
reducing risk
Portability
Reusability
Ease of maintenance
Extensibility
fan-out
Fan-in
loose coupling
Stratification