[HN Gopher] A developer's guide to programatically overcome fear...
       ___________________________________________________________________
        
       A developer's guide to programatically overcome fear of failure
        
       Author : kiyanwang
       Score  : 248 points
       Date   : 2021-10-31 11:27 UTC (11 hours ago)
        
 (HTM) web link (www.pagerduty.com)
 (TXT) w3m dump (www.pagerduty.com)
        
       | GDC7 wrote:
       | We have to somehow hack ourselves and make our brains love
       | winning/succeeding.
       | 
       | I think we mostly don't love winning or succeeding per se, even
       | when that happens it's not the joy of winning and succeeding as
       | much as it is the relief of not having crashed and burned.
       | 
       | The whole mental process is dominated by loss aversion, not by
       | victory enthusiasm.
        
       | crispyambulance wrote:
       | I think whole swathes of the SWE community are behind the times
       | when it comes to responding to crisis.
       | 
       | There are models for how to handle this stuff in other
       | industries. What comes to mind is "Tiger Teams" and "EMS
       | services". Both of these involve the deliberate creation of
       | special organizational structures that respond to crisis. For
       | both of them that means contingency planning and, importantly,
       | practice. It's largely about training for things that might
       | happen and thus being ready when they do happen-- even if they're
       | not exactly what was expected.
       | 
       | Sadly, the model for crisis management in SWE (in most places) is
       | just throwing around the word "accountability", putting people in
       | the hot-seat, and hoping for the best. You end up with "hero-
       | based" crisis management. In fiction, that works out great (James
       | Bond types always win), but in reality you just end up with
       | stressed-out people and flaky systems.
        
         | JJMcJ wrote:
         | Some companies, ones large enough to have serious SRE staffs,
         | have 24 hour staffing of an operations center, and a War Room
         | where people can huddle until a problem is fixed.
         | 
         | If they are smart, they have ways to roll back offending code.
         | 
         | But any company smaller than say a regional bank is going to
         | have trouble affording this.
         | 
         | Now, if you using a cloud provider, you can design in rollback.
         | 
         | But of course there are surprises. A scenario I just thought
         | up, when you discover on Black Friday that your order system
         | can't handle more than 1048575 (that's 2 to the 20th minus 1,
         | just to pick a slightly plausible number) orders in one day,
         | and this limit is deep in your code and architecture.
        
           | cactus2093 wrote:
           | The trend I've seen in big tech is that microservices
           | architectures kind of negate a lot of this benefit though.
           | Yes, there might be SRE's who are on-call for existential
           | company-wide outages, and ideally they have some general
           | knowledge about some of the biggest systems and common causes
           | of issues. But for any issues that are due to bugs in the
           | code or configuration of one particular service (which is
           | usually most issues), there is a separate on-call rotation
           | for each service. These folks are mostly just regular
           | engineers that are primarily responsible for building
           | features and delivering under time pressure and don't have
           | the luxury of a lot of training & practice dealing with
           | incidents until they happen for real.
        
           | lamontcg wrote:
           | So after a year of two of oncall at Amazon (it was long
           | enough ago that we were oncall for the whole thing, long
           | before SRE roles were ever invented) the biggest thing I
           | learned was that nobody was dying and it wasn't actually
           | fire-fighting and we shouldn't be using analogies like War
           | Rooms and all these other War/EMS/fire analogies.
           | 
           | I've never worked in one of those jobs, but I've actually
           | dragged dead bodies out of the water due to scuba diving
           | accidents and analogizing IT outages to real life fatalities
           | is almost sort of like how we think about holocaust/nazi
           | comparisons and shouldn't use those casually. The industry
           | really needs to chill out a bit about the impact, nobody is
           | generally dying for the kinds of things we're talking about
           | where the website is just down (obviously some IT really is
           | life-affecting, and in finance people can be hauled off to
           | jail by the SEC, but we're generally not talking about those
           | industries here).
           | 
           | There are some processes such as accident analysis from
           | aviation and aerospace which are useful, but could be used a
           | bit more dispassionately. Blameless postmortems are also
           | better than blamestorming, although I think there is a bit of
           | a limit (at some point you may really have a bad team
           | producing poor architecture which is constantly knocking the
           | website over and you need to kick someone out, that isn't the
           | purpose of an engineering postmortem though, that should
           | happen at a management level).
           | 
           | I'm also weird and I don't really feel a lot of guilt (never
           | raised religious might have something to do with it) and I
           | just naturally understand how "shoulds" are bad and find it
           | mildly appalling how Millennials love to throw the word
           | "shame" around for situations where it really doesn't apply
           | (your sportsball team shouldn't really be "shamed" if they
           | lose). The broader population could do with a reassessment of
           | shame and guilt and perfectionism and "shoulds".
        
         | throwaway984393 wrote:
         | Back in the day (and still today, sadly) SWEs had nothing to do
         | with how their code was run. You paid Operations Engineers to
         | staff a NOC and build an entire practice around preventing and
         | responding to crises. The SWEs would commit their code, push a
         | deploy button, and go home for the day (at 5PM on a Friday),
         | oblivious to any chaos that might ensue.
         | 
         | I still meet SWEs who seem to believe they have no
         | responsibility for any failures resulting from their code if it
         | "worked for them in dev". No responsibility to design their
         | code to resist failures or security issues in production, nor
         | re-design it if the current design is failure-prone. No
         | responsibility to performance test, functional test, or check
         | with other teams on what a change might impact at scale. No
         | need to come up with a rollback plan or test it.
         | 
         | If their product makes a ton of money, upper management enables
         | this attitude, because nobody wants to kill the golden goose or
         | risk losing its developers. It's a question of priorities. If
         | the business does not require SWEs to care about risk, failure,
         | reliability, etc, then they won't.
        
         | dividedbyzero wrote:
         | I think some orgs are getting there, with SRE teams and red
         | team exercises and the like. But I agree the overall industry
         | is still deep in the 19th century, as far as managing this
         | specific set of risks goes.
         | 
         | > What comes to mind is "Tiger Teams" and "EMS services"
         | 
         | I know EMS services of course, but what are Tiger Teams? A
         | cursory Google search didn't turn up anything useful. Any
         | pointers where I could learn more about them?
        
           | crispyambulance wrote:
           | "Tiger Teams" are relatively common in large technical
           | organizations (usually outside of computing).
           | 
           | I have seen them at a linear accelerator facility and also in
           | large factories. I think the first time the name was used was
           | in the NASA space program (and looking at the wikipedia link
           | someone provided that appears to be correct).
           | 
           | Basically, they are teams that are put together to deal with
           | ongoing critical cross-cutting problems in the organization.
           | They are, by nature, cross-functional. Large orgs tend to put
           | talent into silos. Silo'd talent can make the org vulnerable
           | to weird problems where no one feels enough agency to act
           | using the excuse-- "it's not my job". A Tiger Team is
           | intended to work across silos.
        
           | niea_11 wrote:
           | It's the first time I hear about Tiger teams too. Here is a
           | Wikipedia article : https://en.wikipedia.org/wiki/Tiger_team
        
       | Luigilacorte wrote:
       | Even with a framework like this, it's hard to get past the
       | visceral fear if failure. It's only with practicing failure do we
       | get accustomed to it.
       | 
       | Tony Hsieh from Zappos famously does one thing a day that scares
       | him. At a certain point, potential failure is as scary as just
       | trying something new.
        
         | fortran77 wrote:
         | And it worked really well for Tony:
         | 
         | https://www.nytimes.com/2021/01/26/technology/tony-hsieh-dea...
        
           | bloodyplonker22 wrote:
           | You're one of those people that never takes risks and never
           | really does anything and just has a plain jane life, aren't
           | you. But, obviously, you're quick to laugh at others'
           | misfortunes for trying to do things.
        
         | nonbirithm wrote:
         | And seeking out or even opening yourself up to a chance of
         | failure gives certain people a risk of falling into a spiral of
         | depression. I am not even sure that going for desirable yet
         | challenging goals is even an option for these people if too
         | much failure will destroy their confidence about life in
         | general, whether or not that is a consequence that logically
         | follows.
         | 
         | If you're weighing an option that opens you up to a higher risk
         | of failure than other options, then depending on what type of
         | person you are, you may have to evaluate whether you have
         | enough of a support network or other "cushion" to absorb the
         | mental blow of failure first. Failure is something that can be
         | gotten used to, but before it is, you have no choice but to get
         | past the damage to your mental health the failure causes, and
         | some people are not capable of managing that on their own.
         | 
         | This is why I have to sometimes frame my decisions as: "Because
         | I will fail considerably more often if I choose this path, I'm
         | giving myself a considerable risk of becoming a miserable wreck
         | incapable of doing the things I'm capable of now, or worse. So
         | for the sake of preserving my mental stability, I will have to
         | do something else."
        
       | prismatix wrote:
       | When interviewing a while back, I was asked to reflect on my
       | failures. Only then did I realize that failure was not in my
       | mental model of my experiences. I had a hard time thinking of a
       | "failure". It's not that I had never had any, it's just that I
       | had been so accustomed to the idea of thinking of them as
       | learning experiences rather than failures. I wouldn't say I'm the
       | most accomplished person by any means, but I certainly have a
       | tried-and-true way of getting through so-called "failures", and
       | part of that has to do with not even including failure in my
       | vocabulary of my experience.
        
       | testemailfordg2 wrote:
       | Probably a small learning for all of us here - test your code
       | with the data you already hold in production.
        
       | known wrote:
       | "Courage is mastery of fear, not absence of fear" --Mark Twain
       | (b. 1835)
        
       | drawqrtz wrote:
       | Apologies if this is not quite on topic, but this definition of
       | shame really spoke to me:
       | 
       | "When a person feels that he or she is becoming his or her
       | undesired or feared self."
       | 
       | I feel like a lot of my motivation to better myself and help
       | improve my environment comes from that feeling. It's as if i have
       | a very clear picture of who/what i dont want to become, but not
       | so clear on what the "ideal me" would be.
       | 
       | Is this something that motivates HN as well or do you try to
       | realize an ideal(?) version of you through your thoughts/actions
        
       | giaour wrote:
       | Don't we all just chant the "Fear is the mind killer" Bene
       | Gesserit litany until the fear of failure dissipates?
        
       | quadrifoliate wrote:
       | The fact that this is on a pager app company's site immediately
       | sets off some alarm bells.
       | 
       | "Systematically overcome your fear of failure" is a great
       | principle, but why is PagerDuty of all companies promoting this?
       | I can't help but think this is an attempt to market some kind of
       | product, but I can't figure out what it is.
        
         | toomanybeersies wrote:
         | > why is PagerDuty of all companies promoting this?
         | 
         | To drive traffic and increase sales of PagerDuty. It reads like
         | pretty standard content marketing to me.
        
       | zz865 wrote:
       | My deep seated fear is that some fundamental infrastructure will
       | fail, Database, dns, DDoS, there are so many things that can go
       | wrong. Esp with big old code bases.
       | 
       | Many developers really dont care what happens in production,
       | leaving a subset to stress out. Perhaps the solution is just be
       | like the people who just expect problems and accept it.
        
         | pseudoramble wrote:
         | I hear you, it isn't great when people are apathetic to what
         | happens in prod, especially when there are things that can be
         | done.
         | 
         | That being said, here's another way to view it: of all of those
         | deep seated fears you have, what do you know you can do to
         | avoid certain issues and what can you actually not do?
         | 
         | Let's take the database for example. What's the deep seated
         | fear here? Maybe:
         | 
         | > The disks crash, the data center bursts into flames and all
         | the data is gone!
         | 
         | A solution to those is perform backups and get the backups off-
         | prem. You have to explain the risk and justifications to the
         | company as best as you can. Once you've done that, what is
         | left?
         | 
         | Technically speaking, bugs in the backup script could exist, or
         | maybe the backups get corrupted. Beyond that, there are the
         | human ones. Maybe somebody else manages the script and breaks
         | it, or maybe backups get unintentionally poisoned by malware
         | getting into the backups. Or maybe even before that happens the
         | company goes "eh, risk worth taking to save costs!" and you
         | don't even get to implement the backups.
         | 
         | Here's the thing: these things are _not_ in your control at
         | this point! They are out of your hands, and with humans like us
         | who make mistakes like us. So problems are going to be
         | expected, especially ones you don't realize right now. But
         | they're not in your control! And yet, you did your part, and
         | things will continue on.
        
         | rconti wrote:
         | As someone with a background in infrastructure operations, it
         | always felt like we were the ones who cared and stressed out,
         | and development didn't (have to) care.
         | 
         | These days, particularly in microservices, more and more
         | developers are on call for their work, so they care more.
         | 
         | Still, I find a radical misalignment between my mentality,
         | where you CANNOT make mistakes because you're working without a
         | net, and development, where typically there are more layers of
         | safety. I'm far, far more cautious and anxious about making
         | changes and breaking things; they've historically been paid to
         | produce. If I try to have a conversation about it, they're
         | unable to grok that their threshold for the acceptability of
         | making mistakes is much higher than mine is.
         | 
         | You NEED to be able to make mistakes in order to be able to
         | produce, but it's a hard mentality shift.
        
       | ChrisMarshallNY wrote:
       | TDD starts with failure.
       | 
       | I don't really subscribe to TDD, but they have a valid point:
       | Start with something that doesn't work, and work on it, until it
       | works.
       | 
       | I tend to develop my software in a similar way, but I also start
       | with a "fuzzy" design, which would give TDD people fits.
       | 
       | I fail every day. Repeatedly. It's how I end up with some damn
       | good software, at the end of the day.
        
         | agumonkey wrote:
         | failure + exploring solution space + minimizing said space <= I
         | need a book about that :)
        
           | ChrisMarshallNY wrote:
           | I could probably write one, but writing books is _hard_. I am
           | still smarting from the time I wrote a 400-page book, that
           | was out of date before it could be published.
           | 
           | I do have a blurb that discusses my design philosophy here:
           | https://littlegreenviper.com/miscellany/evolutionary-
           | design-...
        
             | agumonkey wrote:
             | "Vague" systemic exploration is interesting, having live
             | prototypes to modify and refine gradually, to gain
             | knowledge and maybe readjust the substructures.
        
               | ChrisMarshallNY wrote:
               | Here's an object example:
               | 
               | I'm developing a fairly ambitious iOS app.
               | 
               | It's a social media-like app, based on aggregate servers.
               | I wrote the servers, myself, years ago. One is currently
               | a world standard, and heavily in use. The other, was a
               | server I wrote a few years ago as a "practice" project.
               | 
               | The app, itself, has been under development for over a
               | year.
               | 
               | A big reason for that, is the team had only a vague idea
               | of what it would do. It wasn't really feasible to get
               | them to hash out a more detailed plan, so I set up a
               | "breadboard" system, based on Apple's TestFlight beta-
               | test system [0]. TestFlight is usually only engaged
               | towards the very end of a project, but we've been using
               | it since one month after my initial checkin.
               | 
               | TestFlight requires a fairly "complete" app, that runs
               | without tripping any alarms (like crashing). Apple vets
               | each release.
               | 
               | I can produce a fairly full-featured app, quite rapidly,
               | so I was able to meet Apple's quality bar, pretty
               | quickly.
               | 
               | Because we are using TestFlight, we have some significant
               | advantages:
               | 
               | 1. The app is _constantly_ at "beta" quality. Even with
               | incomplete functionality, what's there, works well. I
               | cannot overstate the importance of this.
               | 
               | 2. We can have non-technical stakeholders constantly
               | "test driving" the UI, and providing relevant, useful
               | feedback, on a continuous basis. They are also highly
               | motivated and engaged.
               | 
               | 3. Because Apple is constantly vetting the app, we know
               | that we probably won't have any nasty surprises, when we
               | finally release.
               | 
               | During this year, we have explored a number of avenues
               | that have resulted in "dead ends." I've tossed out
               | months' worth of work.
               | 
               | That's great. The best code I write, is the code I don't
               | write. I'm happy to tear out huge chunks of code.
               | 
               | The result is that we now have a clear, robust, ultra-
               | high-quality app that is in the final stages of
               | development. I still have a couple of areas of
               | functionality to add, but we're done prevaricating. We
               | know where we're going, and everyone is on board and
               | psyched.
               | 
               | The quality of the app is also, quite frankly, jaw-
               | dropping. We're all thrilled to death.
               | 
               | Using TestFlight has allowed us to work through a lot of
               | stuff that is often encountered during early MVP stages;
               | without the brand damage and public humiliation.
               | 
               | [0] https://developer.apple.com/testflight/
        
         | peterburkimsher wrote:
         | TDD has some excellent philosophy behind it, but I struggle to
         | implement it because I get discouraged by failure, and move on
         | to other topics.
         | 
         | If the TDD approach said "thank you" for the good parts (code
         | structure, not breaking 500 other test cases), that would make
         | the 13 errors less scary. One of the things I like about
         | software is that it's "soft" - it should be possible to make
         | changes without the fear of getting it wrong, and be able to
         | fix them _now_ while I see the problem, rather than
         | procrastinating until later when I 've forgotten about it.
         | 
         | The same "thank you" system applies when working with external
         | contractors (e.g. language translations). We can assume they
         | tried their best, and therefore might not know what else to
         | say. Reporting 19 problems will get us a reputation for being
         | nitpicky, hostile, even toxic. Rather, we should thank them for
         | the 730 that they got right, and suggest improvements for the
         | 19 that we think might be better.
         | 
         | With thankfulness and encouragement, TDD could really change
         | the industry for the better.
        
           | ChrisMarshallNY wrote:
           | I like your attitude.
           | 
           | I've always preferred carrots over sticks.
        
       | dgb23 wrote:
       | Who do you trust more?
       | 
       | Someone who never makes mistakes or someone who deals with their
       | mistakes openly and directly?
       | 
       | We know the first one doesn't exist. Some people like to make us
       | believe that, but it's bullshit.
       | 
       | However, one big caveat: Owning mistakes, being open about them
       | doesn't absolve us from making them, especially not in the
       | future. We still _made_ the mistake. Should we dwell on that or
       | get punished? Likely not. Severity, intention and so on matter
       | too. But should we simply not feel bad about it? "Embrace
       | mistakes"? Not so sure about that either.
       | 
       | When we say "embrace mistakes", what we really mean is "embrace
       | learning". Mistakes are opportunities to learn for ourselves and
       | others indirectly.
       | 
       | We shouldn't be victims of our bad feelings and beat ourselves
       | up. I did that for years. It crushed my confidence and well-being
       | into submission and years after I'm still recovering from that.
       | But the solution is not to try and make us feel good about
       | ourselves regardless. It's not _just_ a psychological problem.
       | 
       | Mistakes happen for a reason, even if they are as simple as "I
       | didn't write that down". They happen all the time, we can't
       | prevent that, but what we can do is decide what kind of mistakes
       | we want to face and ultimately what kind of problems we want to
       | solve, be able to solve - for us and others.
       | 
       | Don't get bogged down, don't beat yourself up and don't let
       | others beat you up for your mistakes. But make yourself aware
       | that you can actually learn from them and decide for yourself
       | when you want or need to put the energy into doing that.
        
         | ChrisMarshallNY wrote:
         | I have a friend that used to drive trucks for mobsters, in New
         | York.
         | 
         | He tells me a story about how he drove his truck under a low
         | bridge, and did about $20,000 worth of damage to it.
         | 
         | When he got back, he was expecting to get fired (or worse).
         | 
         | Instead, his boss asked him what he'd learned from the mistake,
         | and gave him his next assignment. When my friend asked
         | (incredulously) why he didn't get fired, his boss answered "I
         | just spent twenty thousand bucks, training you to be careful of
         | clearance. You think I'm gonna toss that out?"
         | 
         | My friend says he learned a lot about management from these
         | goombahs. They were managing _very_ dangerous people, who were
         | big investments, and couldn 't be treated badly or
         | disrespectfully.
        
           | RustyConsul wrote:
           | This story is an exact mob version of the story Horowitz told
           | in hard things about hard things
        
         | suketk wrote:
         | Exactly. We tend to underestimate the power of compounding wrt
         | learning from your mistakes. Two things that are important
         | here: honesty (you can't fix what you don't know) and
         | consistency (tight feedback loop = faster compounding).
         | 
         | This extends far beyond software programming. It applies to any
         | form of self-development. I actually developed a habit
         | formation program framework [0] built off of these principles
         | (and a couple others, e.g aligned incentives, bias towards
         | action, writing is thinking).
         | 
         | Here are examples of programs using it:
         | 
         | * https://themoai.org/work-life-balance
         | 
         | * https://themoai.org/intentional-technology
         | 
         | [0] https://themoai.org
        
         | webmobdev wrote:
         | And sometimes even if you are an expert, you may still make a
         | mistake if you aren't in an optimal frame of mind - for
         | example, if you didn't sleep or eat properly or had an
         | altercation with someone, or your normal routine got messed up
         | ... sometimes it is just that - a shitty day in your life with
         | nothing to learn but to just go through it.
        
         | qsort wrote:
         | I like this point of view.
         | 
         | I get why people are saying things like "normalize mistakes"
         | etc, living in some kind of police state environment that
         | punishes every misstep is just miserable. _Especially_ if you
         | 're working in software, where "no mistakes" is not a
         | reasonable standard.
         | 
         | OTOH it shouldn't become an excuse for complacency, and
         | especially not an excuse to tolerate incompetence and/or
         | totally unforced errors.
        
       | notjustanymike wrote:
       | Whenever I start something new, I accept failure immediately. It
       | frees my brain to enjoy my mistakes; the more mistakes, the more
       | I learn. The worst thing that can happen with something new is I
       | do nothing wrong.
        
       | greenyouse wrote:
       | If you were working on a production system that had a failure,
       | you'd probably want to dig into the why behind the failure and
       | take some steps to keep it from happening in the future. Why not
       | apply the same to your own failures and treat them as an
       | opportunity to improve yourself? I like the idea of tracking my
       | own personal performance to help mitigate future problems.
       | 
       | There is probably only going to be a retro for the incident if it
       | was something really bad. Even then it's not going to focus on
       | you, it'll be more about cross team efforts and higher level
       | issues.
       | 
       | Having a personal tracker may help you understand your own weak
       | spots, common sources of problems, and trends in your work. For
       | each incident look at things like why it happened, what could
       | have been done to avoid it, and the context that the mistake was
       | made in (e.g. we had three issues going at the time and were
       | under a product deadline for X which was due in the next two
       | weeks).
       | 
       | To measure performance you could classify the mistake type and
       | plot it over time. It could be something general like the
       | preventable/complex/innovative buckets stated in the article with
       | technical details like: missed the bug during PR review,
       | misunderstood the system architecture, missed handling an edge
       | case, etc. Having the issues clearly stated for yourself should
       | help you not make a similar mistake going forward. If you have a
       | trend in the data you can focus your personal development on
       | areas where you're weak. Keeping a reference of issues that have
       | happened should help with understanding the problem history a
       | year later too. That could be good for planning future work since
       | you'll know where some of the hard spots might be.
        
       | vesuvianvenus wrote:
       | I think acceptance and comfortability with error messages (i.e.
       | small failures nearly every step of the way) is the basis of
       | one's career as a developer. We start knowing almost nothing,
       | producing tons of errors as we go (which reduce relative to
       | experience). And learning what those errors mean-- they guide us
       | into proper development.
       | 
       | Errors are good given that they lead to learning. Frustration is
       | fun.
        
       | MeinBlutIstBlau wrote:
       | Learn to not care. Learn to not care about being fired, losing
       | everything, and dying in general. For me, the moment was like a
       | longer more drawn out experience like that of Office Space. But
       | it became that. I didn't care what happened, who screwed what up,
       | or what expectations were of me. Fire me if you don't like it.
       | Now you're really gonna be screwed having to pick up the slack
       | without me there.
       | 
       | Once I unlocked this, the world became flat. I didn't care about
       | the journey, just the goal. Whip something up. Learn how to
       | socially manipulate expectations. Make it seem like you work.
       | Half ass something and convince people there were significant
       | difficulties.
       | 
       | None of your code matters. You are paid to support. Not to
       | reinvent the wheel. So support it with the easiest code possible.
       | Quit trying to do something fancy. It doesn't help when layoffs
       | come about. What does is cozying up to VP's and management who
       | know you work and get things done. Your portfolio means fuck all
       | if not a single person knows what you do, even if you are a
       | better programmer.
        
       ___________________________________________________________________
       (page generated 2021-10-31 23:00 UTC)