home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #20 / NN_1992_20.iso / spool / comp / arch / 9419 < prev    next >
Encoding:
Internet Message Format  |  1992-09-14  |  4.0 KB

  1. Xref: sparky comp.arch:9419 comp.lang.misc:3074
  2. Path: sparky!uunet!munnari.oz.au!goanna!ok
  3. From: ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe)
  4. Newsgroups: comp.arch,comp.lang.misc
  5. Subject: Re: "Training" of programmers
  6. Message-ID: <14541@goanna.cs.rmit.oz.au>
  7. Date: 15 Sep 92 00:19:49 GMT
  8. References: <Btx4vF.Jx6@mentor.cc.purdue.edu> <1992Sep4.151001.9886@sei.cmu.edu> <1992Sep8.134351.24043@bohra.cpg.oz.au>
  9. Followup-To: comp.lang.misc
  10. Organization: Comp Sci, RMIT, Melbourne, Australia
  11. Lines: 58
  12.  
  13. In article <1992Sep8.134351.24043@bohra.cpg.oz.au>, daavid@bohra.cpg.oz.au (Daavid Turnbull) writes:
  14. > To me software engineering is a little like driving a car.  You get to square
  15. > one by reading the manual or taking some lessons, getting a mate to show you
  16. > etc.  The real learning however takes place once you hit the road on your
  17. > own... and god heap anyone who gets in your way during the first couple of
  18.                  help?
  19. > months.  For motoring the statics show that experience counts heaps.. seven
  20.                             statistics?
  21. > years down the track/ 25yo you are much cheaper to insure for example.
  22. > This does not necessarily mean that you are a good driver however... all
  23. > it means is that you consistantly meet the bottom line.  What is rarely
  24.                        consistently?
  25. > taught are the clever driving skills that can only be learnt after you
  26. > know how to drive.
  27.  
  28. A spelling flame is appropriate here, because one of the _major_
  29. software skills that people need is the ability to proof-read.  (And in
  30. areas where they are weak, good software engineers use such automatic
  31. tools as are available.)  Indeed, critical reasoning in general is
  32. important for software engineering, which is why I think it appropriate
  33. to explain that the analogy is bogus.  The insurance companies _are_ to
  34. some extent interested in how much experience you have had.  In Victoria
  35. the key question is whether you have an "L" (learner), "P" (probationary),
  36. or full licence.  That doesn't measure your driving _experience_, just
  37. how long since you first applied for your licence.  You can graduate
  38. from "P" to full (and from one insurance risk category to another)
  39. without as much as touching a car in the intervening time.  What they
  40. are _mainly_ interested in is age for its own sake.  The simple fact is
  41. that newly adult males are at high risk for just about everything.  The
  42. 25 year mark has nothing to do with whether you "consistently meet the
  43. bottom line", and everything to do with whether you are _likely_ to
  44. behave responsibly.  If driving skill is the major factor, why don't the
  45. insurance companies have their own driving tests.
  46.  
  47. I put it to the net that a similar question does apply to software and
  48. hardware design.  Is so-and-so able to criticise his/her own work?
  49. Is so-and-so willing to let others criticise it, or is s/he defensive?
  50. Is so-and-so, in Dijkstra's phrase, a Humble Programmer?
  51.  
  52. > In software skills that seem not to be taught (at least effectively) to
  53. > undergraduates are those that make code happen, eg: knowing when to stop
  54.                                                   e.g.?
  55. > thinking about the task and start coding; when to throw away bad code
  56. > and start again, when to assume that a frequently hit section of code is
  57. > as efficient as it can get, etc. (IMHO almost never, frequently and never)
  58. > These skills may only be learnable well down the track, after the mechanics
  59. > have become second nature and the real task can be understood for what it is.
  60.  
  61. Hmm.  I teach my students _never_ to "assume" that code is efficient,
  62. but to _measure_ it.  I also teach them never to assume that a particular
  63. section is frequently hit, but to analyse if they can, and measure, measure,
  64. measure.  A mathematical analysis might apply to the code you _meant_ to
  65. write, not the code you _did_ write, and a discrepancy may be the sign of a
  66. mistake.  Whether they _learn_ what I teach is another matter.  There's a
  67. lot of "if it won't be in the final exam I don't want to hear about it" around.
  68.  
  69. -- 
  70. You can lie with statistics ... but not to a statistician.
  71.