-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathbote.html
More file actions
153 lines (132 loc) · 4.45 KB
/
bote.html
File metadata and controls
153 lines (132 loc) · 4.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<HTML>
<HEAD>
<title>The Back of the Envelope</title>
</HEAD>
<BODY BGCOLOR=#ffffff>
<a href="index.html">
<img alt="book cover" ALIGN=right hspace=20 src="pp2e.jpg">
</a>
<P>
<h1>The Back of the Envelope
<br>(Column 7 of
<font color="#a52a2a">Programming Pearls</font>)
</h1>
<h3>A Story</h3>
<P>
It was in the middle of a fascinating conversation on
software engineering that Bob Martin asked me,
``How much water flows out of the Mississippi River in a day?''
Because I had found his comments up
to that point deeply insightful,
I politely stifled my true response and said, ``Pardon me?''
When he asked again I realized
that I had no choice but to humor the poor fellow,
who had obviously cracked under the pressures of
running a large software shop.
<P>
My response went something like this.
I figured that near its mouth the
river was about a mile wide and maybe twenty feet deep
(or about one two-hundred-and-fiftieth of a mile).
I guessed that the rate of flow was five miles an hour,
or a hundred and twenty miles per day.
Multiplying
<br>
<small>
1 mile x 1/250 mile x 120 miles/day
~
1/2 mile<sup>3</sup>/day
</small>
<br>
showed that the river discharged about
half a cubic mile of water per day,
to within an order of magnitude.
But so what?
<P>
At that point Martin picked up from his desk a proposal for the
communication system that his organization was building
for the Summer Olympic games,
and went through a similar sequence of calculations.
He estimated one key parameter as we spoke by
measuring the time required to send himself a one-character
piece of mail.
The rest of his numbers were straight from the proposal
and therefore quite precise.
His calculations were just as simple as
those about the Mississippi River and much more revealing.
They showed that,
under generous assumptions,
the proposed system could work only if there were
at least a hundred and twenty seconds in each minute.
He had sent the design back to the drawing board
the previous day.
(The conversation took place about a year before the event,
and the final system
was used during the Olympics without a hitch.)
<P>
That was Bob Martin's wonderful (if eccentric) way of
introducing the engineering technique of
``back-of-the-envelope'' calculations.
The idea is standard fare in engineering schools and
is bread and butter for most practicing engineers.
Unfortunately, it is too often neglected in computing.
<h3>The Rest of the Column</h3>
<P>
The story at the top of this page
begins Column 7 of <i>Programming Pearls</i>.
These are the remaining sections in the column.
<br><a href="sec071.html">7.1 Basic Skills</a>
<br><a href="sec072.html">7.2 Performance Estimates</a>
<br><a href="sec073.html">7.3 Safety Factors</a>
<br><a href="sec074.html">7.4 Little's Law</a>
<br><a href="sec075.html">7.5 Principles</a>
<br><a href="sec076.html">7.6 Problems</a>
<br><a href="sec077.html">7.7 Further Reading</a>
<br><a href="sec078.html">7.8 Quick Calculations in Everyday Life</a>
<h3>Related Content</h3>
<P>
The
<a href="sol07.html">Solutions to Column 7</a>
give answers for some of the
<a href="sec076.html">Problems</a>.
<P>
<a href="quiz.html">Appendix 2</a> is an
<a href="quiz.html">estimation quiz</a>
to help you test your guessing skills.
<P>
<a href="appmodels.html">Appendix 3</a>
describes programs that generate cost models
for the space (<a href="spacemod.cpp">spacemod.cpp</a>)
and time (<a href="timemod.c">timemod.c</a>)
used by C and C++ programs.
<P>
The <a href="bookindex.html">index</a> has an entry for the
<a href="bookindex.html#bote">back of the envelope</a>.
<P>
The <a href="teaching.html">teaching material</a>
contains overhead transparencies based on
Sections 7.1, 7.5 and 7.6;
the slides are available in both <a href="s07.ps">Postscript</a>
and <a href="s07.pdf">Acrobat</a>.
<P>
The <a href="webrefs.html#bote">web references</a>
describe several web sites devoted to this topic.
<P>
An excerpt from this column appears in the September/October 1999
issue of
<a href="http://www.computer.org/software/">
<i>IEEE Software</i></a>
(pages 61-65).
It consists of the lead story,
much of Section 7.1,
much of Section 7.2,
Section 7.5
and the Estimation Quiz.
<p>
<FONT SIZE=1>Copyright © 1999
<B>Lucent Technologies.</B> All rights reserved.</FONT>
<font size=-2>
Mon 28 Feb 2000
</BODY>
</HTML>