[HN Gopher] Fred Brooks has died
       ___________________________________________________________________
        
       Fred Brooks has died
        
       Author : tkhattra
       Score  : 1434 points
       Date   : 2022-11-18 02:56 UTC (20 hours ago)
        
 (HTM) web link (twitter.com)
 (TXT) w3m dump (twitter.com)
        
       | dhruvmittal wrote:
       | During my first week at UNC Chapel Hill, I had an incredibly
       | opportunity through the honors program where a handful of new
       | students (including myself, an aspring CS student) got to hang
       | out with Fred Brooks for an evening. I don't think I really knew
       | who he was at the time, but I did recognize his name as the one
       | on the CS Building.
       | 
       | When we talk about Fred Brooks now, we're usually talking about
       | the things he's written (MMM, No Silver Bullet, etc.) or the
       | impact he's had on computing (8 bit byte, founding the CS depts,
       | etc.). He didn't talk about any of that with us freshmen. Other
       | than a brief introduction, he didn't talk about any of that at
       | all.
       | 
       | Instead, he talked to us about what he saw as the future. The
       | most exciting thing going forward, as he saw it in August of
       | 2011, was the development of the interface between biology and
       | computing. One of the things that stuck with me was that he said
       | he hoped students today looked at biology the way he looked at
       | computer science back in the 50s and 60s, as a land of unlimited
       | potential.
        
         | tkhattra wrote:
         | > he said he hoped students today looked at biology the way he
         | looked at computer science back in the 50s and 60s
         | 
         | that's interesting, i believe ken thompson said something
         | similar re: getting into biology in an interview about 20 years
         | ago.
        
       | ghoward wrote:
       | It is once again time for me to re-read _The Mythical Man Month_
       | and watch his _No Silver Bullet_ lecture. No better way to
       | respect such a giant.
        
         | quantified wrote:
         | Once every 2-3 years as a refresher anyway. Yup.
        
       | pjmorris wrote:
       | MMM deserves all the attention it gets, but there's more!
       | 
       | 1. I've got to track down the source of the quote (it may be the
       | linked video), but Brooks has said that the most important
       | architectural decision he made was to have an eight bit byte
       | rather than the cheaper 7 bits (Edit: 6 bits) being considered
       | for the IBM 360. To call that influential is an understatement.
       | 
       | 2. And he has said the most important management decision was
       | sending Ted Codd to graduate school, where Codd laid the
       | foundation for what became relational databases.
       | 
       | 3. A paper [0] he co-authored with Amdahl and Blaauw introduced
       | the term 'architecture' to computer hardware, later borrowed for
       | software. From the first page: "The term architecture is used
       | here to describe the attributes of a system as seen by the
       | programmer, i.e., the conceptual structure and functional
       | behavior, as distinct from the organization of the data flow and
       | controls, the logical design, and the physical implementation."
       | 
       | He gave an interesting talk at the 50th anniversary of the
       | International Conference on Software Engineering (ICSE) a few
       | years ago, [1]
       | 
       | [0] 'Architecture of the IBM System/360', Amdahl, Blaauw, Brooks.
       | 
       | [1] https://www.youtube.com/watch?v=StN49re9Nq8
        
         | dalke wrote:
         | > eight bit byte rather than the cheaper 7 bits being
         | considered for the IBM 360
         | 
         | That's 8-bit vs. 6-bit bytes. See "Interview: An interview with
         | Fred Brooks", Communications of the ACM, Volume 58, Number 11
         | (2015), Pages 36-40
         | https://dl.acm.org/doi/fullHtml/10.1145/2822519 .
         | 
         | > Gene's machine was based on the existing 6-bit byte and
         | multiples of that: 24-bit instructions and a 48-bit instruction
         | or floating point ... Of all my technical accomplishments,
         | making the 8-bit byte decision is far and away the most
         | important. The reason was that it opened up the lowercase
         | alphabet. I saw language processing as being another new market
         | area that we were not in, and could not get into very well as
         | long we were doing 6-bit character sets.
         | 
         | From your [0], "Architecture of the IBM System/360" (1964) at
         | https://cpb-us-w2.wpmucdn.com/sites.gatech.edu/dist/8/175/fi...
         | see the section "Character size, 6 vs 4/8", which discusses
         | 4/6, 6, and 8-bit codes and the reasoning for 8-bit, and which
         | comments:
         | 
         | > The selection of the 8-bit character size in 1961 proved wise
         | by 1963, when the American Standards Association adopted a
         | 7-bit standard character code for information interchange
         | (ASCII).
         | 
         | FWIW, [0] is from April 1964. He also used "computer
         | architecture" in the earlier "Architectural Philosophy", which
         | is chapter 2 of the 1962 book "Planning A Computer System"
         | concerning Project Stretch, at
         | https://archive.org/details/bitsavers_ibm7030Plam_46781927/p...
        
           | kristianp wrote:
           | 7 bits was enough for ASCII and lower case, why not 7?
        
             | sedatk wrote:
             | I'd guess because it's not an even number. I don't know why
             | even number of bits were considered infeasible, but there
             | hasn't been a single computer architecture with odd number
             | of bits as word length:
             | https://en.wikipedia.org/wiki/Word_(computer_architecture)
        
           | pjmorris wrote:
           | Thank you for the corrections, I learned something.
        
       | avg_dev wrote:
       | I know a lot of people like MMM - I too enjoyed it. "The bearing
       | of a child takes nine months, no matter how many women are
       | assigned." Still totally valid, IMO.
       | 
       | But I really enjoyed The Design of Design as well.
       | 
       | R.I.P. Mr. Brooks. I thank you for introducing to me the idea of
       | conceptual integrity.
        
       | dang wrote:
       | We should probably wait for confirmation from more than this
       | source. I don't disbelieve it, because they cite the UNC CS
       | department, but even Wikipedia hasn't been updated yet.
        
         | tedd4u wrote:
         | Wikipedia is now updated.
        
           | dang wrote:
           | Ok, we'll restore the thread. The fact that OP is by a
           | Columbia CS prof makes it pretty likely.
        
             | mindcrime wrote:
             | Black bar?
        
               | DaiPlusPlus wrote:
               | I thought the black armband in the header was for Twitter
               | at first.
        
             | puffoflogic wrote:
             | Dang can you clarify why you found "Columbia CS"
             | credentials more credible than "UNC CS"? I'd like to say
             | that's a pretty shocking position but sadly it isn't.
        
               | dang wrote:
               | I didn't "find" that, nor say it, nor imply it, nor has
               | such a possibility ever entered my consciousness until
               | now. I'm mystified that such an interpretation could even
               | come into existence!
        
             | KrisJordan wrote:
             | As faculty at UNC CS, I can mournfully confirm this is
             | indeed the case. He passed peacefully at his home in Chapel
             | Hill earlier this evening, surrounded by family.
        
           | monksy wrote:
           | Wikipedia sites the twitter post as a source.
        
         | mdp2021 wrote:
         | > _confirmation from more than this source_
         | 
         | sure, but
         | 
         | > _even Wikipedia hasn 't been updated_
         | 
         | how would you rank the possibility that Wikipedia is updated
         | from that same source? It's an open article. If a piece of
         | news, say, "goes viral", how do you know this does not directly
         | affect sources you would have used for comparison -
         | /especially/ a wiki?
         | 
         | PS: I just realized the coincidence that I have just submitted
         | a piece about "Epistemic Vigilance in teams, esp. in the
         | context of news sources",
         | https://news.ycombinator.com/item?id=33651906
        
           | dang wrote:
           | > how would you rank the possibility that Wikipedia is
           | updated from that same source
           | 
           | I'd rank it as definitely possible. No idea how often it
           | happens.
           | 
           | The thing that really persuaded me to put the story back up
           | was the source of the tweet. A Columbia CS prof and law prof
           | who had apparently studied with Brooks would not likely have
           | posted that if he hadn't had a genuine notification.
        
       | perryizgr8 wrote:
       | "What one programmer can do in one month, two programmers can do
       | in two months."
       | 
       | -- Fred Brooks
       | 
       | I printed this out and taped it to the whiteboard at my desk.
       | Handy to point out to the manager in various situations.
        
       | quonn wrote:
       | Brooks and Knuth (fortunately still with us) are not only
       | respected but also loved. I sometimes miss this in our field
       | where sometimes success is valued more than a great mind and a
       | great mind more than a lovable well-rounded person.
        
       | breck wrote:
       | I exchanged a few emails with Fred over the years. RIP Fred.
       | Thank you so much for all the wisdom. Sharing one of the last
       | responses here:                   Thanks for your kind words.
       | You will find lots of condensed wisdom in the three software
       | books I          value most:                  DeMarco & Lister
       | Peopleware              2007. Software engineering: Barry Boehm's
       | lifetime contributions to software development,
       | management and research. Ed. by Richard Selby.
       | Hoffman, Daniel M.; Weiss David M. (Eds.): Software Fundamentals
       | - Collected Papers by David L.          Parnas, 2001, Addison-
       | Wesley, ISBN 0-201-70369-6.              You might also like my
       | later book on technical design in general:  The Design of Design.
       | Start          with Part II.
        
         | olau wrote:
         | I can recommend The Design of Design. It's a bit chatty, but I
         | haven't seen the material in there elsewhere, and it did change
         | my perspective quite a bit, to the point where I could see some
         | "conventional wisdom" at the time being entirely wrong.
        
           | simulo wrote:
           | > but I haven't seen the material in there elsewhere
           | 
           | Indeed. The references are full of works to studies from the
           | Design Studies journal, in-situ work studies, works of
           | philosophy etc.
        
         | ArcMex wrote:
         | Thanks for sharing this.
        
       | dalke wrote:
       | My one email exchange with Brooks had nothing to do with Mythical
       | Man Month.
       | 
       | In the 1990s I was was the junior co-founder and, for a while,
       | main developer of VMD, a program for molecular visualization. I
       | wanted to include molecular surface visualization, but me being
       | me, would rather integrate someone else's good work.
       | 
       | I looked around and found "Surf", a molecular surface solver
       | written by Amitabh Varshney when he was at the University of
       | North Carolina. (See "Computing Smooth Molecular Surfaces", IEEE
       | Computer Graphics and Applications,
       | https://ieeexplore.ieee.org/abstract/document/310720 .)
       | 
       | Brooks, you may not know, heard Sutherland talk about using the
       | screen as a window into another world, which got Brooks
       | interested in VR. Back in the 1970s, at UNC, they started
       | experimenting with head-mounted displays. Brooks worked on VR for
       | the rest of his career.
       | 
       | The UNC VR group worked on many different VR approaches,
       | including haptic (tactile) feedback. As I recall, the first was a
       | used hydraulic-powered robot arm. People had to wear a lab coat
       | and helmet when using it because it would leak, and had a
       | tendency to hit people.
       | 
       | One of the experiments, the NanoManipulator, hooked up the VR and
       | haptic feedback (not that same robot!) to an atomic-force
       | microscope, so people could feel the surface and move nanoscale
       | objects around. http://www.warrenrobinett.com/nano/ .
       | 
       | Brooks felt that VR would be very useful for molecular
       | visualization, and developed the GRIP Molecular Graphics
       | Resource. Quoting https://apps.dtic.mil/sti/pdfs/ADA236598.pdf ,
       | some of its early achievements were "the first molecular graphics
       | system on which a protein was solved without a physical model",
       | "using remote manipulator technology to enable users to feel
       | molecular forces", and "Real-time, user-steered volume
       | visualization of an electron density map".
       | 
       | As that document points out, their goal was to " _wildcat_
       | radical new molecular graphics ideas to the prototype stage.
       | Winning ideas are spun off to the thriving commercial industry or
       | into autonomous research projects. "
       | 
       | Surf fit very well in those lines, as VMD was an "autonomous
       | research project".
       | 
       | My exchange with Brooks and UNC was 1) to get permission to
       | distribute Surf as part of the VMD distribution, and, 2) a few
       | years later, to provide numbers about how many people had
       | downloaded VMD with Surf.
        
         | parag_chandra wrote:
         | Yes, the NanoManipulator! I remember getting a demo of it
         | during the grad student "research assistant job fair" when I
         | first started there over 20 years ago. It was like magic, and
         | what got me excited to study computer graphics. Unfortunately
         | after taking the intro class (taught by Brooks himself) I
         | realized I wasn't cut out for all the complex math involved, so
         | I switched to medical imaging instead. Still, Dr. Brooks was a
         | great lecturer who injected a lot of his own personal
         | experiences into his classes, and I ended up taking his
         | computer architecture class later on.
        
         | gregcoombe wrote:
         | Side story: the haptic feedback for the NanoManipulator was
         | through a hydraulic system (kinda like this?
         | https://www.sarcos.com/wp-
         | content/uploads/history_5-339x280....). There were hydraulic
         | lines that were piped through the building down to the machine
         | room (where the SGI Infinite Reality Engine was!). Someone read
         | through the manual and realized that the force that the arm was
         | capable of could easily break someone's arm, and since it was
         | usually grad students working late at night programming it,
         | they decided it would be safest to just decommission that. I
         | think I got one of the last demos during a UNC grad school
         | recruiting event.
        
           | dalke wrote:
           | I may be mixing up my robot arms! I visited the lab around
           | 1995 and saw a smaller robot arm than the one shown in Figure
           | 2 of https://dl.acm.org/doi/pdf/10.1145/166117.166133 .
           | 
           | The big arm from Figure 2 is "an Argonne III Remote
           | Manipulator".
           | 
           | Oddly, I can find no mention of that ARM outside of its use
           | for the NanoManipulator. I did find
           | https://www.ks.uiuc.edu/History/VMD/ (my old haunting
           | grounds!) say:
           | 
           | > Computer scientist Frederick Brooks describes his chance
           | encounter with the man who designed the manipulator as
           | providential. In the 1950s, at Argonne National Laboratory
           | near Chicago, Raymond Goertz and his group developed the ARM,
           | the Argonne Remote Manipulator, a force-feedback device used
           | to manipulate radioactive material in contaminated areas
           | unsafe for humans to enter. Users gripped a device and moved
           | it with their hand, and then signals were transferred to a
           | robotic hand inside the contaminated area, which the users
           | could see through glass. In the late 1960s or early 1970s
           | Brooks met Goertz, the primary developer of the ARM, and
           | Goertz arranged for Brooks to receive a manipulator that was
           | no longer in use. ...
           | 
           | > While trying to use the donated remote manipulator with a
           | computer in the 1970s, Brooks realized that he needed at
           | least a hundred times more computer power than was feasible
           | at the time, and he sidelined his work with the ARM until
           | 1986, the arrival of the VAX computer. ...
           | 
           | Oooh! And you can see a few pictures of a young me in that
           | UIUC link!
        
       | jbirer wrote:
       | So that's why there's a black bar, phew. glad it's not a bug on
       | my browser.
        
       | state_less wrote:
       | Fred brooks went supernova today. Let the brilliant light mark
       | his passing and remind us of the light he shined on the software
       | world.
        
       | neilwilson wrote:
       | Another legend leaves us.
       | 
       | Hopefully this will encourage more to read his work. It's about
       | human behaviour and timeless.
        
       | fredrikholm wrote:
       | A true yet humble giant.
       | 
       | Reading his works elucidated so many ideas and experiences that I
       | could not myself articulate, and helped set the foundation for my
       | own ideas further down the line.
       | 
       | RIP Fred, thank you for all your warm kindness and endless
       | contributions to our field at large.
        
       | kristopolous wrote:
       | I was just looking him up the other day and found it was
       | remarkable he was still alive. What a wonderful long life
        
       | magicink81 wrote:
       | "Conceptual integrity is the most important attribute of a great
       | design" from The Design of Design
        
         | AdamH12113 wrote:
         | Conceptual integrity is a seriously underrated concept. I think
         | the inherent conflict between conceptual integrity and
         | representativeness is at the heart of democracy, for instance.
        
         | runevault wrote:
         | People keep mentioning this book. I think I'm going to have to
         | check it out. Should also reread MMM as I haven't in years.
        
       | j5r5myk wrote:
       | Sad to hear. I did CS at UNC and will always cherish those late
       | nights coding in the Brooks building. I have my dad's first
       | edition of MMM as well. RIP.
        
       | dbremont wrote:
       | Very sad News: Thanks for your enormous contribution to humanity
       | !!! RIP, DR. Brooks
        
       | phtrivier wrote:
       | Who is currently writing things that might end up having the
       | impact of the MMM ?
       | 
       | It's Friday, and I'm grumpy, so I could very well argue that the
       | age of the "thinkers" is dead and gone for software, and that
       | everything that comes from now is just rehashing old good ideas
       | (at best) or propagating new bad ones.
       | 
       | Let's be charitable and assume there is still 1% a good stuff
       | among the junk. Who's writing it ? Who's on the good side of the
       | tar pit, and has the potential to lend a hand ?
        
         | bluGill wrote:
         | Plato is still read, but there have been may philosophers since
         | then that are also read.
         | 
         | We are quickly passing the golden age when anyone can see the
         | obvious problems and write on them. There will be many thinkers
         | to come, but they are all building on the giants of the past
         | and so will mostly not be commenting on the obvious.
        
           | phtrivier wrote:
           | Well, it probably also applies to Plato, but what Fred Brooks
           | wrote is still not considered _obvious_.
           | 
           | Exhibit A : every single project manager who tried to address
           | a tight schedule on a late project with a "well, we'll get
           | more people in.". Today.
        
         | pfarrell wrote:
         | Not writing, but I have found all of Brett Victor's speeches to
         | be incredibly inspiring on how I think about what I want to
         | work on and where we're going.
         | 
         | Inventing on Principle by Brett Victor:
         | https://www.youtube.com/watch?v=PUv66718DII
         | 
         | Growing a Language by Guy Steele:
         | https://www.youtube.com/watch?v=lw6TaiXzHAE
         | 
         | We Really Don't Know How to Compute! by Gerald Sussman:
         | https://www.youtube.com/watch?v=HB5TrK7A4pI
        
       | kweinber wrote:
       | Sad loss. One might wonder how much faster technology's state of
       | the art would have progressed if we had more people like Fred
       | Brooks working in the field.
        
         | theteapot wrote:
         | I wonder what Brooks would think about it.
        
         | riwsky wrote:
         | How dare you suggest adding more engineers to a slowing
         | project, now of all times?
        
           | Lio wrote:
           | Haha, that's a great come back! Thanks for cheering me up. :D
           | 
           | I mentioned Fred Brook in a comment just earlier in the week.
           | The Mythical Man Month is such an obviously and well known
           | trap it's still surprising so many projects still fall into
           | it.
           | 
           | Whilst his work is mostly seen as for software engineers,
           | really it should be more well known by project and senior
           | managers in general.
        
           | kwhitefoot wrote:
           | Perfect, thank you!
        
       | wbillingsley wrote:
       | Hugely sorry to hear this. I met him when he was visiting
       | Cambridge while I was a PhD student and he's a wonderful person
       | as well as a computing luminary.
        
       | betimsl wrote:
       | I qofte dheu i lehte.
        
       | Abumubeen wrote:
       | RIP
        
       | JohnDeHope wrote:
       | That's somebody's funeral I would like to attend, to pay my
       | respects.
        
       | quantified wrote:
       | The Mythical Man-Month is one of the seminal works on software
       | engineering practice. It has held up extremely well over time. If
       | I have to jettison professional books over time for whatever
       | reason, it'll be in the last box /shelf I retain.
        
         | SoftTalker wrote:
         | His _No Silver Bullet_ paper is another great one.
        
           | nextos wrote:
           | Newer editions of the book usually include the paper too.
        
           | phonon wrote:
           | http://www.cs.unc.edu/techreports/86-020.pdf
        
           | Jtsummers wrote:
           | https://news.ycombinator.com/item?id=32423356 - It's been
           | posted a few times here, too. A recent discussion with
           | dcminter and dang listing out more prior submissions.
        
         | larryfromtexas wrote:
         | That book was a window into the mind of a true software
         | engineer and one of the best things I have read generally. RIP.
        
       | KrisJordan wrote:
       | "The teacher's job is to design learning experiences; not
       | primarily to impart information." -Fred Brooks
       | 
       | A favorite, lesser known quote of Fred's from his technical
       | communications course at UNC and a SIGCSE talk. Beyond a software
       | engineer and researcher, he was an extraordinary educator. His
       | design ethos carried through to pedagogy, as well, and has been
       | an inspiration to me. Thanks, Fred.
        
         | Jare wrote:
         | During my short stint in academia, I once addressed our room
         | full of students with something like "Our role here is not to
         | teach you; it's to provide you with the best context in which
         | you can learn." I have often wondered where that philosophy
         | came from, and I an very happy to have an idea now.
        
       | po84 wrote:
       | I had the privilege of attending some of Dr. Brooks' lectures.
       | His views on the role of a computer scientist have helped me find
       | meaning and direction in my career. May he rest in peace.
       | 
       |  _In a word, the computer scientist is a toolsmith--no more, but
       | no less. It is an honorable calling. If we perceive our role
       | aright, we then see more clearly the proper criterion for
       | success: a toolmaker succeeds as, and only as, the users of his
       | tool succeed with his aid. However shining the blade, however
       | jeweled the hilt, however perfect the heft, a sword is tested
       | only by cutting. That swordsmith is successful whose clients die
       | of old age._
       | 
       | https://www.cs.unc.edu/~brooks/Toolsmith-CACM.pdf
        
       | pasttense01 wrote:
       | "The Mythical Man-Month: Essays on Software Engineering is a book
       | on software engineering and project management by Fred Brooks
       | first published in 1975, with subsequent editions in 1982 and
       | 1995. Its central theme is that adding manpower to software
       | project that is behind schedule delays it even longer. This idea
       | is known as Brooks's law, and is presented along with the second-
       | system effect and advocacy of prototyping.
       | 
       | Brooks's observations are based on his experiences at IBM while
       | managing the development of OS/360. He had added more programmers
       | to a project falling behind schedule, a decision that he would
       | later conclude had, counter-intuitively, delayed the project even
       | further."
       | 
       | https://en.wikipedia.org/wiki/The_Mythical_Man-Month
        
         | steve76 wrote:
        
       | kwertyoowiyop wrote:
       | Such a classic book. Are any other computer books from that date
       | still relevant at all, let alone relevant to such a wide
       | audience?
        
       | Guthur wrote:
       | I was literally just reading "there is no silver bullet" this
       | week.
       | 
       | Quite the legacy, long may it last.
        
       | beckingz wrote:
       | A Man who will be Mythical every Month.
        
       | KrisJordan wrote:
       | The Department of Computer Science at UNC Chapel Hill, which Fred
       | founded in 1964, shares our official remembrance letter here:
       | https://cs.unc.edu/news-article/remembering-department-found...
        
       | elanning wrote:
       | Rest in peace to one of the greats.
       | 
       | You might want to consider reading The Design of Design if you
       | liked The Mythical Man-Month.
        
       | khazhoux wrote:
       | _The programmer, like the poet, works only slightly removed from
       | pure thought-stuff. He builds his castles in the air, from air,
       | creating by exertion of the imagination. Few media of creation
       | are so flexible, so easy to polish and rework, so readily capable
       | of realizing grand conceptual structures._
        
       | hcrisp wrote:
       | Another quote of his;
       | 
       | "Show me your flowchart and conceal your tables, and I shall
       | continue to be mystified. Show me your tables, and I won't
       | usually need your flowchart; it'll be obvious." -- Fred Brooks,
       | The Mythical Man Month (1975)
       | 
       | Stated a different way:
       | 
       | "Bad programmers worry about the code. Good programmers worry
       | about data structures and their relationships." -Linus Torvalds
        
         | mekoka wrote:
         | While I agree with both quotes separately, I don't think that
         | they necessarily mean the same thing.
         | 
         | To me, the first (by Brooks) seems to be about grasping the
         | domain model to understand what the system does (or can do) in
         | general.
         | 
         | Wheras the second (by Torvalds) seems to be about how best to
         | organize data _in code_ for efficient processing. Array, hash,
         | tree, heap, etc and their associated access time complexity.
         | The efficiency of your solution depends on your choice of a
         | data structure that fits the local problem.
        
         | zelphirkalt wrote:
         | The Linus quote is ripe for misinterpretation. Not worrying
         | about the code can lead to an unreadable mess, that ones future
         | self or others will hate working with. So a really good
         | programmer will probably rather go the Sussman way and realize,
         | that programs are firstly meant to be read and only lastly
         | meant to be run by a computer (paraphrasing here).
        
           | Cthulhu_ wrote:
           | There's a lot of code out there that would improve massively
           | with better data structures though.
           | 
           | I mean I've waded through tons of code where the original
           | author abused strings to indicate relationships in a table -
           | a column with semicolon-separated values referencing other
           | tables / rows. And a ton of code to check references.
           | 
           | Mind you, that's more database design than data structures,
           | but they're close enough for this example.
        
           | citrin_ru wrote:
           | Designing good data structures is very important for code
           | readability too. If you struggle to understand how given data
           | structure is used / what it contains it would be hard to
           | understand the rest of the code.
        
           | lloeki wrote:
           | > The Linus quote
           | 
           | I always attributed it to Rob Pike, but it turns out Pike's
           | is following:
           | 
           | > Rule 4. Fancy algorithms are buggier than simple ones, and
           | they're much harder to implement. Use simple algorithms as
           | well as simple data structures.
           | 
           | > Rule 5. Data dominates. If you've chosen the right data
           | structures and organized things well, the algorithms will
           | almost always be self-evident. Data structures, not
           | algorithms, are central to programming.
           | 
           | https://users.ece.utexas.edu/~adnan/pike.html
           | 
           | Interestingly enough, the above link has this to say:
           | 
           | > Rule 5 was previously stated by Fred Brooks in The Mythical
           | Man-Month.
           | 
           | Which I guess references GP's excerpt.
           | 
           | Also says this, which kinda loops back to Linus's way of
           | saying it:
           | 
           | > Rule 5 is often shortened to "write stupid code that uses
           | smart objects".
        
         | wodenokoto wrote:
         | In reality though the tables are going to be like: Column named
         | "price_usd_incl_tax" is neither in usd nor does it include all
         | taxes.
        
           | javawizard wrote:
           | Which is exactly what Linus' quote is about.
        
           | bazoom42 wrote:
           | In that case the code will probably also be difficult to
           | read.
           | 
           | In my experience, studying the database schema and IO data
           | structures is indeed the best way to begin understanding a
           | complex system.
        
           | lucideer wrote:
           | This is only in the reality where nobody is shown the table.
           | 
           | Showing things acts as a forcing function to fix the thing
           | being shown
        
           | mejutoco wrote:
           | At least you can grep that column name in the source code to
           | find out where other taxes are calculated. Of course an ORM
           | can further complicate this.
        
           | lightbendover wrote:
           | I can just barely count the times I have seen a production
           | failure due to someone assuming a millicent value from a
           | column with ambiguous naming was in centicents or vice-versa.
        
           | dt3ft wrote:
           | This hits home. Not only in databases, but also in code.
        
           | retSava wrote:
           | Don't worry, the code is self-documenting. /s
           | 
           | Self-documenting code (what I take in practice means "no
           | comments"-culture) is something I don't understand how it can
           | work, never seen a good implementation of it. It _can_ be
           | successful in describing the _what_ but is poorly or not at
           | all describing the _why_. Perhaps I'm in the wrong domain for
           | that though.
        
             | lightbendover wrote:
             | Documentation without accurate and descriptive
             | method/member names is much more harmful than the inverse.
             | If an abstraction is sufficiently complex to warrant a
             | lengthy description of _why_ it exists, then it should have
             | a design doc. In practice, most code within a repo is
             | pretty simple in what it accomplishes and if it 's
             | confusing to a reader, then it is most likely because they
             | don't understand the design of the larger component or
             | system or simply because the implementation is poor. There
             | are of course cases where comments are really useful or
             | even necessary (e.g. if going against best practices for a
             | good reason or introducing an optimization that is for all
             | intents and purposes unreadable without explanation), but
             | they are exceptions.
        
             | _rm wrote:
             | In practice it really does mean self documenting code.
             | 
             | Like variables called "daysSinceDocumentLastUpdated"
             | instead of "days". The why comes from reading a sequence of
             | such well described symbols, laid out in a easy to follow
             | way.
             | 
             | It doesn't do away with comments, but it reduces them to
             | strange situations, which in turn provides refactoring
             | targets.
             | 
             | Tbh, its major benefit is the fact that comments get stale
             | or don't get updated, because they aren't held in line by
             | test suites and compilers.
             | 
             | Most comments I come across in legacy code simply don't
             | mean anything to me or any coworkers, and often cause more
             | confusion. So they just get deleted anyway.
        
               | Oddskar wrote:
               | In most cases, even though there's verbose variable names
               | you still can't understand the _why_ just by reading the
               | code. And even if you did, why would one want to?
               | 
               | Most often I'm just skimming through, and actual
               | descriptions are much better than having to read the code
               | itself.
               | 
               | This whole notion of "documentation can get out of sync
               | with the code, so it's better not to write it at all" is
               | so nonsensical.
               | 
               | Why isn't the solution simply: "lets update the docs when
               | we update the code". Is this so unfathomably hard to do?
        
               | greenmana wrote:
               | People are lazy.
        
               | soulofmischief wrote:
               | Lazy people work the hardest. It's an up front investment
               | for a big payoff later when you can grok your code in
               | scannable blocks instead of having to read a dozen lines
               | and pause to contemplate what they mean, then juggle them
               | in your memory with other blocks until you find the block
               | you're looking for.
               | 
               | Comments allow for a high-level view of your code, and
               | people who don't value that probably on average have a
               | slower overall output.
        
               | stevesimmons wrote:
               | What you write in your first para is so self evidently
               | true, at least to me.
               | 
               | I simply cannot comprehend the mindset that views
               | comments as unnecessary. Or worse, removes existing
               | useful comments in some quest for "self-documenting"
               | purity.
               | 
               | I've worked in some truly huge codebases (40m LOC, 20k
               | commits a week, 4k devs) so I think I have a pretty good
               | idea of what's easy vs hard in understanding unfamiliar
               | code.
        
               | ambicapter wrote:
               | > Lazy people work the hardest.
               | 
               | What's amazingly funny is that many people think this is
               | a positive, because they ascribe more value to working
               | hard than to achieving results. I even thought your
               | comment was going to go that way when I first read it.
        
               | tetha wrote:
               | > This whole notion of "documentation can get out of sync
               | with the code, so it's better not to write it at all" is
               | so nonsensical.
               | 
               | To me, this feels similar to finding the correct
               | granularity of unit tests or tests in general. Too many
               | tests coupled to the implementation too tightly are a
               | real pain. You end up doing a change 2-3 times in such a
               | situation - once to the actual code, and then 2-3 times
               | to tests looking at the code way too closely.
               | 
               | And comments start to feel similar. Comments can have a
               | scope that's way too close to the code, rendering them
               | very volatile and oftentimes neglected. You know, these
               | kind of comments that eventually escalate into
               | "player.level += 3 // refund 1 player level after error".
               | These are bad comments.
               | 
               | But on the other hand, some comments are covering more
               | stable ground or rather more stable truths. For example,
               | even if we're splitting up our ansible task files a lot,
               | you still easily end up with several pages of tasks
               | because it's just verbose. By now, I very much enjoy
               | having a couple of three to five line boxes just stating
               | "Service Installation", "Config Facts Generation",
               | "Config Deployment", each showing that 3-5 following
               | tasks are part of a section. And that's fairly stable,
               | the config deployment isn't suddenly going to end up
               | being something different.
               | 
               | Or, similarly, we tend to have headers to these task
               | files explaining the idiosyncratic behaviors of a service
               | ansible has to work around to get things to work. Again,
               | these are pretty stable - the service has been weird for
               | years, so without a major rework, it will most likely
               | stay weird. These comments largely get extended over time
               | as we learn more about the system, instead of growing out
               | of date.
        
               | thaumasiotes wrote:
               | > To me, this feels similar to finding the correct
               | granularity of unit tests or tests in general.
               | 
               | I recently had an interview with what struck me as a
               | pretty bizarre question about testing.
               | 
               | The setup was that you, the interviewee, are given a toy
               | project where a recent commit has broken unrelated
               | functionality. The database has a "videos" table which
               | includes a column for an affiliated "user email"; there's
               | also a "users" table with an "email" column. There's an
               | API where you can ask for an enhanced video record that
               | includes all the user data from the user with the email
               | address noted in the "videos" entry, as opposed to just
               | the email.
               | 
               | This API broke with the recent commit, because the new
               | functionality fetches video data from somewhere external
               | and adds it to the database without checking whether the
               | email address in the external data belongs to any
               | existing user. And as it happens, it doesn't.
               | 
               | With the problem established, the interviewer pointed out
               | that there was a unit test associated with the bad
               | commit, and it was passing, which seemed like a problem.
               | How could we ensure that this problem didn't reoccur in
               | some later commit?
               | 
               | I said "we should normalize the database so that the
               | video record contains a user ID rather than directly
               | containing the user's email address."
               | 
               | "OK, that's one way. But how could we write a test to
               | make sure this doesn't happen?"
               | 
               | ---
               | 
               | I still find this weird. The problem is that the database
               | is in an inconsistent state. That could be caused by
               | anything. If we attempt to restore from backup (for
               | whatever reason), and our botched restore puts the
               | database in an inconsistent state, why would we want that
               | to show up as a failing unit test in the frontend test
               | suite? In that scenario, what did the frontend do wrong?
               | How many different database inconsistencies do we want
               | the frontend test suite to check for?
        
               | tetha wrote:
               | That makes no sense to me either. In my book, tests in a
               | software project are largely responsible to check that
               | desired functionality exists, most often to stop later
               | changes from breaking functionality. For example, if
               | you're in the process of moving the "user_email" from the
               | video entity to an embedded user entity, a couple of
               | useful tests could ensure that the email appears in the
               | UI regardless if it's in `video.user_email` or in
               | `video.user.email`.
               | 
               | Though, interestingly enough, I have built a test that
               | could have caught similar problems back when we switched
               | databases from mysql to postgresql. It would fire up a
               | mysql based database with an integration test dump,
               | extract and transform the data with an internal tool
               | similar to pgloader, push it into a postgres in a
               | container. After all of that, it would run the
               | integration tests of our app against both databases and
               | flag if the tests failed differently on both databases.
               | And we have similar tests for our automated backup
               | restores.
               | 
               | But that's quite far away from a unit test of a frontend
               | application. At least I think so.
        
               | lowercased wrote:
               | > With the problem established, the interviewer pointed
               | out that there was a unit test associated with the bad
               | commit, and it was passing, which seemed like a problem.
               | How could we ensure that this problem didn't reoccur in
               | some later commit?
               | 
               | It would seem that the unit test itself should be
               | replaced with something else, or removed altogether, in
               | addition to whatever structural changes you put in place.
               | If you changed db constraints, I could see, maybe, a test
               | that verifies the constraints works to prevent the
               | previous data flow from being accepted at all - failing
               | with an expected exception or similar. But that may not
               | be what they were wanting to hear?
        
               | Oddskar wrote:
               | > Comments can have a scope that's way too close to the
               | code, rendering them very volatile and oftentimes
               | neglected.
               | 
               | I think this is a well put and nuanced insight. Thank
               | you.
               | 
               | This is really what the dev community should be
               | discussing; the "type" of comments and docs to add and
               | the shape thereof. Not a poorly informed endless debate
               | whether it should be there in the first place.
        
               | aenario wrote:
               | > This whole notion of "documentation can get out of sync
               | with the code, so it's better not to write it at all" is
               | so nonsensical.
               | 
               | I do believe that in a lot of case an outdated, wrong or
               | plain erroneous documentation does more harm than no
               | documentation. And while the correct solution is
               | obviously "update the doc when we update the code", it
               | has been empirically proven not to work across a range of
               | projects.
        
               | jacobyoder wrote:
               | What 'has' been proven then? No comments or docs? Long
               | variable and method names?
               | 
               | I just had a semi-interview the other day, and was
               | talking with someone about the docs and testing stuff
               | I've done in the past. One of the biggest 'lessons' I
               | picked up, after having adopted doc/testing as "part of
               | the process" was... test/doc hygiene. It wasn't always
               | that stuff was 'out of date', but even just realizing
               | that "hey, we don't use XYZ anymore - let's remove it and
               | the tests", or "let's spend some time revisiting the docs
               | and tests and cull or consolidate stuff now that we know
               | about the problem". Test optimization, or doc
               | optimization, perhaps. It was always something I had to
               | fight for time for, or... 'sneak' it in to commits.
               | Someone reviewing would inevitably question a PR with
               | "why are you changing all this unrelated stuff - the
               | ticket says FOO, not FOO and BAR and BAZ".
               | 
               | Getting 'permission' to keep tests and docs
               | current/relevant was, itself, somewhat of a challenge. It
               | was exacerbated by people who themselves weren't writing
               | tests or code, meaning more 'drift' was introduced
               | between existing code/tests and reality. But blocking
               | someone's PR because it had no tests or docs was "being
               | negative", but blocking my PR because I included
               | 'unnecessary doc changes' was somehow valid.
        
               | zeroonetwothree wrote:
               | The argument isn't that it's better to not write it at
               | all, it's that it's not worth the effort when you could
               | have done something else. Opportunity cost and all that.
        
               | jjgreen wrote:
               | Better, a "last_updated" method on instances of
               | "Document", that being an "Age" instance with a "days"
               | method: document.last_updated.days
               | 
               | Self describing code does not need
               | theRidiculouslyLongNamesPerferredByJavaCoders.
        
             | Kranar wrote:
             | At my company code is required to be self-documenting. My
             | attitude is that if you can't determine the why then you
             | likely are not familiar enough with the problem domain to
             | be working with that code. It's fine not to be familiar
             | with the domain and there are ways to address that, but
             | reading source code is not one of them.
        
               | ambicapter wrote:
               | So you bar all junior developers from writing code until
               | they've gone through tested coursework in your domain, or
               | what?
        
               | Kranar wrote:
               | Yes absolutely. All developers, junior and senior, go
               | through a 4 month training program working on a
               | completely independent project from scratch that teaches
               | them everything they need to work in their domain. There
               | are exceptions now and then, but for the most part it's
               | pretty consistent.
               | 
               | When a developer wants to switch from one area to
               | another, they go through an accelerated program (takes
               | only about a month).
        
             | ilyt wrote:
             | I like that term. When I hear it I can with 100% accuracy
             | know the person touting it is a hack and their code is
             | garbage.
        
             | ethbr0 wrote:
             | The dream of self-documenting code requires solving two
             | problems, only one of which programmers are typically good
             | at.
             | 
             | 1) Communicating with computers
             | 
             | 2) Communicating with other humans
             | 
             | Self-documenting code is essentially writing prose.
             | Granted, to someone with similar knowledge as you.
             | 
             | But most people suck at writing.
        
               | Ma8ee wrote:
               | I have better hope that a good programmer can write
               | readable code, than that they will write readable
               | documentation. As you point out, people suck at writing.
        
             | cafard wrote:
             | I would remark here that _The Mythical Man-Month_ did give
             | a page or two to documentation. My copy seems to be out on
             | loan, but as I recall the section included a figure showing
             | the documentation for a sort function, perhaps 25 lines or
             | so.
        
               | InitialLastName wrote:
               | > My copy seems to be out on loan,
               | 
               | Drifting off-topic, but I wonder how close to the top of
               | the list TMMM is for "on loan" duty cycle in the software
               | world. My copy also seems to be persistently in someone
               | else's hands.
        
               | Ma8ee wrote:
               | If I remember correctly, Brooks experience was with
               | assembler, which might require some more documentation
               | than modern Java or Python.
        
               | cafard wrote:
               | I think that the example was in PL/1.
        
             | the-smug-one wrote:
             | The why should be clear from the domain that you're working
             | within. A line of comment should count as something like 10
             | lines of code, if you're reading a comment then you're
             | treading into real complexity. If you're in a code base
             | where that isn't true, then is the comment really
             | necessary?
             | 
             | Fairly hot take from me, life is more ambiguous than that
             | :-).
        
               | yourapostasy wrote:
               | _> The why should be clear from the domain that you 're
               | working within._
               | 
               | I hear this commonly from coders who haven't had the
               | ambiguous pleasure of working with old, production
               | critical codebases from generations of coders who have
               | come and gone, with technical decisions buffeted around
               | by ever-shifting organizational political and budgeting
               | winds. Knowing the why's that leadership cares about is
               | _far_ more important to your career than the technical
               | why 's, which are along for the ride.
               | 
               | Once you go into production with tens of thousands of
               | users and up, with SLA's driven by how many commas of
               | money going up in smoke per minute...yeah, illusions of
               | "pure" domain knowledge driving understanding of function
               | dictating code form evaporate like a drop of distilled
               | water on the Death Valley desert hardpan in the middle of
               | summer.
               | 
               | I used to be like that as well years ago, but some kind
               | greybeards who took me under their wings slapped that out
               | of me.
               | 
               | Now my _personal_ hobby code with an  "unlimited" budget
               | and I'm the sole producer and consumer? Yep, far closer
               | to this Platonic ideal where comments are terse and
               | sparse, and the code is tightly coupled to the domain.
        
               | pjmorris wrote:
               | > The why should be clear from the domain that you're
               | working within
               | 
               | Sometimes the 'why' is purely domain knowledge. Sometimes
               | the 'why' is about narrowing down options available in
               | the domain. Sometimes the 'why' is about a choice made
               | for reasons that aren't specific to the domain. And
               | sometimes the 'why' is about the code that wasn't
               | written, so it can't possibly be in the code that was.
        
               | vjust wrote:
               | Grokking that 'why' can take non-trivial mental effort by
               | a non-author, even when well coded/documented. Worse, if
               | the code is needlessly complex, or trying to be smart or
               | over-engineered, any amount of commenting wont help. The
               | non-author (maintainer) of the code is now burdened. And
               | if (so commonly happens) - they dismiss the original code
               | as 'non-performant' or 'not a best practice' or something
               | else.. we know how that plays out.
        
               | kwhitefoot wrote:
               | > sometimes the 'why' is about the code that wasn't
               | written, so it can't possibly be in the code that was.
               | 
               | I have often had to write extensive comments related to
               | this to prevent well meaning coders who are not expert in
               | the domain from replacing the apparently bad or low
               | performance code with an obvious but wrong 'improvement'.
        
               | P5fRxh5kUvp2th wrote:
               | In a perfect world, tests and assertions would protect
               | from that, but yes, that's a good use of comments.
        
               | Jenk wrote:
               | "Sometimes" doing all the lifting there.
               | 
               | Comments are supplemental. If you have just added some
               | weird, non-obvious, bit of code because you needed to
               | compromise, or work around some other quirk, go ahead and
               | comment. No one is going to (sanely) object to that.
        
               | pjmorris wrote:
               | What you describe is how I tend to comment. At the
               | opposite end of the spectrum we have Knuth's 'literate
               | programming', exemplified in Tex, which has as its goal
               | 'making programs more robust, more portable, more easily
               | maintained, and arguably more fun' [0] by merging
               | documentation with code. I'd bet if you counted
               | documentation lines vs. code lines in Tex they'd be near
               | 50/50, and I'd bet that if we asked Knuth whether the
               | comment lines were supplemental he'd say no.
               | 
               | [0] https://www-cs-faculty.stanford.edu/~knuth/lp.html
        
               | simion314 wrote:
               | The developers , especially new ones do not understand or
               | know all the history of the project.
               | 
               | I remember one time in css I had to do something weird
               | like min-widht:0; It was needed to force the css engine
               | to apply some other rule correctly,. but this will puzzle
               | you when you read it. And this kind of puzzling code
               | needs comments, I prefer to just put the ticket ID there
               | and the ticket should contain the details on what the
               | weird bug was with all the details, so if some clever dev
               | wants to remove the weird code he can understand stuff.
               | 
               | Sometimes I see in our old project code like if webkit to
               | X else do Y , there is no comment with a bug link so I
               | have no idea if this code is still needed or not
               | (Browsers still differ in more complex stuff, like
               | contenteditable )
        
               | P5fRxh5kUvp2th wrote:
               | I don't like such rules of thumb.
               | 
               | A better approach would be that A comment should tell you
               | something that you cannot glean from the code and/or is
               | non-obvious. Yes, I understand non-obvious can have a
               | truck driven through it, but in general it should work.
               | 
               | You can read code and understand what it's doing
               | mechanically, but you may not understand why the obvious
               | approach wasn't taken or understand what it's trying to
               | achieve in the larger context. Feel free to comment on
               | those, but if the code is difficult to understand
               | mechanically, the code is generally bad. Not always,
               | everything has exceptions, but generally that's true.
        
               | saiya-jin wrote:
               | Unless you are in some trivial startup domain, real
               | domains (TM) have almost fractal-level complexities if
               | you dig deep enough, corner cases, sometimes illogical
               | rules etc.
               | 
               | The "why" is still very much needed since it can have 10
               | different and even conflicting reasons, and putting it in
               | the code in appropriate amount shows certain type of
               | professional maturity and also emotional
               | intelligence/empathy towards rest of the team.
               | 
               | I mean, somebody has to be extremely junior to never
               | experience trying to grok somebody's else old non-trivial
               | code in situation when you need to deliver fix/change on
               | it _now_. And its fairly trivial to write very complex
               | code even in few lines, which some smart inexperienced
               | juniors (even older, but total skill-wise still juniors)
               | produce as some sort of intellectual game out of boredom.
        
               | rob74 wrote:
               | > _I mean, somebody has to be extremely junior to never
               | experience trying to grok somebody 's else old non-
               | trivial code_
               | 
               | People are definitely capable of looking at someone
               | else's code and saying "this crap is completely
               | unreadable, we should rewrite it all", while at the same
               | time believing that _their own_ code is perfectly
               | readable and self-documenting.
        
               | eru wrote:
               | And even more important than the 'why' can be the 'why
               | not'? Ie explanations for implementation choices that
               | haven't been taken for various reasons.
        
               | kasey_junk wrote:
               | I'm not a "no comments" maximalist but someone has to be
               | pretty junior to have never experienced a comment that is
               | just completely incorrect.
               | 
               | It's really hard to write a good comment that is only
               | "why". It's really hard to keep comments up to date as
               | code is moved and refactored. And an incorrect comment is
               | much more damaging than no comment at all.
               | 
               | That's the driving force behind "self documenting" code.
               | My view is that a comment is sometimes necessary but it
               | is almost always a sign that the code is weak.
        
               | saiya-jin wrote:
               | > It's really hard to keep comments up to date as code is
               | moved and refactored
               | 
               | I agree with this, but if the explanation for logic has
               | good reason to be there, then keeping comments up-to-date
               | with code changes is very important and it goes back to
               | seniority and empathy I mentioned earlier - if you
               | understand why its there in the first place, and you
               | actually like rest of your team, you are doing too all of
               | you a big favor with updates of comments.
               | 
               | Each of us has different threshold for when some text
               | explanation should be provided, which is source of these
               | discussions. But again back to empathy, not everybody is
               | at your coding level, you can save a lot of new joiner's
               | time (and maybe a production bug or two) if they can
               | quickly understand some complex part.
        
               | Oddskar wrote:
               | > It's really hard to keep comments up to date as code is
               | moved and refactored.
               | 
               | Hard disagree with this.
               | 
               | If your comment is so volatile then that really sounds
               | like there's something architecturally wrong with the
               | code.
               | 
               | Most of the time these kind of "comments" can be turned
               | into either a test, or a extensive description that goes
               | into version control.
               | 
               | Because commit messages are just that: a comment for a
               | specific moment in time. There are lots of options to
               | inline comments.
        
               | acka wrote:
               | Which is why I find looking at `git blame` (or one's
               | favorite IDE's/SCM's equivalent) output so very useful in
               | case of undercommented code.
        
               | auggierose wrote:
               | Code is almost never self-documenting. That's why there
               | are so many O'Reilly books out there.
               | 
               | A great example is AWK: It's a tool, and it comes with a
               | book from the people who made the software. That's how I
               | like my software.
        
               | vjust wrote:
               | Or the Emacs book.
        
               | pjmorris wrote:
               | To your point, we also have 'The C Programming Language',
               | K&R, and 'The Unix Programming Environment', K&Pike.
        
               | auggierose wrote:
               | Seems like the common denominator is the K here!
        
             | croes wrote:
             | I've seen lots of documentation that I only understood
             | after I understood the code.
        
               | Oddskar wrote:
               | In other words: poor documentation.
        
           | quickthrower2 wrote:
           | It used to mean that, but a programmer changed the meaning.
           | They could.
           | 
           | (a) rename the column, be the guy who broke the system and
           | spend all weekend trying to fix 6 systems he never knew
           | existed, written in Access, Excel, Crystal Reports, VB6,
           | Delphi and a CMD file on a contractors laptop.
           | 
           | (b) keep the column name, deliver the feature, go home.
        
             | ilyt wrote:
             | If data meaning changed tho those 6 systems would break
             | too, no ?
        
               | throwaway39978 wrote:
               | It might not be math-related; could be something as
               | simple as a requests table being named to indicate that
               | api X was used and now it uses API y and there is some
               | reporting on that somewhere that doesn't care which API
               | was used.
               | 
               | Ideally the table would have been named more generically
               | but in an earlier stage startup there will be mistakes in
               | naming things no matter how hard you try to avoid that.
               | 
               | So the only thing that actually breaks here is that a
               | small number of engineers that care about this might
               | misinterpret what it means unless they learn the
               | appropriate tribal knowledge. Ideally it gets fixed but
               | if you look at all of the things that can be improved in
               | an early stage startup, this kind of thing is pretty
               | minimal in importance so it becomes tech debt.
        
               | maaarghk wrote:
               | Anyway, where were we? Oh yeah - RIP Fred Brooks.
        
             | Ma8ee wrote:
             | I really hope you are joking 100%, because
             | 
             | (b) Go home and be happily oblivious that six other systems
             | silently started to produce wrong results since the meaning
             | of the column has changed. But, of course, that is someone
             | else's problem, some other day, when several months of
             | reports and forecasts have to be recalled and updated.
        
             | pif wrote:
             | There's no point in keeping the same name so that a system
             | can keep running, if the data meaning has changed.
             | 
             | Bad programmers chose (b). Good programmers choose (a).
             | Better programmers refuse the change request.
        
               | [deleted]
        
             | deniska wrote:
             | We prefer option c: add a new table/column with similar
             | looking name. Then few years later start wondering why
             | there're two almost identical entities, and why one of them
             | behaves weirder than another.
        
             | js8 wrote:
             | That's why you should also have comments, and maintain
             | them. Then if the name is hard to change, you can at least
             | document the new semantics.
        
         | atdrummond wrote:
         | What if the table includes a poorly labeled column entitled
         | "fiat@"?
        
           | gilbetron wrote:
           | Underrated comment that would have been perfect if you said
           | "labled"
        
       | EdwardCoffin wrote:
       | I rarely see this mentioned, but book he authored with Gerrit A.
       | Blaauw, Computer Architecture, has a really cool way of
       | characterizing the various machine architectures by describing
       | their data representations, formats, and significant operations
       | in APL.
        
       | jessmartin wrote:
       | The ACM recorded this 2-hour long interview[0] with Fred that
       | walks through his whole history. It's incredible to see Fred's
       | ability to recall conversations and technical decisions from over
       | 50 years ago!
       | 
       | I admire his ability to move back and forth between industry and
       | academia and move the entire field forward.
       | 
       | One of my favorite quotes: "A scientist builds in order to learn.
       | An engineer learns in order to build."
       | 
       | [0] https://www.youtube.com/watch?v=ul0dbgs8Mdk
        
       | yieldcrv wrote:
       | (Feel like these trailblazers in computing are going to get more
       | frequent, does anyone have an analysis on how much HN makes the
       | banner to someone over the years)
        
       | thyrsus wrote:
       | Message from the Chair of the UNC Computer Science Department
       | (personal phone number elided):
       | 
       | Dear Friends,
       | 
       | It is with great sadness that I must share the following update
       | on the health of the Department Founder Dr. Frederick P. Brooks,
       | Jr. I know how much Dr. Brooks has meant to the department, to
       | computer graphics, to the world of computing, and to each of you.
       | So I wanted to reach out and pass on the following message from
       | his son, Roger Brooks.
       | 
       | Dr. Samarjit Chakraborty Chair, UNC Department of Computer
       | Science
       | 
       | - Begin Forwarded Message - Subject: Frederick's condition and
       | his Hope
       | 
       | Dear ones:
       | 
       | As you may have heard, on Saturday my father came home from the
       | hospital into hospice care. He spends most of the time sleeping.
       | When (slightly) awake, he is only slightly responsive, and not
       | able to respond verbally to questions. He seems to be in no pain
       | and no particular discomfort. He is eating and drinking small
       | amounts, but far from enough.
       | 
       | Frederick P. Brooks Jr. has fought the good fight, run the good
       | race, been an outstanding husband and father and mentor and
       | friend of many . . . and is now fading away. His hope and his
       | coming joy, in death and in life, is in his Lord Jesus Christ,
       | who I know will welcome him with "Well done . . .".
       | 
       | The hospice nurse tells us that my father may live several days
       | to 10 days or so.
       | 
       | You may share this information with all who would want to know. I
       | know that I am missing email addresses for beloved friends which
       | exist somewhere in my parents' contact lists, and I apologize
       | that I do not have time to dig for those.
       | 
       | With family and aides around, we have ample help. If you would
       | like to come and visit my mother, or bring your last respects and
       | prayers to my father, please just call the house first. Close
       | friends are welcome, but it is hard to predict in advance when
       | things will be busy or peaceful.
       | 
       | Kori Robbins, associate pastor at Orange Methodist Church,
       | visited yesterday and prayed what I thought was exactly the
       | appropriate, loving, and merciful prayer, which she tells me she
       | adapted from Douglas McKelvey's A Liturgy for the Final Hours. We
       | ask you to join in this prayer:
       | 
       | O God our Father, O Christ our Brother, O Spirit our comforter,
       | 
       | Fred is ready.
       | 
       | Now meet him at this mortal threshold and deliver him to that
       | eternal city; to your radiant splendor; to your table and the
       | feast and the festival of friends; to the wonder and the welcome
       | of his heart's true home.
       | 
       | He but waits for your word. Bid him rise and follow, and he will
       | follow you gladly into that deeper glory,
       | 
       | O Spirit his True Shepherd, O Christ his True King, O God his
       | True and Loving Father, receive him now, and forgive his sins,
       | through the blood of his Savior Jesus Christ.
       | 
       | Roger Brooks Sr.
        
         | atdrummond wrote:
         | It is clear that beyond his accomplishments in the world of
         | computing, he achieved what is most important - being a good
         | friend and family member. The warmth and love in those
         | recalling his life is evident and is a reflection of his
         | profound impact on others.
         | 
         | Rest In Peace.
        
         | avg_dev wrote:
         | By no means am I a religious person, but that certainly is a
         | beautiful prayer.
        
       | acdha wrote:
       | Sad news but he left a legacy to be proud of. Few people write
       | anything which will be read half a century later, much less as a
       | source of insight rather than historical context.
        
       | fsckboy wrote:
       | Fred Brooks, a mythic figure, who lived a couple days shy of a
       | very productive 1099 man-months. RIP.
        
       | ChrisMarshallNY wrote:
       | That is sad, but he had a great career.
       | 
       | He, along with folks like Watts Humphries, and Donald Knuth, were
       | some of the earliest published "Computer Programming As An
       | Engineering Discipline" types.
        
       | khazhoux wrote:
       | One of the things that always amazed me was how _present_ he
       | always was. Any lecture he attended, regardless of the speaker or
       | topic (which were very far-ranging) he always asked questions.
       | Good, tough, insightful questions. His mind was never passive,
       | and he set a great example for everyone decades younger than him.
        
         | avg_dev wrote:
         | That is impressive. A goal I will try to aspire to. I may not
         | achieve it and I may not always ask questions - but remaining
         | alert, active, aware, that is pretty badass, and I would like
         | to be that way too.
        
       | phtrivier wrote:
       | A great way to go to posterity is to state a law that so much
       | depends on some basic human flaw, that it can not be bent until
       | Darwin changes our brain.
       | 
       | Brook law of late software project will be quoted for the rest of
       | times, because software projects will be late for the rest of
       | time.
       | 
       | May Mr. Brooks rest in peace until then.
        
       | bluGill wrote:
       | They will get his funeral done in record time by assigning 9
       | preachers to speak at the same time.
       | 
       | RIP Fred, you were a giant and will be missed.
        
         | avg_dev wrote:
         | I laughed.
        
       | mwcampbell wrote:
       | For some reason I thought Brooks had already died some years ago,
       | but then I remembered that what I had previously read was the
       | comment thread on the announcement of his _retirement_ in 2016:
       | https://news.ycombinator.com/item?id=11257437
        
       | herodoturtle wrote:
       | RIP Mr Brooks.
       | 
       | I've still got my copy of MMM from 20 years ago. I re-read it
       | recently (~2 years ago). Such great wisdom in that book. Would
       | highly recommend it.
        
       | djbusby wrote:
       | We need a black stripe on here @dang
        
       | qclibre22 wrote:
       | We are standing on the shoulders of giants. He was one of the
       | tallest.
        
       | codetrotter wrote:
       | I really enjoyed his book "The Design of Design: Essays from a
       | Computer Scientist"
       | 
       | https://www.goodreads.com/book/show/7157080-the-design-of-de...
       | 
       | RIP Mr. Brooks
        
       | pixelmonkey wrote:
       | Deserves the black bar, in my view. Probably one of the most
       | widely-discussed and most oft-cited writers among hackers of
       | multiple generations.
       | 
       | He will always be remembered for "Brooks's Law", colloquially,
       | "adding people to a late software project makes it later":
       | 
       | https://en.wikipedia.org/wiki/Brooks%27s_law
       | 
       | And for his timeless essay, "No Silver Bullet", which introduced
       | the idea of accidental vs essential complexity in software:
       | 
       | https://en.wikipedia.org/wiki/No_Silver_Bullet
       | 
       | RIP.
        
         | RantyDave wrote:
         | MMM is one of the very few things we all agree is right.
        
           | randomsearch wrote:
           | There are not many universally agreed truths amongst us
           | opinionated hackers, but indeed Brooks has bequeathed us one.
        
           | jwmcq wrote:
           | This is the best way I've seen it put.
        
       | rychco wrote:
       | I have fond memories of attending his "No Silver Bullet" lecture
       | only a few short years ago.
       | 
       | A favorite quote of mine from MMM: "The programmer, like the
       | poet, works only slightly removed from pure thought-stuff. He
       | builds his castles in the air, from air, creating by exertion of
       | the imagination. Few media of creation are so flexible, so easy
       | to polish and rework, so readily capable of realizing grand
       | conceptual structures...."
        
         | oblio wrote:
         | > Few media of creation are so flexible, so easy to polish and
         | rework, so readily capable of realizing grand conceptual
         | structures.
         | 
         | Yeah, and then you have the core banking system tied with
         | scotch tape and bubble gum in the 1950s, that drives a business
         | worth tens of billions of dollars and for which a modern
         | rewrite would probably cost a billion dollars.
         | 
         | And then you realize some pieces of software are harder than a
         | mountain made of titanium.
        
         | thundergolfer wrote:
         | "Castles in the air" was an inspiring quote to read as an
         | undergrad, and helped me recognize programming as my vocation.
         | 
         | I have a beautiful Docubyte print of the IBM-360 in my room, as
         | a reminder of the great endowment that is our computing past.
         | Well done to Brooks on a remarkable life's work.
        
         | Agingcoder wrote:
         | I came here to mention this quote.
         | 
         | I bought the book years ago when I was on my 'let' s learn
         | everything I can about computers and software ' spree. Very few
         | books have left such a lasting impression on me, even though at
         | the time I had no notion whatsoever of what professional
         | software engineering was like.
        
         | shever73 wrote:
         | One of my favourites too. I use this with my students all the
         | time to capture the magic of programming.
        
         | croes wrote:
         | The poet's words have a longer copyright.
        
           | criddell wrote:
           | A longer copyright, but no patent protection.
        
         | pjmorris wrote:
         | I read that section of MMM during a down time in my early
         | career where I was doubting my choice of programming as a
         | career because of my limitations. It buoyed my spirits enough
         | that I decided to stick with it and I am glad I did. I owe a
         | great personal debt to Brooks.
        
         | zelphirkalt wrote:
         | "No silver bullet" in itself must be one of the most misused or
         | misunderstood phrases used by people to argue not to try better
         | ways of doing things. If one suggests, that there is a safer or
         | somehow better tool to get the job done ... no silver bullet!
         | Your tool is not perfect for everything in the universe, so we
         | will not even use it where it works significantly better!
        
           | WesolyKubeczek wrote:
           | The thought that there is no ultimate perfect way to do
           | things is liberating, if anything. It means that we can pick
           | something we deem good enough and roll with it, or we can try
           | and find an infinity of other good enough ways with
           | acceptable tradeoffs, instead of searching for that end all,
           | be all holy grail. Or we can stop trying at some point,
           | because of diminishing returns. It's all okay.
           | 
           | The important thing is not to worry that what we have is
           | merely good, because the perfect might be waiting around the
           | corner. It's not.
        
             | kaba0 wrote:
             | Also, the most important part of that quote is that due to
             | there not being "free lunch" productivity boosts, we really
             | should focus on reusing existing libraries, "standing on
             | the shoulder of giants", not reinventing the wheel for each
             | platform/language.
        
               | zelphirkalt wrote:
               | "no free lunch" and "standing on ..." are 2 ideas, which
               | are also being misused by people in at least 2 ways: One
               | is to block, basically saying: "But no free lunch!
               | Somewhere there must be a cost, because someone else once
               | said no free lunch!", while it is very possible, that one
               | has done something in a way, which was silly from the
               | start and really could have a "free lunch", by switching
               | to a better way of doing it.
               | 
               | The other "standing on the shoulders of giants" is used
               | as justification for accumulating more and more
               | dependencies and not writing stuff oneself, no matter how
               | simple, which is how we get into left-pad-like territory.
               | 
               | We should indeed focus on reusing libraries, but please,
               | _good_ libraries and not ones, which impose limitations
               | in implementation as well as future thinking, by creating
               | a high mental barrier to change ("But if we switch out
               | this library we need to change aaalll this stuff, because
               | our code is adapted to how the library works.").
               | Sometimes adding a dependency is simply not worth it,
               | like in the left-pad scenario. Just write that one
               | function yourself and don't add more dependencies to the
               | project. Always weigh the benefit against the additional
               | load of dependencies added directly or indirectly as
               | dependencies of dependencies.
        
           | goto11 wrote:
           | To summarize, "No silver bullet" claims _no single
           | innovation_ will increase software developer productivity
           | tenfold across the board. He does not say an innovation can
           | 't increase productivity greatly in a specific area, neither
           | does he deny that many improvement can accumulate to a
           | tenfold increase.
        
             | P5fRxh5kUvp2th wrote:
             | It's also a warning against those proselytizing solutions.
        
             | kaba0 wrote:
             | Also, he speculated it decades ago (though, arguably it
             | still stands. There is no new managed language that would
             | be 10x more productive than any already existing one)
        
               | goto11 wrote:
               | He is not saying a "10x" language couldn't be invented,
               | he is saying a hypothetical 10x language wouldn't
               | increase overall developer productivity 10x.
               | 
               | His argument is developers use a lot of time on the
               | _intrinsic complexity_ of designing solutions for complex
               | problems. Representing these solutions in code is a
               | smaller part of the job. So even if a new language
               | increased coding productivity by 10x (like going from
               | assembler to C might) it wouldn 't increase overall
               | productivity with the same factor.
               | 
               | In short, the bottleneck is not the coding, the
               | bottleneck is our minds thinking about how to solve the
               | problem.
        
               | kaba0 wrote:
               | I reread the paper and I see what you mean -- due to
               | coding being only one part of the equation for
               | productivity, any increase in that area can only speed up
               | that part, not the whole (basically Amdahl's law).
               | 
               | But it does also mention that since the appearance of
               | high level languages, we are on a path of diminishing
               | returns:
               | 
               | "The most a high-level language can do is to furnish all
               | the constructs the programmer imagines in the abstract
               | program. To be sure, the level of our sophistication in
               | thinking about data structures, data types, and
               | operations is steadily rising, but at an ever-decreasing
               | rate. And language development approaches closer and
               | closer to the sophistication of users. Moreover, at some
               | point the elaboration of a high-level language becomes a
               | burden that increases, not reduces, the intellectual task
               | of the user who rarely uses the esoteric constructs."
               | 
               | Also, Brooks originally wrote this paper for a 10 years
               | timeline, and my point was mostly that even though we are
               | like 3 times over its original length, I still don't
               | think languages would be even 3 times more productive,
               | let alone more (and I won't buy empirical evidence of
               | your fav language, but some form of objective one).
        
             | rychco wrote:
             | When I attended his talk ~4(?) years ago on _No Silver
             | Bullet_ , the audience had the chance to ask questions
             | about recent technologies like ML/DL, AI (though CoPilot
             | didn't exist yet), modern safety features, etc. I wish I
             | could remember his exact responses to those questions, but
             | of course he still maintained that there is no silver
             | bullet :)
        
           | _0ffh wrote:
           | I suspect there is no bit of wisdom in the world, that is not
           | misunderstood, distorted, and abused by lesser people.
        
         | lolinder wrote:
         | The quote is worth reading in full, available here [0]. Brooks
         | captured so perfectly my own experience programming. Sometimes
         | the job is boring and hard, but then there are the moments that
         | are pure magic:
         | 
         | > Yet the program construct, unlike the poet's words, is real
         | in the sense that in moves and works, producing visible outputs
         | seperate from the construct itself. It prints results, draws
         | pictures, produces sounds, moves arms. The magic of myth and
         | legend has come true in our time. One types the correct
         | incantation on the keyboard, and a display screen comes to
         | life, showing things that never were nor could be.
         | 
         | [0] https://pages.cs.wisc.edu/~param/quotes/man-month.html
        
       | muh_gradle wrote:
       | May he rest in peace. Like many here, I was first introduced to
       | Dr. Fred Brooks through Mythical Man-Month, which has had a
       | tremendous impact in shaping my views on software. Afterwards I
       | saw some of his lectures that he held at UNC on Youtube, and
       | always wished I had attended UNC for my undergraduate studies.
        
       | avgcorrection wrote:
       | I wasn't impressed by Man Month. The two major insights IIRC:
       | 
       | 1. Adding more people adds overhead which slows down
       | productivity. Might even make it worse
       | 
       | 2. 10X developer (100X) mythology and how other programmers
       | should be their support secretaries
       | 
       | (1) is too obvious and (2) I didn't like for self-interest
       | reasons.
        
         | Jtsummers wrote:
         | > (1) is too obvious
         | 
         | If only.
         | 
         | https://www.military.com/daily-news/2013/06/19/lockheed-reas...
         | 
         | > Lockheed Martin Corp. has reassigned 200 engineers to work on
         | the F-35 fighter jet's software, a problem area that Defense
         | Department officials fear could cause more delays to the
         | program.
         | 
         | Somehow obvious to DOD, but not to LM. And that's just one of
         | the more high profile incidents I know of, I've witnessed
         | plenty of others (directly or indirectly) that never made news.
         | Nearly 40 years after MMM was published and people in major
         | corps still have to relearn the lessons.
        
           | Dalewyn wrote:
           | Consider that from Lockheed Martin's perspective: The F-35 at
           | that point is a program that is guaranteed to have money
           | flowing no matter what, it is too grandiose to fail. The
           | longer Lockheed Martin can protract the work and the more
           | excuses they can muster to rack up the monies needed (read:
           | monies they pocket), the better. The government cashcow will
           | give milk.
           | 
           | Lockheed Martin knew precisely that obvious fact of overhead.
        
       | AlbertCory wrote:
       | Sad. He was a giant.
       | 
       | I'm glad I got to at least shake his hand. One of the lawyers at
       | Google had studied under him, and when I saw them crossing the
       | street I just assumed the older gentleman with the visitor's
       | badge was Brooks (I didn't even know what he looked like, but I
       | found out later I'd guessed correctly).
        
       | drallison wrote:
       | Just a quick reminder: Fred Brooks did much more than write the
       | Mythical Man Month.
        
       | monksy wrote:
       | I'm pretty sad about this.
       | 
       | When I was in high school and learning how to program, he let me
       | borrow a copy of his Mythical Man Month book.
        
         | nl wrote:
         | So many question!
         | 
         | Was he at the school somehow?
         | 
         | Was Mythical Man Month useful for a high school programmer?
        
           | monksy wrote:
           | Not so much, at that time I was making projects putting them
           | out on the internet etc. I tried talking with other adults
           | that were programmers about some of the issues I had and
           | occasionally got advice.
           | 
           | But when I got to grad school.. their convervsations about
           | "the industry" and ways of working was massively
           | inexperienced. I also read a lot at that age. It also did
           | give me a leg up in identifying high pressure of
           | delieverying. (The 9 women in 1 month for a baby reference).
        
         | AnimalMuppet wrote:
         | Wait, what? You knew Fred Brooks when you were in high school?
         | How?
        
           | monksy wrote:
           | Church connections. I didn't know him personally, parents
           | did.
        
             | AnimalMuppet wrote:
             | Still cool.
        
         | monero-xmr wrote:
         | Don't be sad - he lived a long productive life full of people
         | he impacted, and as you can see from the comments here he was
         | well respected. All of us will die one day, let's not feel
         | sadness.
        
           | sirsinsalot wrote:
           | Let's not try and tell others what is OK and not OK to feel.
        
           | cortesoft wrote:
           | Nothing you said means you can't feel sad. No matter how long
           | and full someone's life is, there is still sadness when they
           | are gone. It doesn't have to be debilitating sadness, but it
           | is ok to feel sad.
        
       | pieterr wrote:
       | Dr. Brooks on No silver Bullet (while eating pizza).
       | 
       | https://youtu.be/HWYrrw7Zf1k
       | 
       | RIP Dr. Brooks.
        
       ___________________________________________________________________
       (page generated 2022-11-18 23:00 UTC)