[HN Gopher] Dad and the ten commandments of egoless programming ...
       ___________________________________________________________________
        
       Dad and the ten commandments of egoless programming (2012)
        
       Author : grzm
       Score  : 73 points
       Date   : 2022-01-15 05:38 UTC (1 days ago)
        
 (HTM) web link (blog.stephenwyattbush.com)
 (TXT) w3m dump (blog.stephenwyattbush.com)
        
       | abotsis wrote:
       | #9 took me years to realize. Even more when you have an idea,
       | share it, someone who's not in the corner takes it and runs with
       | it. That experience is even more isolating because the immediate
       | reaction is to just not share any more ideas.
       | 
       | It took me even more years to master- because sure, not being in
       | the corner is one thing, but getting out of it is another. It
       | took a manager who listened to me and thrust me out to fix it.
        
       | dang wrote:
       | One past thread:
       | 
       |  _Dad and The Ten Commandments of Egoless Programming (2012)_ -
       | https://news.ycombinator.com/item?id=9203634 - March 2015 (75
       | comments)
        
       | mcguire wrote:
       | " _Don't rewrite code without consultation. There's a fine line
       | between "fixing code" and "rewriting code." Know the difference,
       | and pursue stylistic changes within the framework of a code
       | review, not as a lone enforcer._ "
       | 
       | There's a corollary to that: when you are working on someone
       | else's code, don't restyle or re-architect to fit your vision.
       | Don't even use your style or preferred architecture or design on
       | your own additions; try to blend in with the rest of the code.
        
       | skmurphy wrote:
       | This article is a direct lift from
       | https://blog.codinghorror.com/the-ten-commandments-of-egoles...
       | the bulk of it is a verbatim copy of Atwood's summary without
       | credit.
       | 
       | These rules do not appear in this form or as a list of "10
       | commandments" in "Psychology of Computer Programming."
        
         | [deleted]
        
       | 541 wrote:
       | > You are not your code...
       | 
       | As simple and important as this is for productive code reviews, I
       | observed in my experience that it's not as common a trait as one
       | expects it to be. I can maybe attribute it to the stigma that is
       | more deep rooted. In setups where rigorous code reviews are not
       | norm, I notice, many if not most people, take the comments on
       | their code as comments on self. Given how rampant this is at
       | several workplaces, what ways/processes can be recommended to be
       | adopted in such setups to have more productive, open and
       | meaningful reviews and ease breaking the stigmas associated?
        
       | Mageek wrote:
       | This is a great list - thank you. I learned a long time ago to
       | not use "you" or similar in code reviews, as it is too easy to
       | associate a critique of code with a critique of the coder.
       | Changing "You should change this" to "This should be changed" or
       | even "We should change this" can make a world of difference.
        
         | wnolens wrote:
         | Yes, the "we" in place of "you" is a meaningful difference I've
         | noticed in code reviews.
         | 
         | Having to participate in a development team has made me a bit
         | of a nicer person, as my default reaction is to blame. But
         | that's completely inappropriate.
        
           | merlincorey wrote:
           | The power of "we" in not just Code Reviews but in
           | Architecture, Design, and even Mentoring is quite strong in
           | my experience.
           | 
           | It sounds like "this one trick" but it truly is that
           | effective.
        
       | mkl95 wrote:
       | I agree with all of it. I find commandment 2 to be the most
       | enlightening one.
       | 
       | > You are not your code. Remember that the entire point of a
       | review is to find problems, and problems will be found. Don't
       | take it personally when one is uncovered.
       | 
       | In my career, I have had to deal with other senior developers who
       | would throw tantrums whenever I pointed out something problematic
       | about their code.
       | 
       | Over the years, there's something all those people seem to have
       | in common - they are stuck in an endless loop of making mistakes
       | and refusing to learn from them.
        
         | hutzlibu wrote:
         | "Over the years, there's something all those people seem to
         | have in common - they are stuck in an endless loop of making
         | mistakes and refusing to learn from them."
         | 
         | I feel this sadly describes many partnerships, as well as great
         | parts of society and humanity as its whole. But I am
         | optimistic, that this can change, without a big catastrophic
         | event needed for people to wake up.
        
       | ChrisMarshallNY wrote:
       | I absolutely _love_ that!
       | 
       | Thanks so much for sharing it, and it was a great story.
        
       | mwattsun wrote:
       | I've been familiar with the concept of egoless programming [1]
       | since early in my career (mid 80's). I was drawn to it because I
       | was also attracted to Eastern philosophies about minimizing your
       | ego and identity to be more aware and in the moment (mediation,
       | mindfulness). There was another idea that I was drawn to at the
       | same time "Flow: The Psychology of Optimal Experience" by Mihaly
       | Csikszentmihalyi [2]. Egoless programming and flow became linked
       | for me. I think for this reason I've always had trouble with 9
       | 
       | > 9 Don't be "the coder in the corner."
       | 
       | I understand the spirit of it, but I'm sure you can think of
       | great programs written by one person. We had an example of that
       | on the front page of HN yesterday, "Essence: Desktop operating
       | system built from scratch" [3]. I'm currently learning Elm and
       | that project has also had issues because the lone creator
       | maintains tight control and doesn't handle feedback the way
       | people would like him to, "Why I'm leaving Elm" [4].
       | 
       | So while I think Gerald Weinberg's book "The Psychology of
       | Computer Programming" [5] is really great for interacting with
       | your team (don't personalize, don't get defensive, or worse,
       | offensive) you still need some ego to interact with people.
       | 
       | To me "Egoless programming" is more about getting yourself out of
       | the way when coding, much like a basketball player loses him or
       | herself in the game. If while I'm writing code, in the back of my
       | mind I'm thinking "Oh, this is dumb, people are going to
       | criticize this", like I have a backseat driver, then that's ego
       | getting in the way.
       | 
       | The flow idea is to get your ego out of the way. That's the best
       | egoless programming.
       | 
       | [1] https://en.wikipedia.org/wiki/Egoless_programming
       | 
       | [2] https://www.goodreads.com/book/show/66354.Flow
       | 
       | [3] https://news.ycombinator.com/item?id=29950740
       | 
       | [4] https://news.ycombinator.com/item?id=22821447
       | 
       | [5]
       | https://www.google.com/books/edition/The_Psychology_of_Compu...
        
       | vanusa wrote:
       | Many timeless truths in this piece. Thanks for posting.
        
       | watwut wrote:
       | For me egoless programming means I just cease to care. I do it
       | for money and I am glad when the day is over.
       | 
       | If I have ego in it, I care more. I will do more, test more,
       | refactor more, design better.
        
         | metters wrote:
         | The article does not mean being ego-less about the product, the
         | customer, or the user. It means being ego-less about yourself
         | as a developer, at least that's how I understand it.
         | 
         | In other words, do not stop to care about the product, the
         | customer, or the user. Stop caring about __your ego__, when
         | other developers criticize you (in contrast to not caring when
         | they criticize you)
        
           | watwut wrote:
           | That is how I mean it too. For me it means not caring, as I
           | said.
           | 
           | I have also found that accepting all criticism from other
           | developers makes me the submissive one. They are not always
           | correct, pushing back when they are not matters a lot.
           | Otherwise you get more and more absurd complaints.
        
             | tuyiown wrote:
             | Maybe by seeing it that way: imagine you are emotionally
             | invested, <<caring>>, but the only thing that change is the
             | way you interact with others, directly, or through the code
             | you push.
             | 
             | Examples
             | 
             | * I don't like this code style , I'll post mine -> I'll
             | replicate the code style, maybe I'm missing something, and
             | if not I'll discuss it and propose my pref on next review
             | 
             | * reviewer suggested a change that would introduce an
             | error, or something smelly -> treat it as welcomed
             | feedback, make sure to perfectly understand the seemingly
             | subtle difference in approaches, and with a thorough
             | explanation.
             | 
             | Your general antidote against bad effects of ego is to
             | convert the emotion into a genuine effort to demonstrate
             | your point. It's hard, and failure to explain properly
             | backfire, but it's probably visible in your work too, so
             | it's great reality check to measure where your ego or
             | humility should be
        
             | metters wrote:
             | This is a good point and a perspective I neglected.
             | Usually, when receiving feedback on my code I solve this by
             | discussing the _why_ after receiving a _what_ as feedback.
             | 
             | When giving feedback, I try to do the same: Instead of just
             | saying what is bad/wrong/smelly etc. and telling how to
             | change the code I'll also give the reasons why I think so.
             | 
             | The discussion afterwards should clarify the remark and I
             | am open to the possibility that I am wrong. But you are
             | right, at the moment I feel like currently I am giving up
             | my approach/code too easily. This is partially because my
             | colleagues are quite experienced and I'm very lucky to be
             | able to learn from them.
             | 
             | Edit: Improved the punctuation.
        
       | amelius wrote:
       | Sounds like a bunch of personality traits which are good to have
       | in theory, but hasn't psychology taught us that you can't change
       | personality even if you try very hard?
        
       ___________________________________________________________________
       (page generated 2022-01-16 23:00 UTC)