[comp.lang.c] hardcopy/productivity inverse correlation

stevans@resumix.UUCP (Mark Stevans) (11/13/90)

I invite commentary and/or anecdotes for or against the following thesis:

	There is, in general, an inverse correlation between the amount of
	source code hardcopy a programmer employs and the productivity of
	that programmer.

In my observation, the least competent programmers tend to print updated
listings of every line of every file of their source code at the same time
every day, and go through them with highlighters.  The best programmers I have
known don't even care if "lpr" exists or not.

Me?  I used to print tons of stuff until I recognized this principle :-)

					Mark Stevans
					resumix!stevans@decwrl.dec.com

pds@lemming.webo.dg.com (Paul D. Smith) (11/14/90)

[] I invite commentary and/or anecdotes for or against the following
[] thesis:

[]     There is, in general, an inverse correlation between the amount
[]     of source code hardcopy a programmer employs and the
[]     productivity of that programmer.

[] In my observation, the least competent programmers tend to print
[] updated listings of every line of every file of their source code
[] at the same time every day, and go through them with highlighters.
[] The best programmers I have known don't even care if "lpr" exists
[] or not.

Hmm.  I'm not prepared to comment on most cases of this thesis, but I
will propose a lemma:

Lemma 1:    The above thesis does not hold if the programmer in
            question is working with code not originally written by
            himself or herself.

I rarely resort to printouts of my own code (I'm sure I'm at least a
competent programmer ... :-), but whenever I have to maintain / modify
code written by someone else I generally end up having to get a
printout and wade around in it.  GNU Emacs TAGS, etc. are great, but
even with 55-line windows like I have on my AViiON workstation I
sometimes can't get all the relevent info on at once ...

This is especially true (obviously) with uncommented and/or awkwardly
structured code.  *My* code is quite clear to anyone looking at it, so
obviously Lemma 1 does not hold for programmers working with my code
:-) :-)
--

                                                                paul
-----
 ------------------------------------------------------------------
| Paul D. Smith                          | pds@lemming.webo.dg.com |
| Data General Corp.                     |                         |
| Network Services Development           |   "Pretty Damn S..."    |
| Open Network Applications Department   |                         |
 ------------------------------------------------------------------

brnstnd@kramden.acf.nyu.edu (Dan Bernstein) (11/14/90)

In article <46@resumix.UUCP> resumix!stevans@decwrl.dec.com (Mark Stevans) writes:
> I invite commentary and/or anecdotes for or against the following thesis:
> 	There is, in general, an inverse correlation between the amount of
> 	source code hardcopy a programmer employs and the productivity of
> 	that programmer.

Depends. The problem with screen editing is that you can never get
enough context. When I feel like I'm in a lull in coding on screen, I'll
print the program out (usually with several other programs in the same
state, and a few completed projects for last looks) and spend a few
hours working with it away from a keyboard. I do this maybe a couple of
times every few months, and for some programs it really helps.

Sometimes I find it's rather useless. I still haven't had the urge to
print out the pty source. The original code, along with 100 megabytes
of mail and other miscellany, is archived on a tape gathering dust in my
apartment, just in case disaster ever strikes. I doubt I'll ever read
that tape or its companions. Or send any of the files to a printer.

Occasionally it's useful *not* to have copies of a new program, because
(accidentally) deleting it and starting all over is a great way to
radically improve the design and implementation. But I've found that it
doesn't require much discipline to do this even if you have copies.

So I don't see much in your statement to agree with. (Then again, maybe
I program unproductively, so maybe you're right. :-) )

---Dan

heim@vms.macc.wisc.edu (JOHN HEIM ) (11/15/90)

In article <46@resumix.UUCP> resumix!stevans@decwrl.dec.com (Mark Stevans) writes:
> I invite commentary and/or anecdotes for or against the following thesis:
> 	There is, in general, an inverse correlation between the amount of
> 	source code hardcopy a programmer employs and the productivity of
> 	that programmer.

I definately agree.  In fact I've advanced the same theory myself at 
times.  I've seen *several* exceptions, great programmers who print 
stuff alot (many times they're folks who first learned to program on a 
teletype).  But the vast majority of people who I've seen who make 
alot of code listings are poor programmers.   Mostly they print stuff 
when they're in trouble and can't get a handle on what their own 
program is doing (usually due to poor stucture).

The place I worked at before comming here, which had several excellent 
programmers, didn't really even *have* a way to make code listings.

Of course, I'm one of those people who never make code listings so 
maybe I'm just egotistical.
------------------------------------------------------------------------------
John G. Heim                                   Internet: heim@macc.wisc.edu
UW - Madison Academic Computing Center         Phone:    608-262-9887
1210 W. Dayton St.                             Fax:      608-262-4679
Madison, WI., 53706                            CIS:      71570,3712

jamiller@hpcupt1.cup.hp.com (Jim Miller) (11/15/90)

I agree with Paul, with my own code I seldom print it out. 
In one 2 year project I only printed the code for walkthroughs
and a final copy to keep when I left the project.

When I was doing extensive modification of an existing compiler,
I got two tables (you know, those things with 4 legs and a flat horizontal
workarea), complete listings and a complete cross-reference, as well as all
the documentation available on it.  I did the job in record time and the
quality was -- no bugs.  (ok, maybe one -- and it was for internal use only
so the usage was not as large as for a released product)

   jim miller
   jamiller@hpmpeb7.cup.hp.com
   (a.k.a James A. Miller; Jim the JAM; stupid; @!?$$!; ... )
   Anything I say will be used against me ...
   But my company doesn't know or approve or condone anything of mine here.

rmartin@clear.com (Bob Martin) (11/15/90)

Interestingly enough I have noticed that several rather sloppy
programmers never print their code.  I think it because they don't
want anything their bosses could acutally look at.

I have also seen some very impressive code from engineers who did
all the coding by hand first, and then typed the code into a terminal.

Some engineers like to see how their code looks from someone else's
point of view, so they print it out and _read_ it.

Some engineers like to carefully check their code, and so print it
out with a cross reference and spend a few profitable hours finding
silly bugs that would have taken a few wasted days to find otherwise.

Perhaps some day some manager will notice that the programmers who 
wear ties and come in at 7AM write the best code...

It is dangerous to generalize about work habits.  It borders on
prejudice (meaning to pre-judge).  Judge an engineer on his output
and not on his manner of input.  


-- 
+-Robert C. Martin-----+:RRR:::CCC:M:::::M:| Nobody is responsible for |
| rmartin@clear.com    |:R::R:C::::M:M:M:M:| my words but me.  I want  |
| uunet!clrcom!rmartin |:RRR::C::::M::M::M:| all the credit, and all   |
+----------------------+:R::R::CCC:M:::::M:| the blame.  So there.     |

3003jalp@ucsbuxa.ucsb.edu (Applied Magnetics) (11/16/90)

In article <46@resumix.UUCP> resumix!stevans@decwrl.dec.com (Mark Stevans) writes:
> I invite commentary and/or anecdotes for or against the following thesis:
> 	There is, in general, an inverse correlation between the amount of
> 	source code hardcopy a programmer employs and the productivity of
> 	that programmer.

    I always print my header files, to have the structure defs and
argument lists handy.  Even on a workstation with X, there just isn't
enough room on the screen.  Other than that, I do without paper.
    Well, no, that's not quite true.  Mostly, I write subroutine libraries
(to do finite element analysis, if you must know).  Then I write test
programs to exercise the libraries and flush the bugs out in the open.
(Most of the bugs are in the test programs...  comments, anyone?)
Then the trouble starts:  one of the test programs is too useful for
its own good and I end up adding more bugs --er, features-- to it.
The spaghetti monster lurks.  THEN I need a source listing.
    Printouts do help me to grasp large programs in their entirety.
I'd say there is some truth to your thesis, because I print only when
I am in trouble.

  --Pierre Asselin,  R&D, Applied Magnetics Corp.

peter@ficc.ferranti.com (Peter da Silva) (11/16/90)

I think it's more a matter of the quantity of code listing is inversely
proportional to the quality of the *code*, not the programmer. I find I
tend to make listings, as a maintanance programmer, only when I'm working
on really evil stuff.

Remember, the guy who wrote the stuff and the guy who's working on the
stuff are not always the same guy.
-- 
Peter da Silva.   `-_-'
+1 713 274 5180.   'U`
peter@ferranti.com 

schuldy@intrbas.uucp (Mark) (11/16/90)

I think I would change the thesis to "The quantity of UNREAD hardcopy
printed during the project is inversely proportional to the quality".

Good people do only what they need to do, bad people do more (or less).
Sometimes (and you don't care when) I think I need hardcopy, so I get it.

One guy at my last job seemed to print about 70-100 pages of source
a day.  Usually he wouldn't even bother to pick it up from the printer
room.  Fortuneatly, with skills like this he generated very little new
code... so we didn't have to ignore much.

	schuldy

thornley@cs.umn.edu (David H. Thornley) (11/17/90)

In article <U3=6YL3@xds13.ferranti.com> peter@ficc.ferranti.com (Peter da Silva) writes:
>I think it's more a matter of the quantity of code listing is inversely
>proportional to the quality of the *code*, not the programmer. I find I
>tend to make listings, as a maintanance programmer, only when I'm working
>on really evil stuff.
>
And may I suggest an inverse relation to the quality of the display
and editor?  A 16-line single-window terminal with a brain-damaged
editor is a lot harder to use without listings than this large-screen
X system I'm using right now.

DHT

gwyn@smoke.brl.mil (Doug Gwyn) (11/17/90)

In article <U3=6YL3@xds13.ferranti.com> peter@ficc.ferranti.com (Peter da Silva) writes:
-I think it's more a matter of the quantity of code listing is inversely
-proportional to the quality of the *code*, not the programmer. I find I
-tend to make listings, as a maintanance programmer, only when I'm working
-on really evil stuff.

Yes, in really difficult cases the use of colored pencils and highlighters
can help a lot.  Those are best done on paper..

dbc@bushido.uucp (Dave Caswell) (11/18/90)

.Then there is hope for them! They are reading the code! In my experience,
.the one's I worry about *never* sit down with a listing and actually read
.the code to find out what's happening.
.
.The single best way to improve maintainability and reliability is to run
.off a listing now and then and distribute it to your coworkers to mark up.
.I always challenge them to find *anything* wrong with my code, the idea
.being better to fix it then than be embarassed by customers.

Often the most fun projects are a group of five or less people.  Before
anyone's code is intergated into the project it is read by everyone.
It helps to ensure a quality project and makes it far easier to replace
someone who leaves.  It also encourages you to be more rigorous in your
development knowing your peers will be reading your work.  If your peers
can't easily read your work to make changes as well as to catch errors there
is a problem; personel changes or whatever is the solution.

-- 
David Caswell                             dbc%bushido.uucp@umich.edu

userAKDU@mts.ucs.UAlberta.CA (Al Dunbar) (11/19/90)

In article <46@resumix.UUCP> resumix!stevans@decwrl.dec.com (Mark Stevans) writes:
> I invite commentary and/or anecdotes for or against the following thesis:
>       There is, in general, an inverse correlation between the amount of
>       source code hardcopy a programmer employs and the productivity of
>       that programmer.
 
Must be true - I have become a much better programmer since
getting my own PC and having to buy my own printer paper! :-)
 
-------------------+-------------------------------------------
Al Dunbar          |
Edmonton, Alberta  |  "this mind left intentionally blank"
CANADA             |          - Manuel Writer
-------------------+-------------------------------------------

jamiller@hpcupt1.cup.hp.com (Jim Miller) (11/20/90)

>
>Yes, in really difficult cases the use of colored pencils and highlighters
>can help a lot.  Those are best done on paper..
                                         *****

So THAT's been my problem ...  :-)

   jim miller
   jamiller@hpmpeb7.cup.hp.com
   (a.k.a James A. Miller; Jim the JAM; stupid; @!?$$!; ... )
   Anything I say will be used against me ...
   But my company doesn't know or approve or condone anything of mine here.

peter@ficc.ferranti.com (Peter da Silva) (11/22/90)

Well, we use printouts because it's hard to get liquid paper off these
new-fangled anti-glare screens.
-- 
Peter da Silva.   `-_-'
+1 713 274 5180.   'U`
peter@ferranti.com 

dmocsny@minerva.che.uc.edu (Daniel Mocsny) (11/26/90)

In article <28762@shamash.cdc.com> ddh@dash.udev.cdc.com (Dan Horsfall) writes:
>Granted, this is comp.lang.c, but I've been whining at length about the
>complete and utter absence of such utilities for un*x f77 -- I miss my
>CYBER FTN cross references, wherein you can get 
>  o  A "stray name" flag -- any symbol that appears only once in a module
>     is VERY likely a keying error;

If UN|X f77 supports the IMPLICIT NONE statement, then the compiler
will flag all your undeclared variables. When I used to code a bit in
FORTRAN, I got socked a few times by typos in identifiers. Sometimes
these errors are insanely hard to find, especially when you are
working with someone else's code (which may contain subtle errors you
haven't conditioned yourself to look for). For example, I read some
code that had a variable like BLURFO, and in one place the author
had typed BLURF0. Aaaagh! This was especially bad because the printout
made O (letter "oh") and 0 (numeral "zero") look very similar.

No compiler should simultaneously permit (1) programs of more than
20 lines and (2) undeclared variables.


--
Dan Mocsny				Snail:
Internet: dmocsny@minerva.che.uc.edu	Dept. of Chemical Engng. M.L. 171
	  dmocsny@uceng.uc.edu		University of Cincinnati
513/751-6824 (home) 513/556-2007 (lab)	Cincinnati, Ohio 45221-0171

schriste@uceng.UC.EDU (Steven V. Christensen) (11/27/90)

dmocsny@minerva.che.uc.edu (Daniel Mocsny) writes:

>If UN|X f77 supports the IMPLICIT NONE statement, then the compiler
>will flag all your undeclared variables.
Unfortunately, if you are assigned the job of maintaining others'
code, then doing an IMPLICIT NONE will break the current stuff...

>No compiler should simultaneously permit (1) programs of more than
>20 lines and (2) undeclared variables.

I understand (2), but why (1)? There is a lady with whom I work who
insists on breaking up even the simplest procedure into many sub-procs
(this is FORTRAN). In combination with ridiculously long proc and variable
names, it makes it even harder to debug...

But then you know what they say: there are 2 things you can't criticize:
someone's religion, and their programming style...


>--
>Dan Mocsny				Snail:
>Internet: dmocsny@minerva.che.uc.edu	Dept. of Chemical Engng. M.L. 171
>	  dmocsny@uceng.uc.edu		University of Cincinnati
>513/751-6824 (home) 513/556-2007 (lab)	Cincinnati, Ohio 45221-0171

		Steven
-- 
Steven V. Christensen
U.C. College of Eng.
schriste@uceng.uc.edu
For the adventurous: svc@elf0.uucp

architec@cutmcvax.cs.curtin.edu.au (Phil Dench ) (11/27/90)

In article <46@resumix.UUCP> resumix!stevans@decwrl.dec.com (Mark Stevans) writes:
> I invite commentary and/or anecdotes for or against the following thesis:
>       There is, in general, an inverse correlation between the amount of
>       source code hardcopy a programmer employs and the productivity of
>       that programmer.
 
I find that I rarely do any hardcopy now that I work chiefly
on workstations with multiple windows. Being able to view/edit
multiple files simultaneously certainly has increased my
productivity.

Phil

hagins@dg-rtp.dg.com (Jody Hagins) (11/28/90)

In article <E:37__3@xds13.ferranti.com>, peter@ficc.ferranti.com (Peter
da Silva) writes:
|> Well, we use printouts because it's hard to get liquid paper off
these
|> new-fangled anti-glare screens.
|> -- 
|> Peter da Silva.   `-_-'
|> +1 713 274 5180.   'U`
|> peter@ferranti.com 
|> 



I thought they only did that at Clemson :-).

-Jody.
hagins@gamecock.rtp.dg.com

tr@samadams.princeton.edu (Tom Reingold) (11/30/90)

dmocsny@minerva.che.uc.edu (Daniel Mocsny) writes:
$ No compiler should simultaneously permit (1) programs of more than
$ 20 lines and (2) undeclared variables.

In article <6785@uceng.UC.EDU> schriste@uceng.UC.EDU (Steven V.
Christensen) writes:

$ I understand (2), but why (1)? There is a lady with whom I work who
$ insists on breaking up even the simplest procedure into many sub-procs
$ (this is FORTRAN). In combination with ridiculously long proc and variable
$ names, it makes it even harder to debug...

I am pretty sure Dan meant logical "and".  (There goes someone else
claiming to know what Dan meant.) In other words, no compiler should
allow both of these things at the same time.
--
        Tom Reingold
        tr@samadams.princeton.edu  OR  ...!princeton!samadams!tr
        "Warning: Do not drive with Auto-Shade in place.  Remove
        from windshield before starting ignition."