1 / 15

Lessons from 30 years as a software engineer

Lessons from 30 years as a software engineer. Richard Atkins. Definition: Crufty.

keegan
Download Presentation

Lessons from 30 years as a software engineer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lessons from 30 years as a software engineer Richard Atkins

  2. Definition: Crufty [origin unknown; poss. from `crusty' or `cruddy'] 1. Poorly built, possibly over-complex. The canonical example is "This is standard old crufty DEC software". In fact, one fanciful theory of the origin of `crufty' holds that was originally a mutation of `crusty' applied to DEC software so old that the `s' characters were tall and skinny, looking more like `f' characters. 2. Unpleasant, especially to the touch, often with encrusted junk. Like spilled coffee smeared with peanut butter and catsup. 3. Generally unpleasant. 4. (sometimes spelled `cruftie') /n./ A small crufty object (see frob); often one that doesn't fit well into the scheme of things. "A LISP property list is a good place to store crufties (or, collectively, random cruft)." This term is one of the oldest in the jargon and no one is sure of its etymology, but it is suggestive that there is a Cruft Hall at Harvard University which is part of the old physics building; it's said to have been the physics department's radar lab during WWII. To this day (early 1993) the windows appear to be full of random techno-junk. MIT or Lincoln Labs people may well have coined the term as a knock on the competition.

  3. 1: Get a job • You need a job to get a job • Work for free • You are competing against the Chinese. • Learn Chinese • LEARN ENGLISH. The Little Brown Book • Be creative, think, use initiative, volunteer for everything, get along with everybody

  4. Definition: Heisenbug [from Heisenberg's Uncertainty Principle in quantum physics] A bug that disappears or alters its behavior when one attempts to probe or isolate it. (This usage is not even particularly fanciful; the use of a debugger sometimes alters a program's operating environment significantly enough that buggy code, such as that which relies on the values of uninitialized memory, behaves quite differently.) Antonym of Bohr bug; see also mandelbug, schroedinbug. In C, nine out of ten heisenbugs result from uninitialized auto variables, fandango on core phenomena (esp. lossage related to corruption of the malloc arena) or errors that smash the stack.

  5. 2: Get along with everybody • Smile a lot • Make friends in low places • Don’t gossip • Employ the Golden rule • Address problems through channels • Shut up and listen • Reserve judgment • Don’t take sides • Email is for cowards • Wait 5 years for your promotion

  6. Definition: RTFM [Unix] Acronym for `Read The F***** Manual'. 1. Used by gurus to brush off questions they consider trivial or annoying. Compare Don't do that, then!. 2. Used when reporting a problem to indicate that you aren't just asking out of randomness. "No, I can't figure out how to interface Unix to my toaster, and yes, I have RTFM." Unlike sense 1, this use is considered polite. See also FM, RTFAQ, RTFB, RTFS, RTM, all of which mutated from RTFM, and compare UTSL.

  7. 3: Iterative development • 4,6,8 week cycles • “time boxing” • Do not slip schedule • Feature lists

  8. Definition: XYZZY [from the ADVENT game] The canonical `magic word'. This comes from ADVENT, in which the idea is to explore an underground cave with many rooms and to collect the treasures you find there. If you type `xyzzy' at the appropriate time, you can move instantly between two otherwise distant points. If, therefore, you encounter some bit of magic, you might remark on this quite succinctly by saying simply "Xyzzy!" "Ordinarily you can't look at someone else's screen if he has protected it, but if you type quadruple-bucky-clear the system will let you do it anyway." "Xyzzy!" Xyzzy has actually been implemented as an undocumented no-op command on several OSes; in Data General's AOS/VS, for example, it would typically respond "Nothing happens", just as ADVENT did if the magic was invoked at the wrong spot or before a player had performed the action that enabled the word. In more recent 32-bit versions, by the way, AOS/VS responds "Twice as much happens". The popular `minesweeper' game under Microsoft Windows has a cheat mode triggered by the command `xyzzy<enter><right-shift>' that turns the top-left pixel of the screen different colors depending on whether or not the cursor is over a bomb.

  9. 4: Be agile • Agile programming • Extreme, XP • Software Craftmanship Pete McBreen • I sing the Body Electric • Soul of the New Machine • Mythical Man Month • Dust or Magic

  10. Definition: flame 1. /vi./ To post an email message intended to insult and provoke. 2. /vi./ To speak incessantly and/or rabidly on some relatively uninteresting subject or with a patently ridiculous attitude. 3. /vt./ Either of senses 1 or 2, directed with hostility at a particular person or people. 4. /n./ An instance of flaming. When a discussion degenerates into useless controversy, one might tell the participants "Now you're just flaming" or "Stop all that flamage!" to try to get them to cool down (so to speak). The term may have been independently invented at several different places. It has been reported from MIT, Carleton College and RPI (among many other places) from as far back as 1969. It is possible that the hackish sense of `flame' is much older than that. The poet Chaucer was also what passed for a wizard hacker in his time; he wrote a treatise on the astrolabe, the most advanced computing device of the day. In Chaucer's "Troilus and Cressida", Cressida laments her inability to grasp the proof of a particular mathematical theorem; her uncle Pandarus then observes that it's called "the fleminge of wrecches." This phrase seems to have been intended in context as "that which puts the wretches to flight" but was probably just as ambiguous in Middle English as "the flaming of wretches" would be today. One suspects that Chaucer would feel right at home on Usenet.

  11. 5: Be good at CM • Maybe 50% of bugs, schedule, cost is traced to CM errors.

  12. Definition: smoke test 1. A rudimentary form of testing applied to electronic equipment following repair or reconfiguration, in which power is applied and the tester checks for sparks, smoke, or other dramatic signs of fundamental failure. See magic smoke. 2. By extension, the first run of a piece of software after construction or a critical change. See and compare reality check. There is an interesting semi-parallel to this term among typographers and printers: When new typefaces are being punch-cut by hand, a `smoke test' (hold the letter in candle smoke, then press it onto paper) is used to check out new dies.

  13. Big CM • Little CM • Version control • Access control • Change Control • Process enactment • Build support • Notification

  14. Definition: plokta [acronym: Press Lots Of Keys To Abort] To press random keys in an attempt to get some response from the system. One might plokta when the abort procedure for a program is not known, or when trying to figure out if the system is just sluggish or really hung. Plokta can also be used while trying to figure out any unknown key sequence for a particular operation. Someone going into `plokta mode' usually places both hands flat on the keyboard and mashes them down, hoping for some useful response. A slightly more directed form of plokta can often be seen in mail messages or Usenet articles from new users -- the text might end with ^X^C q quit :q ^C end x exit ZZ ^D ? help as the user vainly tries to find the right exit sequence, with the incorrect tries piling up at the end of the message....

  15. Summary • Discover where you came from. • Get a job • Inventory your social skills • Take CM seriously • Be agile

More Related