[HN Gopher] No dogs were harmed in the making of this app
___________________________________________________________________
No dogs were harmed in the making of this app
Author : ShMcK
Score : 459 points
Date : 2023-11-03 13:47 UTC (1 days ago)
(HTM) web link (shmck.substack.com)
(TXT) w3m dump (shmck.substack.com)
| jjgreen wrote:
| A good Friday story.
| imchillyb wrote:
| I read this on break and needed to hear these words of
| encouragement and hope.
|
| Thank you for sharing your misadventure with us.
| feintruled wrote:
| That's quite a tale, a parable almost about how software
| engineering differs from other jobs (I want to say 'real' jobs
| but tongue in cheek). I like this one too, it's even snappier.
|
| A software engineer, a hardware engineer and a department manager
| were on their way to a meeting in Switzerland. They were driving
| down a steep mountain road when suddenly the brakes on their car
| failed. The car careened almost out of control down the road,
| bouncing off the crash barriers, until it miraculously ground to
| a halt scraping along the mountainside.
|
| The car's occupants, shaken but unhurt, now had a problem: they
| were stuck halfway down a mountain in a car with no brakes. What
| were they to do?
|
| "I know," said the department manager, "Let's have a meeting,
| propose a Vision, formulate a Mission Statement, define some
| Goals and by a process of Continuous Improvement find a solution
| to the Critical Problems, and we can be on our way."
|
| "No, no," said the hardware engineer, "That will take far too
| long, and besides, that method has never worked before. I've got
| my Swiss Army knife with me, and in no time at all I can strip
| down the car's braking system, isolate the fault, fix it and we
| can be on our way."
|
| "Well," said the software engineer, "Before we do anything, I
| think we should push the car back up the road and see if it
| happens again."
| shadowgovt wrote:
| The big advantage to software engineering is we deal in
| abstractions. I liken it to building castles in the clouds;
| everything down to the foundation is reshapeable.
|
| ... the big disadvantage to software engineering is we deal in
| abstractions. Everything down to the foundation moves.
|
| http://thecodelesscode.com/case/154
| xkcd-sucks wrote:
| Also, software is right now primarily a means of codifying
| human thought, which means it embodies the whole spectrum of
| human sanity and competence
| hathawsh wrote:
| That deep thought seems especially appropriate for XKCD,
| yet your username curiously suggests you would disagree.
| lostlogin wrote:
| > I liken it to building castles in the clouds
|
| You're very positive. When you see a developer dealing with a
| bug, it seems more like they are dealing with a turd palace
| floating in a sewer.
| qup wrote:
| Turds are shapeable, too. Hard to polish, I've heard.
|
| But you control the poopy stack.
| cgriswald wrote:
| > [Turds are] hard to polish, I've heard.
|
| Mythbusters did it:
|
| > Adam and Jamie first visited the zoo to obtain a
| variety of feces to try to polish. Poop collected, they
| tried to pick the most polishable candidates, and then
| baked them to remove the moisture. Adam tried to shine
| his poop with a buffing wheel, while Jamie's tactic of
| applying a furniture polish caused a philosophical
| disagreement between the two. Adam eventually brought in
| an outside expert to teach them dorodango, a Japanese art
| form that allows a practitioner to apply a shine to dirt
| using nothing but water and physical effort. Applying
| this technique, Adam and Jamie were both able to polish
| balls of poop without using any foreign materials as
| judged by a gloss meter, exceeding a standard of 70 gloss
| units for high gloss.[0]
|
| [0] - https://en.wikipedia.org/wiki/MythBusters_(2008_sea
| son)#Epis... (Section: You Can't Polish Poop)
| s1artibartfast wrote:
| Is the moral of the story that the hardware engineer is simply
| correct? - a mechanical engineer
| lostlogin wrote:
| No, it was a modern car and an unusual set of circumstances
| lead to a software bug occurring in the regenerative
| breaking. It needs further testing on that incline, at that
| time, in that weather with that weight in the car.
| bozhark wrote:
| Was it pulling an F-150?
| smt88 wrote:
| It's mostly just a joke about how these roles do their jobs.
|
| But I think it's also partly illuminating the fact that
| hardware engineers are true engineers, while software
| engineers mostly aren't.
| renewiltord wrote:
| True. We're scientists. Replication is important! :)
| fhd2 wrote:
| "Empirical science" sounds better than "have you tried
| turning it off and on again?", doesn't it.
| monista wrote:
| I read is as a reference to https://xkcd.com/242/
| tmpz22 wrote:
| > True. We're scientists. Replication is important! :)
|
| Yes replication:
|
| Oops we got hacked. I wonder what happens if we write
| insecure code again.
|
| Oops we got hacked. I wonder what happens if we write
| insecure code again.
|
| Oops we missed a deadline. I wonder what happens if we
| underestimate again.
|
| Oops we missed a deadline. I wonder what happens if we
| underestimate again.
| sophacles wrote:
| When did software estimates ever factor into deadlines? I
| have always found that my estimates + a bit of padding
| are generally correct. Then management just picks an
| arbitrary due date that has nothing to do with programmer
| estimates.
| nly wrote:
| Plus nobody estimates on timescales anymore. We all use
| sprint points.
| mock-possum wrote:
| Wow somebody's salty
| alpaca128 wrote:
| It isn't difficult to find non-software projects that
| overshot deadlines by years and costs by tens of millions
| or more, just to still have a leaky roof. Including,
| whether you believe it or not, engineering work.
| wruza wrote:
| Why not hire hardware engineers to write software then?
| smt88 wrote:
| Software engineers are cheaper and more plentiful
| wruza wrote:
| Cheaper?
| s1artibartfast wrote:
| Because software development isnt an engineering task.
|
| Engineers are good at building bridges, and artists are
| good at making paintings. That doesnt mean it is a good
| idea to have the engineers paint paintings.
| ganzuul wrote:
| To artists, engineers are artists who are good at math.
|
| Art is for everyone. Painting is a special form of art.
| Math makes for beautiful art, so download LibreCAD and
| free your mind.
|
| (Speaking as an ex. IT guy, ex. CNC machinist who is
| attending art school at the age of 40 as a form of
| rehab.)
| stronglikedan wrote:
| Software engineers for critical systems would like a
| word.
| gretch wrote:
| Yeah it makes no sense. Like, you build an airplane and
| clearly the airplane needs both it's software and it's
| hardware in order to fly.
|
| Somehow the people who made the hardware are engineers,
| but the people who made the software aren't engineers.
| s1artibartfast wrote:
| Nobody reasonable is saying that software isn't
| important, technical, or valuable. It isnt a dig.
|
| It just has to do with the subject matter and definition
| of Engineer. The clearest delineation is that an
| Engineers work is the application the laws of physics.
| Software developers are more akin to Scientists than
| Engineers. They work in the arrangement of logic and the
| semantic relation of abstractions.
|
| That is to say, Engineers work within a framework of
| rules, and Computer scientists construct frameworks of
| rules.
| gretch wrote:
| The definitions you just came up with are completely
| arbitrary. Worst yet, your definitions aren't even
| shared.
|
| It's hard to pin down exact agreed upon definitions in
| English, but I searched many popular dictionaries and
| none of them have "Engineers work is the application the
| laws of physics".
|
| Fair enough if you want to have personal definitions of
| words, but don't try to gaslight the rest of us into
| thinking your understanding is the canonical one.
|
| Here's my facetious definition to illustrate how dumb the
| discussion - I think an engineer is a person who works
| with ENGINES (duh it's in the name). Obviously people who
| build bridges aren't engineers; do bridges have engines?
| toast0 wrote:
| Some bridges do have engines, many more have motive
| force. Of course, a lot of them just stand there, not
| doing much at all.
|
| But, someone who isn't wearing a blue and white stripey
| hat can't possibly be an engineer.
| s1artibartfast wrote:
| I brought up a definition shared by many people, and did
| so without hostility. Do you have a real definition that
| you can bring to the table? Is there a reason why you are
| taking things personally?
|
| Can you articulate the difference between an engineer and
| a scientist?
| gretch wrote:
| No you didn't have hostility, but you had a boat load of
| pretentiousness, and unfortunately that's often
| indistinguishable.
|
| > I brought up a definition shared by many people
|
| What you did is discount the definition used much more
| widely and commonly. You didn't just bring up a new
| possible definition, you declared another one invalid by
| saying "Because software development isnt an engineering
| task".
|
| If you want social counter-proof you can go to LinkedIn
| and type "Software Engineer" to see how many people
| consider Software Engineering to be a form of
| engineering.
|
| > Do you have a real definition that you can bring to the
| table?
|
| Yes, the definition that I think has the most use to
| society and is most precise while still being inclusive
| is "Engineers are people who solve real world problems in
| resource constrained environments". In fact I think the
| best engineers work across mediums, including software.
| For example, someone who engineers a robot has to do
| mechanical and software.
|
| > Is there a reason why you are taking things personally?
|
| I'm not, not sure what leads you to conclude this.
|
| > Can you articulate the difference between an engineer
| and a scientist?
|
| No I can't. Does that matter?
| defrost wrote:
| It might help to learn a little more about Engineering.
|
| Leaving aside the four splits, Civil, Mechanical,
| Electrical, and Electronic with the obvious corollary
| that few Engineers build bridges, I'm reminded of my
| first student Engineering project back in 1983 (ish).
|
| Building a sheep shearing robot - hardware and software,
| with no pre existing libraries of control software, etc.
|
| https://research-repository.uwa.edu.au/en/clippings/how-
| nece...
|
| https://www.cambridge.org/core/journals/robotica/article/
| abs...
|
| https://www.youtube.com/watch?v=6ZAh2zv7TMM
|
| A great chunk of software was written by Peter Kovesi ..
| a _mechanical engineer_ still working on computer vision
| projects today: https://peterkovesi.com/projects/
|
| You sound more than a little ignorant of the breadth and
| depth of talent in the world and more than a little
| inclined to believe that people can be boxed up and ring
| fenced by your particular world view.
|
| _No sheep were harmed in the making of this robot. Sheep
| literally fell asleep when secured._
| wruza wrote:
| That's the point. It's not software developer's fault
| that things are the way they are. Anyone with strict
| engineering discipline or whatever is welcome to create
| software the right way.
| tom_ wrote:
| Try it and report back!
| QuadmasterXLII wrote:
| Building as practiced by hardware engineers is not linear
| in number of unique components. Building as practiced by
| software engineers is, at a terrible price.
| gerdesj wrote:
| I learned ForTran whilst studying Civ Eng. back in '89 -
| '91 . Notice the two digit year - you software lot gave
| us the Y2K snag 8) It seems rather silly these days when
| terabytes are trivially available but when every bit,
| byte and nybble costed rather a lot, it nearly made
| sense.
|
| If software techies/engineers wish to push back, may I
| suggest: Tay bridge, Tacoma Narrows, Millennium bridge
| and concrete cancer. Comet commercial jet airliners and
| the many snags that lead to fillets and rounded corners
| on ships int al. Do we count Titanic as "user error" or
| inappropriate expectations exceeded?
| organian wrote:
| I think "software engineers aren't really engineers" is
| putting "real engineering" on a pedestal that is borne of
| ignorance. Hillel Wayne's engineer interviews were eye-
| opening on this: https://www.hillelwayne.com/post/are-we-
| really-engineers/
| s1artibartfast wrote:
| I have a different take. Engineer is basically synonymous
| with application physicist. Someone why applies the laws
| of physics to achieve a goal. I don't think this is so
| much a pedestal, or why some software engineers are
| passionate. Is being a computer scientist somehow
| negative?
| sterlind wrote:
| I think of applied physicist as something very different,
| closer to science than engineering. The kinds of people
| who research new battery chemistries, or the techniques
| to unlock new semiconductor process nodes. Basically,
| scientists do hardcore research and expand the field,
| while engineers apply the techniques and formulas that
| the scientists have discovered, and craftsmen combine
| prepackaged modules built by engineers for a job.
|
| So an applied physicist discovers the light-emitting
| diode. An electrical engineer designs an LED light panel.
| An electrician wires light panels into a home.
|
| Likewise, a computer scientist discovers NFA reduction,
| an engineer uses it to build a regular expression
| compiler, and a developer writes a regex to validate
| email addresses.
| fsckboy wrote:
| An electrician who designs a complex light panel using
| 120VAC for use in a habitable or public building needs to
| submit the plans to the building department to get a
| permit and certify that it's not a fire hazard. You need
| to be a Licensed Engineer(tm) to do certain levels of
| certification.
|
| People certified to be licensed engineers didn't
| necessarily graduate from a School of Engineering at a
| famous university that is also filled with physicists and
| mathematicians and English literature. Instead they need
| to study, learn, and pass the tests that legally certify
| them as Licensed Engineers(tm) to keep us all safe. It's
| much of the same material, overlapping, but not the same.
| They're less likely to consider themselves ready to move
| over to building rocketships to the moon on the basis of
| their bachelors degree.
|
| This is the source of all the debate about who is an
| Engineer and who is not. Licensed Engineers don't want to
| consider unlicensed engineers as engineers. People who
| went to universities and had to study a dose of liberal
| arts along with control theory to get their "Engineering
| degree" don't want to consider the choo choo Train
| Engineer(tm) as an engineer.
|
| In the US there is a bit of academic snobbery around,
| it's not universal but, University of Michigan is harder
| to get into academically, and a little more high
| falutin'. Michigan State is a bit more plebian but more
| practical. University of Washington vs. Washington State,
| same thing, and so on. The licensed engineers are more
| likely to come from the State school, the unlicensed
| engineers more likely from the University of. Both want
| recognition for their training, which makes sense.
|
| I'm exaggerating for effect, but this is the issue.
| Whether software engineers are engineers is a minor
| skirmish on the flank of this larger war, both because
| there are no certifications for computer engineers, and
| because mathematicians are not engineers and programming
| languages can be studied from a mathematical perspective
| or from something closer to Electrical Engineering.
| sterlind wrote:
| I'm confused, is the electrician in this example the
| Licensed Engineer(tm)? They definitely have to be
| licensed, since they can burn your house down if they
| don't know what they're doing. And checking that the
| plans aren't a fire hazard isn't done by an electrical
| engineer, is it? I definitely wouldn't trust the
| electrical engineers I went to school with to do DIY home
| wiring, by the same token.
| defrost wrote:
| To the extent that Australia and the US are similar,
| various things _require_ a licensed tradesperson to
| certify.
|
| The sticking point is what licensed tradesperson would
| sign off on work done by another unlicensed person?
|
| Here, I've often done full 240 V AC wiring and gas
| fitting for houses, workshops, abd glass blowing |
| ceramic studios .. but never connected or made any of it
| live, instead I've called in local tradespeople to
| inspect and test the work from end to end, just as they
| would check the work of an apprentice, and then certify
| it.
|
| It's been cheaper for me that way as well as allowing for
| better control of how I want things to go, it's been less
| hours work for them in an area where they're in high
| demand and a bit of a win-win.
|
| On at least two such jobs I've been advised to change
| some details as the most recent codes had changed and
| required things I'd been unaware of, no drama.
|
| And no, in general university electrical engineers don't
| leave university with the practical trades skills to wire
| looms between power plants and racks of mills, screens,
| and grinders drawing high voltage high amp three phase
| and requiring complex control and instrumentation
| circuits.
|
| They can sketch that out but they rarely get the
| practical cable pulling, wire cutting, box layout, etc
| experience outside of an actual trade apprenticeship type
| role.
| fsckboy wrote:
| absolutely, you nailed it! "collegy" engineers don't know
| a damn thing about safety in the home, and what causes
| electrical fires. They know kinda ("resistance results in
| heat") but they don't know specifically a zillion little
| gotchas that have killed thousands of people in
| electrical fires.
|
| if you want to cut a hole in your wall to put in a
| window, it could be as easy as cutting a hole and putting
| in a window. Or, it could be that it's a "load bearing"
| wall, and you need to put a wide I-beam over the new
| window to safely redistribute/bear the load that the
| formerly intact wall was carrying. Or, you could have
| chosen a spot on the wall that has a column/pillar that's
| holding the roof up. Probably you'd choose a different
| spot, but if wanted that spot you could hire some
| engineers to figure out a new set of "cantilevers" or
| "flying buttresses" or (i'm not this type of engineer,
| I'm just throwing around words).
|
| As the work you do becomes more and more dangerous to
| more and more people, you need somebody with higher
| levels of certification/licensure to approve the plan.
|
| an electrician, who has a license, is not an engineer,
| but a good electrician could become one if she wanted, it
| would require study and exam passing. Some electrical
| work an electrician is allowed to do, they can "self
| certify", but the city might spot inspect it. The next
| level of complexity they perform the work, but a building
| inspector needs to inspect. The next level of complexity,
| the plans need to be certified and approved in advance.
|
| I'm sort of making this up, piecing it together how steam
| fitting is done (that's mechanical engineering), how air
| handling is done (also mechanical engineering), plumbing,
| etc. But this is the general scheme.
|
| some of this is legacy disputes left over from the 19th
| century. When they were inventing electrical circuits,
| everybody was an engineer and everybody could do
| everything, and people just invented stuff on the spot
| and tried it. After enough people died, it was decided we
| needed standards. And slowly a white collar/blue collar
| sort of distinction started to emerge, for work that
| required calculus vs work that requires knowledge of lots
| of specific requirements.
|
| Calculus people design cars and planes with smooth sleek
| shapes, but those items can't be constructed without the
| other type of engineer saying "hey, that's not strong
| enough"
| crdrost wrote:
| I liked these interviews but I do find the result kind
| of... apathetic? I feel like you can read these and just
| come to a sense that nothing is engineering because
| everything is amorphous, which is not (I think) Hillel's
| thesis but he doesn't really want to anchor the
| discussion in principle because he is fundamentally
| asking for opinions.
|
| For a more principled approach, I would say (as one of
| these "licensed engineers who has not done as much actual
| engineering") that engineering as I have seen it kind of
| has three really major themes:
|
| * Prototyping/building/creation. Tinkering. I guess the
| reason we don't talk about this is that everybody finds
| it trivial? But when you talk to ChemEs and they discuss
| optimizing pipelines for chemical processes you do see
| that it can get a little abstract so it's worth pointing
| to as a baseline.
|
| * An underlying scientific theory that guides the models
| used. Building stuff has happened since way before
| science but engineering is clearly a postscientific
| endeavor, "here's the underlying mechanical principles of
| how this works." This is probably the sketchier principle
| in how we talk about "is this software design really
| engineering," we tend to not have a firm scientific
| understanding of the problem domain of building software.
| Some things like CAP theorem, patch theories in version
| control (Darcs, Pijul), distributed consensus algorithms,
| TCP/IP, I would say really rise to that challenge and say
| something hard-learned about real systems. Things like OS
| kernels also have so much trial and error, so much
| prototyping that it feels like "yes you really did do
| enough hypothesis-test-reevaluate cycles that the result
| embodies a model of the problem domain that counts as a
| scientific understanding." But a lot of our work is just
| gluing systems together and that seems more "electrician"
| than "electrical engineering." Now, science uses math, so
| people think of engineering as highly mathematical, I am
| not sure that it has to be. Whereas I do think it has to
| be scientifically based.
|
| * The last big thing that I think we don't talk about
| enough is risk assessment. The reason that we're doing
| all of this science and math to build a bridge, is so
| that we can assess how strong it needs to be to just
| barely survive the peak loads that it will ever have, and
| then double that strength just in case.
|
| I think that when we say "not all programmers are doing
| software engineering" a good proxy for that is looking
| at, first, do you have a scientific model of the sorts of
| approaches that you can do; and then, do you use it to
| assess numerically the kind of loads that your system
| will come under up-front and design accordingly--writes
| per second, queries per second--and set realistic targets
| and choose caching and consensus and whatever else to
| achieve those and measure that you have... Or do you work
| via crude heuristics, "we use Kubernetes so I'm sure it
| will scale later, we do 'best practices' so we don't have
| to think about those," and related kludges where we can
| comfortably say you're just tinkering rather than being
| principled about it.
|
| And then, this reveals that maybe you don't need to be
| doing engineering, maybe you really do just need to
| tinker in the problem space while you achieve better
| product-market fit. Maybe you are doing science rather
| than engineering, and that is okay. Like, the idea that
| you are going to launch the next space shuttle with your
| reliability, I am sure that makes for a very energized,
| focused workplace, but it's not a precondition, it's not
| the only way to get there.
| RGamma wrote:
| Programmers calling themselves software engineers
| suddenly is a very recent phenomenon (barely a decade).
| Dunno who pushed that, but it's mostly basically
| (cognitively difficult) Lego at this point.
|
| That said, it's also on the order of a hundred years
| younger a discipline and our theory is not so well
| developed.
| batch12 wrote:
| My dad called himself a 'computer software engineer' in
| the early '90s. I don't think it's only a decade old.
| contrarian1234 wrote:
| In the 90s it sounded pretentious and people used to joke
| about it. In the early days of Google they tried to label
| themselves as engineers to set themselves above the rest
| of silicon valley. It was a way to try to signal that
| their work was somehow more technical
| unmole wrote:
| > barely a decade
|
| Yeah, no.
| halostatue wrote:
| Try longer than my career (approaching 30 years in the
| business), often pushed by the business and kicked into
| high gear with the rapid need for development resources
| with the combination of Y2K mitigation and the first dot-
| com boom.
|
| Yes, there are a lot of "developers". But there are also
| software engineers, even if our engineering craft is
| less-well developed by the standards of civil engineering
| or mechanical engineering. I understand engineering
| organizations (like those in Canada) who oppose the use
| of the term "software engineer" because there's no common
| code of practice or standards in the same way that those
| who wear the iron ring claim is incorrect.
|
| I think that we, as a profession, _need_ a code of ethics
| (and the ACM has a good one, https://ethics.acm.org/code-
| of-ethics/) and the application of software in certain
| cases should _absolutely_ be regulated the same way that
| the various physical engineering practices are
| (healthcare, AI, finance, legal applications) so that
| there are _consequences_ for the businesses and
| potentially the software engineers involved with those
| businesses when they cause harm (see sentencing guideline
| software in the US; see the contract that developed the
| Royal Mail "audit" software that could never work as
| advertised; see the rampant fraud that is crypto; see the
| abuse of generative models to software-wash copyright
| violations).
|
| But the lack of regulatory bodies does not mean that
| there's not a practice of engineering involved, it just
| means that there's no regulatory body that governs said
| practice.
| mb7733 wrote:
| > Yes, there are a lot of "developers". But there are
| also software engineers, even if our engineering craft is
| less-well developed by the standards of civil engineering
| or mechanical engineering. I understand engineering
| organizations (like those in Canada) who oppose the use
| of the term "software engineer" because there's no common
| code of practice or standards in the same way that those
| who wear the iron ring claim is incorrect
|
| Just to clarify, there's no issue in Canada with
| "software engineer" specifically. "Engineer" is the
| protected term, and you have to be licensed to use it. So
| the issue applies to calling yourself any kind of
| engineer without being licensed.
|
| If you are a licensed professional engineer in the
| software field, you can refer to yourself as a software
| engineer. This is just uncommon because there are not a
| lot of programs that grant BEng in software, the
| licensing is rarely relevant, and most people take CS
| anyway.
| WelcomeShorty wrote:
| > "Engineer" is the protected term, and you have to be
| licensed to use it.
|
| The IEEE documented that a little different:
|
| It is the IEEE-USA position that:
|
| * Individuals who have graduated with an engineering
| degree from an ABET/EAC accredited program of engineering
| education should not be prohibited from using the title
| "Engineer."
|
| * The protected titles "Professional Engineer," "Licensed
| Engineer," "Registered Engineer," and variations thereof,
| should be reserved for those whose education and
| experience qualify them to practice in a manner that
| protects public health, safety and welfare -- and who
| have been licensed to practice engineering by a
| jurisdiction.
|
| From: https://ieeeusa.org/assets/public-
| policy/positions/workforce...
| halostatue wrote:
| That seems to me to be a much more sensible position than
| that of the provincial licensing bodies here in Canada,
| who attempt to regulate all uses of the term "engineer",
| even though many uses are orthogonal to the regulated
| profession.
|
| The objection is IMO as linguistically specious as the
| one aimed by MDs against PhDs. Both are entitled to the
| honorific Doctor, and _context_ is as important as
| anything else.
| mb7733 wrote:
| I was explaining the view of the governing bodies in
| Canada.
| fragmede wrote:
| > cognitively difficult Lego
|
| Ah yes. Meanwhile, my friend who's a mech-e at a car
| company starts from scratch on every single last project,
| never reusing components, and also machines every
| component from scratch because there's no such thing as
| McMaster or any other vendor. When he works on a project,
| the physical parts never ever fit together like Lego.
| It's not like he'd use calipers or something to do what's
| called measuring (twice!) so that things fit together.
|
| There are plenty of places to demand more rigor from
| people writing software before considering it
| engineering, but reuse of parts, and having them fit
| together nicely is a weird one.
| paulryanrogers wrote:
| Engineers used to mean seige-machine builders. Language
| will evolve.
| kd5bjo wrote:
| Or perhaps that nobody had the common sense to _call a tow
| truck_ , so that they can get down the mountain without
| relying on a field repair to a safety-critical system.
| tigen wrote:
| NIH syndrome
| s1artibartfast wrote:
| Not invented here is the tendency to avoid using or
| buying products, research, standards, or knowledge from
| external origins. It is usually adopted by social,
| corporate, or institutional cultures. Research
| illustrates a strong bias against ideas from the outside.
| slingnow wrote:
| This makes a lot of assumptions about how far into the
| wilderness they were, time of day, accessibility of the
| roads, cell phone signal, and so on. To just hand wave and
| call it "common sense" is silly without the rest of the
| context.
|
| And for me, 100 times out of 100 I'm taking the capable guy
| who can fix the brakes on a trip like this over someone
| who's first and (likely) only instinct is to call a tow
| truck.
| atq2119 wrote:
| As long as we're overanalyzing a joke, it's Switzerland.
| There isn't really a lot of wilderness there ...
| kridsdale3 wrote:
| This is true. I spent a week hiking the mountains, where
| I often could see exactly the same environment that has
| existed for millions of years. But at all those times, a
| hut serving beer and warm soup was always an hour's walk
| away.
| toast0 wrote:
| Sounds like they were already down the mountain. Stopping
| to call a tow truck while traveling down the mountain would
| involve having working brakes, which the scenario suggested
| wasn't the case.
| FrankoDelMar wrote:
| Turn the car backwards and use forward engine power to slow
| the descent ;) or engine brake with the parking brake set and
| hope for the best
| quickthrower2 wrote:
| It is almost as if it is the closest profession to what they
| really needed: a roadside mechanic.
|
| Also the story is unfair on the manager. The manager would
| call everyone in to have a war room meeting on how to fix
| this urgent production issues. They'd give a quick overview
| of the problem the open it up for the experts to talk. While
| the tech whizzes are talking they would order pizza or yum
| cha or something for the team.
| wizzwizz4 wrote:
| This story feels quite different without the context of the
| story this thread is about.
| frutiger wrote:
| > "Well," said the software engineer, "Before we do anything, I
| think we should push the car back up the road and see if it
| happens again."
|
| Only the brakes don't work - the engine still does. Why would
| they need to push the car uphill?
| mewpmewp2 wrote:
| It's preferable the fuel state stays as it is. How do you
| know it's not the amount of fuel otherwise?
| cgriswald wrote:
| Presumably the engine was only idling during their decent
| if the only thing that slowed their car was 'miraculously'
| grinding the car against the mountainside.
|
| So, using previous records, they should estimate fuel usage
| during the decent. Then they should walk to the nearest
| fuel station, purchase fuel, and walk back. During that
| time, they can calculate the amount of fuel that will
| evaporate while they have the gas cap off and the amount of
| fuel that will stick to the walls of the piping between the
| gas cap and the fuel tank. This way when they return to the
| car, they can put in almost exactly the amount of fuel that
| was consumed during their harrowing stop.
|
| This presumes the fuel station has the same mixture as they
| have in their tank. Otherwise all bets are off and they
| should simply give up.
| ganzuul wrote:
| OBVIOUSLY, you could have solved the problem with motor
| braking. The driver is not going to accept fault until
| there is conclusive evidence of the their wrongdoing, but
| you can't let the team know you are going to repeat the
| test again but with a different driver because then they
| will invent objections to pushing the car up the hill.
| kridsdale3 wrote:
| Turn the car around 180 degrees facing up. Coast down the
| hill in reverse and control your descent with the
| throttle.
| ganzuul wrote:
| "Magic", "More magic."
| xboxnolifes wrote:
| The brakes failed, but nothing claimed that they will fail
| again. So, it's suggested to run the test again.
| frutiger wrote:
| Of course but they could run the engine instead of pushing
| the car.
| pests wrote:
| Reminds me of the Family Guy episode (I think) when Peter and
| Lous are both running for Mayor (or whatever) and were going
| to a debate. Peter had his brakes cut and when he arrives
| says "Sorry I'm late! Brakes failed" to which the response
| was "Shouldn't you have gotten here sooner?"
| starlevel003 wrote:
| That was a Simpsons episode. S9E22 Trash of the Titans.
| pests wrote:
| Ah thanks, damn. Mixed up my adult animation. I swear I
| can picture the entire scene as Family Guy characters in
| my head though.
| rnk wrote:
| You are assuming it goes backwards or uphill. Better test
| that with a unit test.
| kriro wrote:
| Let me retell this tale...
|
| "I know," said the department manager, "Let's have a meeting,
| propose a Vision, formulate a Mission Statement, define some
| Goals and by a process of Continuous Improvement find a
| solution to the Critical Problems, and we can be on our way."
|
| Knowingly the hardware engineer and the software engineer
| looked at each other. "Actually the car is fine, but let's pick
| a driver that knows what they are doing this time. You simply
| don't know how to use the breaks and were randomly steering
| left and right while thinking you're on track, management guy."
| amelius wrote:
| I think it is possible to end this story in three possible
| ways, where each will be in favor of one of the professions.
| geraldhh wrote:
| please, go ahead
| buttercraft wrote:
| I would close all the windows and restart it.
| mock-possum wrote:
| If you could click 'relaunch' and the car would miraculously
| reappear at the top of the hill and repeat the event, allowing
| you to freeze time at the instant the brakes failed, then pull
| apart every piece of the car so you could precisely observe the
| failure in real-time, in slow mo, and in reverse - to pinpoint
| exactly what the problem was
|
| You're saying the power to do that makes software engineers
| ridiculous or impractical?
|
| Engineering inside a digital space gives the kind of debugging
| abilities that would be straight up miraculous in a physical
| disciple. If I have one thing, and I want to make ten more of
| those to test in ten different ways, it's literally just
| CTRL+C, CTRL+V. Let's see a mechanic do that.
| brandensilva wrote:
| Right with software we have abstractions and flexibility.
| With hardware they are grounded more to the physical
| capabilities of the hardware.
|
| Of course software is also limited by hardware capabilities
| but we can code whatever we want on that hardware as long as
| it fits within the provided specs.
| oefnak wrote:
| Or they would say: go fast and break things!
| weikju wrote:
| Missed chance for a pun:
|
| Go fast and brake things!
| Elucalidavah wrote:
| > and see if it happens again
|
| The "re-run to reproduce" isn't even the most peculiar part of
| software engineering; it's "we don't look at what has been
| tried before".
|
| In the OP story example, there's this part: "One time we added
| ventilation holes to reduce heat, but they were just big enough
| for wasps to nest in". In a ideal world, the hardware engineers
| are supposed to know to not have any holes larger than a few
| millimeters, and other such things. Whereas the software
| engineers are (yet) not supposed to know much of anything like
| that. The most prominent example I can think of is "remember to
| add an index to the database when adding a new type of query to
| the app", as load testing that would catch it tends not to be
| done on each and every release.
| acomms wrote:
| Wow what incredible timing. I am currently working on an Image
| Uploader component and the gotchas are hiding around every
| corner.
| rnicholus wrote:
| This is one of those things I wouldn't suggest you solve with
| the "roll your own" approach. There are some good libraries out
| there that will handle this and more. Uppy is one that comes to
| mind. I created and maintained another popular one for 7 years
| that i sunset in 2017.
| acomms wrote:
| Currently using react-dropzone seems to solve most of the
| major issues for me. Use that to get a signed URL via API,
| then upload from client to image server directly.
| uoaei wrote:
| Many exploits involve running arbitrary code hidden in
| encoded image and video files, notably Pegasus among
| others. This should be treated as cryptography.
| lamroger wrote:
| Reminder that vets have it extra hard.
|
| And a reminder to myself to do good.
| shadowgovt wrote:
| I'm feeling the anecdote about the wasp nest.
|
| Landlord in our office complex installed a touchscreen interface
| on the outside of the building to dial the various front desks,
| all of which could buzz a person in. They did this because they
| had no front-desk receptionist who could see the door.
|
| The thing lasted six months and then started to malfunction
| badly. The culprit? The interface is running on essentially a big
| black Android tablet and they installed it on the side of the
| building that faces East. Mid-spring rolled around and it caught
| enough sun every day to overheat and fry the touch electronics
| and part of the screen hardware.
|
| As a software engineer, writing the kind of software I do, I
| _never_ have to worry about thermal load.
| philk10 wrote:
| Which reminds me of he story of sun stopping trains - Services
| at Lewisham, south-east London, were disrupted because of the
| angle of the 'low winter' sun, train operator Southeastern
| said.
|
| The rail firm posted on Twitter: 'We had severe congestion
| through Lewisham due to dispatching issues as a result of
| strong sunlight.'
|
| It added: 'The low winter sun has been hitting the dispatch
| monitor which prevents the driver from being able to see.'
| darkwater wrote:
| A very nice post, well written and with a positive outlook on our
| position.
|
| And while there are many developers that write software that
| directly impact in one way or another the lives of other human
| beings, generally speaking we need to recognize we are in a
| fairly privileged position, as the author states.
| castis wrote:
| Thank you for this. Its lovely to be reminded that a lot of us
| share some the same ups and downs whatever we're doing.
| hasbot wrote:
| As a software engineer I always kinda enjoyed debugging. It
| allowed me to use a different skill and mind set than creating
| designs and implementing them.
|
| Not to say I didn't get stressed out debugging. I had one demo
| while developing software for AT&T's 5ESS telephone switch. We
| had only one phone line in the test lab configured for our
| feature. Attempt after attempt the software just wouldn't work.
| Knowing the software worked, I checked everything I could all the
| while stressing out. Finally I asked the lab tech to check the
| line. Somehow our only configured line was disconnected. The
| problem was a stupid hardware issue.
| fatnoah wrote:
| > As a software engineer I always kinda enjoyed debugging. It
| allowed me to use a different skill and mind set than creating
| designs and implementing them.
|
| Same here. I always enjoyed the challenge of it, especially in
| complicated systems.
| iainmerrick wrote:
| I always feel that debugging is much more of a science than
| normal software development.
|
| You need to spot unusual behavior, figure out ways to isolate
| and reproduce it, come up with hypotheses as to what might be
| happening, design tests for those hypotheses, run the tests,
| find the solution, test the solution -- exactly like the
| interplay of experimental and theoretical science.
| kill_nate_kill wrote:
| ... Detective work.
|
| (*_*)
|
| ( *_*)>[?]#-#
|
| ([?]#_#)
| 59nadir wrote:
| I enjoy debugging when the tools are there, not so much when
| choices have been made to put everything too out of reach,
| either figuratively or literally. Debugging distributed systems
| in the cloud is exponentially more awful than debugging them
| when you can at least spin up all your services locally and
| that in turn is exponentially worse than when you can debug the
| problem in just one program.
|
| An actual debugger also makes the act of debugging much nicer
| to me. I've never understood people who quibble about using
| either printf debugging _or_ an actual debugger when using both
| is such a massive win. Arguably good tracing facilities should
| be highlighted here as well since they 're much nicer than
| printf debugging when they're available.
|
| > Not to say I didn't get stressed out debugging.
|
| This is interesting because I remember very early in my
| programming journey I used to attach a lot of unnecessary
| things to not understanding why something was happening (or not
| happening) and gradually I just came to embrace the "Hang on,
| why is this so? I don't get it... Ohh, hang on... Wow, it
| really makes sense why this didn't work!" loop and internalize
| the fact that it feels really good when I get to the end of it.
|
| The process of not knowing can only really get ruined by other
| people's expectations and behaviors for me at this point and
| I've learned over time that this can only be managed by being
| very assertive about how things are done (language choices,
| architectural choices, etc.) so as to make the process as easy
| and quick as possible. Ultimately it's a lot easier (at this
| point in my career) to convince someone that working with AWS
| lambda is a bad choice for performance, overall costs,
| debuggability and development speed (all to varying degrees)
| than it is to convince them later that there is a good reason
| that fixing that one problem is taking more time than it ought
| to.
| travisgriggs wrote:
| Loved this story. A bit skeptical that that kind empathetic
| manager really exists in the field, but maybe.
|
| Most telling that no sales/marketting/product managers showed up
| to console the guy. Satire just couldn't plausibly stretch that
| far. But maybe I'm too jaded. Would love to see the reply that
| posited a section to this story where the empathetic individual
| from one of those domains gave solace to the main character.
| thedanbob wrote:
| > I sent a message to my friend, "Cracked it at last. It was the
| letter 'E'."
|
| Funny how the simplest, tiniest bugs are often the hardest to
| find. Just this morning I burned an hour or two hunting down an
| off-by-one error. Turns out it was an "index + 1" that I had
| forgotten to change when I refactored (facepalm).
| deredede wrote:
| As the saying goes, there are two hard problems in computer
| science: cache invalidation, naming things, and off-by-one
| errors.
| ohthatsnotright wrote:
| You forgot Dates, Times and Timezones
| wildzzz wrote:
| Timezones: if you operate my code across timezones, you're
| wrong. Date and time: %Y%m%d_%H%M%S. Don't you dare ask for
| it to be shown any other way.
| Robin_Message wrote:
| Three ha you missed out rd problems;concurrency.
| yafbum wrote:
| A physicist friend used to quote Rutherford, all science is
| either physics or stamp collecting.
|
| By which my friend meant, physics has a way of being checked by
| physical reality in a way that math or computer science don't.
|
| His area of work was extreme magnetic fields. Experimenting meant
| building giant copper coils, running enough current in them to
| melt them in place, and then very quickly detonating explosive
| around the coil so that, for a fraction of a second, the magnetic
| field at the center of the coil became the most intense ever
| built by mankind, before the whole setup was destroyed by the
| splattering of liquid copper thousands of degrees hot. Errors and
| miscalculations in that work environment meant that people could
| die unpleasant deaths very quickly.
|
| So when he looked at math PhD students who at most got chalk dust
| onto their sweater, calling themselves scientists, he disagreed.
| computerfriend wrote:
| Leave it to a physicist to misinterpret that quotation.
| kwhitefoot wrote:
| Perhaps you could enlighten us oh wise one.
| computerfriend wrote:
| The quotation has no connection to whether you can check
| your results with experimentation.
|
| But my comment is a joke about their dismissive attitude
| towards mathematicians.
| civilitty wrote:
| _> His area of work was extreme magnetic fields. Experimenting
| meant building giant copper coils, running enough current in
| them to melt them in place, and then very quickly detonating
| explosive around the coil so that, for a fraction of a second,
| the magnetic field at the center of the coil became the most
| intense ever built by mankind, before the whole setup was
| destroyed by the splattering of liquid copper thousands of
| degrees hot._
|
| Explosively pumped flux compression generators [1] are fun!
|
| That's how real EMPs are made, in case anyone is interested in
| a career in super villainy but doesn't know where to start.
|
| [1]
| https://en.m.wikipedia.org/wiki/Explosively_pumped_flux_comp...
| 59nadir wrote:
| Thanks, this will shave years off of my post-retirement
| projects!
|
| For real, though, I've always found things like these
| fascinating.
|
| I used to be very interested in working with software for
| weapons (specifically for fighter aircraft) because they've
| got very interesting problems to solve that usually are very
| direct. The amount of irrelevant code paths you can add, the
| amount of really far-away external stuff seems very limited
| at least in theory, so it seems a very interesting field to
| work in.
|
| I could never get over that it would feel very bad being part
| of a process that ultimately might end in killing someone,
| though, so it was a non-starter.
| skrebbel wrote:
| I used to wonder why Dijkstra was so arrogant, and then I
| learned that he graduated in theoretical physics.
| kens wrote:
| That's a rather unusual interpretation of the quote. According
| to several books, the meaning of that quote is that science is
| either mathematical and quantitative, or descriptive. In other
| words, you're either attempting to understand the dynamics of
| the subject or merely collecting interesting facts and naming
| items of interest.
| BeetleB wrote:
| > So when he looked at math PhD students who at most got chalk
| dust onto their sweater, calling themselves scientists, he
| disagreed.
|
| I've not found mathematicians calling themselves scientists. In
| fact, it's usually the opposite: they _boast_ that they are not
| scientists and are not limited by petty reality.
| sethammons wrote:
| Related to the correct interpretation of that quote:
|
| https://xkcd.com/435/
| firefoxd wrote:
| I giggled at the end. Just yesterday, we solved an issue that
| plagued the company for 3 years. For us it was the letter 'A'.
|
| Someone had been doing manual fixes inserting and removing data
| for the past 3 years. It became part of his job. He added a
| recurring event in his calendar just to do that regular clean up.
| Millions of customers depended on this one individual making sure
| they had the correct data plan on their phone line.
|
| You can imagine the chaos when he forgets or goes on PTO.
|
| Turns out: if $line->status == STATUS_ACTIVE
|
| one was 'Active' the other was 'active'. No dogs were harmed, but
| incalculable money was lost over the years.
| A4ET8a8uTh0 wrote:
| If this was a law case, the joke would have been:
|
| 'What have you done? You solved the case that put our entire
| family through law school!'
|
| That poor soul is no longer indispensable. I am only half
| joking. Software is about making things more efficient, but I
| like to look at the human motivations.
| tialaramex wrote:
| So somehow in some parts of the code STATUS_ACTIVE is defined
| wrong?
|
| I guess there is always a risk that some "helpful" contributor
| will fix the typo in your definition of HttpHeader::REFERRER as
| "referer" to make it "referrer" instead, thus completely
| breaking all the software because nope, that typo is enshrined
| in the HTTP standard, it's Phillip Hallam-Baker's fault while
| he was at CERN.
| Crespyl wrote:
| > So somehow in some parts of the code STATUS_ACTIVE is
| defined wrong?
|
| I would guess that some other part of the app doesn't even
| use the constant at all, and just hardcodes "Active" as a
| string on its own. Maybe taking the value of a dropdown from
| the UI and never mapping that back to the actual constant.
| lostlogin wrote:
| A tricky one that I've seen cause harm is white space or
| otherwise invisible characters (eg line breaks).
|
| Super frustratingly, Macs populating HL7 fields caused intense
| pain. It turns out that the character ' when typed on a Mac
| keyboard is not compatible with all versions of HL7, or perhaps
| wasn't compatible with what the HL7 was passed off to. It's a
| distant memory now but it was words like o'clock versus
| o'clock, or something like that which broke radiology report
| distribution.
|
| It went on for years before being caught.
|
| Edit: HN is displaying the ' differently to how it looks when I
| type it, but it's still the same character. The fact that we
| couldn't see the difference when debugging was half the
| problem, so this is quite funny.
| matsemann wrote:
| Encoding is hard. Recently had a problem where some
| proxy/load balancer (I think) in Go would crash, as it
| couldn't handle aeoa in some headers which was returned from
| some service doing ip lookups before passing on the request.
| Which of course hit our workers in the city of Tonsberg.
|
| Another example I remember from earlier days is the BOM in
| xml files. When it was wrong things could crash in all kind
| of weird ways, and impossible to see.
| swatcoder wrote:
| > As software developers, it's easy to overlook the privileges we
| enjoy. We have the unique ability to delve deep into intricate
| processes, monitor real-time activities, log what's happening,
| and even pause time with a debugger. This remarkable capability
| is not only cheap but fast, bordering on thoughtless.
|
| > While many other professions struggle to understand and resolve
| their issues, we have the advantage of being able to experiment
| multiple times a day with just a few clicks.
|
| So much strained positivity, as if the author was tasked to find
| something to be thankful for. Look, software engineering is a
| great job if you enjoy the work. But even in this parable, the
| problem is the author's week of distress and flailing. It has
| nothing to do with the work and everything to do with the author.
|
| All the others he turns towards, no matter their discipline,
| their tools for investigation, or the constraints they faced in a
| dilemma, relate stories where they have a mature understanding of
| how their industry works and how they navigate its system. They
| encounter problems in the course of their work and they resolve
| them in the course of their work. Maybe it takes a little while
| to proceed with diagnosis. Maybe it takes a long while to
| integrate improvements into a later product. Maybe they need to
| forgo some procedure that they prefer to use.
|
| By the authors account, the embedded engineer, the hardware
| engineer, the CEO and veterinarian all face greater challenges
| when solving problems in their work, yet they all speak of their
| road through those challenges with a confidence that the author
| lacks. They try to soothe the author and empathize, but none of
| their stories hint at a week of panicked flailing.
|
| So if they handle their work so much more confidently, is it true
| that their dilemmas are worse and that the author is lucky to be
| a software engineer?
|
| If the author listened to their own invented characters, the
| realization to come to is not that the author is lucky to work in
| a field with purported "privileges" and that everyone else has it
| worse (gross!), but that _everyone_ faces dilemmas in their work
| and that the real skill is in staying cool and confidently
| relying on the processes of their discipline. And this has
| everything to do with the person doing the work and nothing to do
| with the discipline. The realization is that challenges arise in
| all professions and that you can proceed through them without
| distress and flailing if you allow yourself patience and
| confidence.
|
| It's funny because they wrote this as a parable, but they missed
| the real lesson in the very piece they wrote. Four people
| reassure them that "We've been there! We all go through this!"
| and their takeaway is "I need to remember that I'm lucky and that
| everybody else has it even worse."
| munchler wrote:
| The dog's owner paid for surgery, but wouldn't pay for an x-ray?
| pie420 wrote:
| Don't let facts get in the way of a good blog post
| harrymit907 wrote:
| Cost to benefits probably. Vet X-rays are surprisingly
| expensive and then surgery had to be done anyway.
| gcheong wrote:
| True but as the vet in the article states she couldn't be
| sure that the extent of the problem was just the corn cob
| without an x-ray so to me it would seem more logical to take
| the x-ray once you've decided on surgery.
| krallja wrote:
| They're like $100... aren't they?
| LastTrain wrote:
| Something like that, should we get out out pitchforks now?
| gcheong wrote:
| Our cat had follow-up x-rays after radiation treatment for
| a thymoma. Cost for the 3-view X-rays was $605.00, and the
| consult with the radiologist was $189.00. Bay Area, but
| still...
| tialaramex wrote:
| Even in human medicine some of the things on the "Do not do"
| guidance are diagnostic steps which are pointless because you
| will always do the same thing next regardless.
|
| A bunch of them are for infant minor injury where it's like
| don't do an X-ray. If you can see a break on the image you'd
| do A, but if you can't you'd figure the break might be too
| small to show up and do A anyway. Kids don't need more
| radiation, just do A immediately without requesting an X-ray.
|
| I have wondered if my cancer diagnosis is at the edge of this
| case. There's a step where they do a needle biopsy. But, as
| far as I can tell that biopsy always either says "Cancer" or
| "Don't know" and I'm not sure what else they'd do for "Not
| sure" beyond the next step in the cancer diagnosis...
| ninju wrote:
| Sorry to hear that...hope everything works out okay
| tialaramex wrote:
| Yeah, it went fine. I had Hodgkins, like 20+ years ago,
| it's very curable and (I didn't know at the time) occurs
| relatively often in young men. They fixed it. It's fun
| because I'm a walking example of why universal healthcare
| makes sense - even economic sense. I was a broke student,
| if healthcare cost money there's no way I'd have even
| gone to a doctor to ask about my weird symptoms - they
| weren't even really annoying, just it seemed like it's
| something doctors should check. If it cost money I'd have
| waited until I was in serious pain, at which point it's
| more likely they can't fix it or that if they can fix it
| the fix is really drastic.
|
| I didn't stay a broke student. I got a job, bought a
| home, I became a productive (tax revenue generating)
| citizen, instead of a corpse as would happen with no
| healthcare.
| maeil wrote:
| What symptoms did you have?
| tialaramex wrote:
| Mostly swollen lymph nodes, which is also associated
| with: Any infection (even one you didn't notice along
| with common colds). But I noticed they had stayed like
| that for a while, which I thought was odd. It is odd,
| turns out it can mean you have Cancer. Of your lymphatic
| system.
| SoftTalker wrote:
| There's also the cases where you don't do the test because
| you do _not_ want to do the next step. E.g. the test
| results would indicate a need for a very invasive surgery
| or aggressive medical treatment, but you are 80 years old
| and you don 't want to spend your remaining time recovering
| from surgery or sick from side-effects.
| ShMcK wrote:
| My friend thought this was weird as well, but apparently
| common. People think vet's are trying to rip them off when they
| ask for a $70 x-ray, but they're okay with paying for a blind
| surgery.
| ryandrake wrote:
| I always like to see upstream corrective action after something
| like this. If there was adequate logging / error reporting, this
| wouldn't have taken a week to fix. Whatever library he sent the
| invalid "image/jpg" MIME type to should have thrown an exception,
| crashed, or at the very least, logged loudly. I wonder if OP
| filed a bug against it.
| hathawsh wrote:
| The relevant paragraph in the article bothers me a bit:
|
| "I re-uploaded a version with improved error handling, but
| image uploads were failing without any feedback. You see,
| normally code screams its errors at you in red text - silence
| is the goal. Here silence was the problem."
|
| Silence is not quite the goal. Too many developers think
| silence is the goal, but the goal is actually accuracy. If
| there's no error, yes, it should be silent. If there's an error
| that affects the user, there should be a big red alert box. I
| believe developers should come to love error messages. Well
| written error messages reveal causes quickly and save everyone
| a lot of time.
|
| I hope this developer has learned to show error messages more
| often. That would be a great outcome.
| GrinningFool wrote:
| I would say it should be a big red alert box with a simple
| error code that the end user can reference when trying to
| find help.
|
| The applications (CLIs, native, web, etc) I've seen that
| present me with non-actionable errors is a perpetual source
| of irritation.
|
| "Failed to open file"
|
| "File could not be uploaded"
|
| etc
|
| Not only are these useless to the user who can't do a thing
| about them except try the same thing again, they're useless
| to the developer or support engineer who might be trying to
| help them.
| sojournerc wrote:
| Related, the "oops, something went wrong" error messages
| absolutely infuriate me. Something about the tone, like a
| child spilling milk, and the uselessness of the message get
| under my skin.
| gwbas1c wrote:
| Yeah, at the end of the article I even wondered what kind of
| environment Shawn (author) works in where it would take so long
| to diagnose?
|
| Was Shawn able to access _anything_ on the server that would
| confirm /deny that the image upload was coming through? Why did
| the image upload work in the test environment but not in the
| released version of the app? What was different about the test
| environment?
|
| In theory, Shawn should have had enough access to the server
| environment (either by running the servers himself or asking
| someone to help him diagnose why an upload failed silently)
| that he should have had a reasonably quick answer to "why is
| this upload succeeding but not showing up?"
|
| IMO, those lessons (why the upload worked in test but not in
| production) are significantly more important than "the image
| mime type was set to 'jpg' but should have been 'jpeg'" The bug
| is much more inconsequential to why the environment made it so
| hard to find the bug.
|
| In my case, I had a situation where a desktop application was
| severely malfunctioning, but errors were not being logged. It
| took me multiple days to realize that the application was
| running out of file handles, and that log4net wouldn't log if
| it couldn't get a file handle. Even though the fix (reverting a
| very small bugfix) was simple; the _real_ fix was to customize
| log4net to always keep the log file open. This way, if the
| application ran out of file handles, the error would be logged.
| kr0bat wrote:
| Yup, that one paragraph left me scratching my head. In my
| mind the (very thinly described) image upload functionality
| should have failed regardless of configuration.
|
| Maybe by "the images simply wouldn't upload." the author
| meant "did not display", and the file was being uploaded to
| the data store, was visible when viewed in the data store
| directly, but would not be displayed in app when requested.
|
| I got the feeling that this is one of those 500-mile email[1]
| stories, where technical details are omitted for easier
| storytelling
|
| [1] https://news.ycombinator.com/item?id=9338708
| gwbas1c wrote:
| It's not the technical details that's omitted, though. The
| 500 mile email story told us about the debugging process
| and limitations imposed by the speed of light.
|
| Shawn correctly points out that it's okay to get stuck for
| awhile: It happens to everyone. But he never actually has a
| lesson that he applies to his job.
|
| In the 500 mile email story, the real lesson is has more to
| do with understanding the risks of upgrades and the need to
| manage them.
| 59nadir wrote:
| > Was Shawn able to access anything on the server that would
| confirm/deny that the image upload was coming through? Why
| did the image upload work in the test environment but not in
| the released version of the app? What was different about the
| test environment?
|
| This reminds me of a product I worked on where several (in
| fact _most_ ) of the production-critical APIs (banking APIs,
| transfer APIs, etc.) had major undocumented differences
| between production and test instances to the point where if
| something was using them you just couldn't ever be sure that
| what you had was actually correct. Some of this stemmed from
| some of the APIs technically being mandated by law and there
| was no interest in actually making them good, but some of
| them were actual B2B solutions that just sucked for no
| apparent reason.
|
| At points like these it's (IMO) quite defensible to build a
| very comprehensive adapter that basically does most of the
| surface work of the API you're using as best you know right
| now, i.e. almost pretends that it _is_ the other system to a
| degree where you 're re-implementing large parts of it.
| city41 wrote:
| Several times throughout my career I've been hit with something
| erroring and it just being silent and completely stumping us. No
| error output, nothing. In a lot of these situations, we were able
| to track it down to some low level third party library doing
| `catch (e) {}`. The first one happened early in my career, and it
| was a good lesson. I don't take any error for granted, at the
| bare minimum I log it. You just never know, your software could
| still be used 5 years from now and in a totally different
| environment than you ever imagined.
| csours wrote:
| Oh this function is totally obvious to everyone on the team, no
| need to comment it.
|
| 30 years later:
|
| /* X systems I modul body I 14.09.1990 */
|
| void xxvcda(int *addr, int sizeof)
| maxwelljoslyn wrote:
| Ohhhhh yeah. I'm working on some code right now where the
| previous drive-by author trapped the underlying library's
| exceptions, then raised completely useless ones instead. He
| also didn't know how to use the language mechanism where you
| raise one exception "from" the previous one, to preserve
| context in the stack trace.
|
| Fun stuff. At least this isn't for my job, which has its own
| fun.
| sdrothrock wrote:
| This recently happened to me with DRF and JWTs -- the JWTs were
| invalid due to sporadic timing issues and we were unable to log
| in. There was no indication that anything was going on since
| DRF was swallowing the validation errors and returning a
| generic error, so I had to manually go down and add logging to
| find out what was even happening.
| Elucalidavah wrote:
| > DRF was swallowing the validation errors and returning a
| generic error
|
| DRF assumes (for safety) that what you have is a public API.
| For JWT validation errors, you don't normally expect to have
| error-level logs, as it should be a problem of the API
| caller, not of the service.
|
| However, if you are using DRF for an internal API, it is
| indeed useful to change the error handlers to, basically, add
| tracebacks to all the returned API errors.
| zoogeny wrote:
| This reminds me of a colleague I had that would often say "we
| aren't making air-traffic control systems here". The implication
| being that no lives were on the line if we made a mistake. This
| was when I was making games but it also applies to just about
| every CRUD app I've written.
|
| Tangentially, one thing I often ask other senior technical
| leaders (especially Director, VP or CTO) is: what is the most
| costly mistake you have made? If you are a junior engineer, make
| sure you do it sometime. Many/most high-level leaders in tech can
| tell stories in the $100k to $1m range. I've seen people lose
| millions of dollars on a project and get promoted immediately
| after. It is important to understand why that can happen and why
| it can even be a good thing.
| knaidofngio wrote:
| >The implication being that no lives were on the line if we
| made a mistake. This was when I was making games but it also
| applies to just about every CRUD app I've written.
|
| I don't agree. Maybe a failure won't result in people dying in
| a ball of fire, but it can still cause harm. Even minor harm
| can still add up at scale.
|
| Frustration from a buggy game could lead to real-world road
| rage or shouting matches. People have killed themselves because
| a computer sent them a bogus bill. Businesses have failed
| because software lost valuable data. People have been murdered
| because of silly social media apps. People have organized
| pogroms on Twitter. People have been stalked and assaulted
| using information leaked by Pokemon Go.
|
| Software has real power. If it didn't, there would be no point
| in writing it.
| zoogeny wrote:
| It is fair to misunderstand what I was saying since all
| things are ambiguous. Without context I could see this being
| interpreted as permission for people to be lazy, incautious
| or even negligent.
|
| But I urge you to consider the other side of the spectrum and
| the pressures that people can put on themselves. For some, in
| their search for perfection, they can ruin their own lives.
| They can see every mistake they make as a personal failure.
| It is useful to remember that in the vast majority of cases
| people bounce back from these failures.
|
| You will hear over and over how many entrepreneurs fail in
| their first businesses, often several times. Most often in
| life you don't just get a second chance, you get many
| chances. There a only a few places in life where a single
| failure is truly catastrophic.
|
| So if you find yourself overwhelmed as a junior engineer, as
| described in this story. If you feel your stomach in knots
| and you are terrified your lead in going to eviscerate you in
| front of a cheering audience - just know you have more
| latitude to fail and try again than you might expect.
| knaidofngio wrote:
| I never thought you said that sloppiness is acceptable. I
| edited my comment to try to make that clearer.
|
| But I think we should remember that _everything_ matters.
| People 's lives are not mostly made of weddings and
| funerals and gun fights and plane crashes. They're mostly
| made of chores and small talk and dumb little mobile games.
| Nothing is really trivial. You shouldn't beat yourself up
| over mistakes, but that's not because they don't matter.
| zoogeny wrote:
| Sure, everything matters. But some things matter more
| than others. If my internet fails for an afternoon that
| seems to matter less than if my wedding is a catastrophe.
| If my video game crashes that seems to matter less than a
| plane crash. We call this "putting things into
| perspective".
|
| I mentioned the word "humility" in another response and
| that is the crux of what I'm trying to communicate. It is
| often the case that we can exaggerate the importance of
| our own work and it often helps to take a step back and
| humble oneself. If you find yourself losing sleep over
| your work, if you find your anxiety levels high, perhaps
| you need some perspective. Perhaps you find it
| distasteful for me to suggest that the engineering work
| of air-traffic control software matters more than most
| CRUD apps. That doesn't mean every other kind of software
| has zero worth. It just provides an anchor for
| perspective - a kind of software where literally
| thousands of lives are at stake 24 hours per day. Most
| developers are not under that kind of stress.
| gwbas1c wrote:
| > we aren't making air-traffic control systems here
|
| I also find that attitude troubling.
|
| I've worked on software that could loose peoples' cherished
| data. Now I work on software that could cause flooding if it
| misbehaves.
|
| Take a bit more pride in your work.
| zoogeny wrote:
| You can definitely take the comment in the worst way possible
| if you desire.
|
| This was in the early 2000s in the games industry. I'm not
| sure if you are familiar with that culture, but it was a time
| when the engineers were working 12+ hour days for months at a
| time. People were pouring their heart, souls and sanity into
| shipping software, often working until they literally broke
| down. I remember one engineer boasting that he had worked for
| 2 months straight without taking a single day off.
|
| In that environment the stress was high and technical
| discussions could often escalate into heated arguments. We
| often had to remind ourselves that we were making _games_ and
| many people working there were supposedly living their
| childhood dreams. It was important to remember that.
|
| The idea that we didn't take pride in our work or didn't do
| everything in our abilities to ship the highest quality
| software is beyond incorrect. It was that excessive pride
| that we needed to guard against by checking in to reality. It
| wasn't a call to laziness, it was a call to humility.
| stavros wrote:
| I miss working on low-risk stuff like that. I now work in
| healthcare, and a missing letter can mean that someone dies.
| stavros wrote:
| Wait, how was this not caught in testing? It's not like this
| would differ between testing and production.
| gardenhedge wrote:
| And a roll back should have worked for this issue
| ShMcK wrote:
| I believe the mimetype check on Android must have only been
| applied to production environments. It's an odd one.
| failrate wrote:
| I always dogfood my own software, but now I guess I also need to
| corn cob dog my software, too.
| nusl wrote:
| Perhaps the jpg -> jpeg tidbit will save my ass someday. Thanks
| teaearlgraycold wrote:
| I now feel very validated for using TypeScript to statically
| validate mime types.
| jerf wrote:
| I've developed a real distaste for the people whining about how
| we aren't real engineers and we "just" need to solve that by
| working more like real engineers and having all these massive up-
| front design meetings and making tons more plans, etc. etc.
|
| It betrays a profound misunderstanding of the situation. The
| other engineering disciplines don't work like that because
| they're just soooo much more professional than us. They don't
| work like that because it is a better way. They work like that
| because for them, it is the _only_ way. You do not build a hotel,
| and then realize the ceilings need to be six inches higher, and
| tear the whole thing down and start over.
|
| If they _could_ work by running ceilingHeight += 6 and hitting
| "Rebuild", see the hotel rebuilt and the automated unit tests
| automatically double-check the usability of everything inside for
| handicapped people etc., all for a grand total of about $2.82,
| they absolutely would.
|
| Shed your inferiority complex. We are not squalling babies
| drooling on our blocks while Real Men (with all the pejorative
| connotations modern political sensibilities see in that term
| fully intended) are building bridges and dams. We engineer with
| better tools than they could dream of having, and it's completely
| expected that that results in highly significant changes to our
| processes.
|
| Do we sometimes fail to bring enough process to a problem? Yup.
| But if you think that's a problem unique to programming, I
| prescribe to you spending several hours with
| https://www.imdb.com/title/tt4788946/ .
| 4gotunameagain wrote:
| > Shed your inferiority complex. We are not squalling babies
| drooling on our blocks while Real Men (with all the pejorative
| connotations modern political sensibilities see in that term
| fully intended) are building bridges and dams. *We engineer
| with better tools than they could dream of having, and it's
| completely expected that that results in highly significant
| changes to our processes.*
|
| I just want to add, that this comes off as originating from an
| inferiority complex ;)
|
| Why is the term engineer so important to you ? Just do your
| job, do it right, and ignore criticism.
| jerf wrote:
| I don't have the inferiority complex. I see it in others.
|
| They are, frankly, welcome to it, right up until they try to
| ruin my job by adding negative-value processes because of
| their complex.
| dudeofea wrote:
| you can certainly fix an engineering design in-situ, just look
| at all the airplanes/jets designed pre-CAD software that were
| made "just-so" with all the know how embedded in the brains of
| those that made them/fixed them
| https://www.youtube.com/watch?v=NPVT2lvMvOk
| jerf wrote:
| Of course you can... _sometimes_.
|
| And you can't always do it in software, either. I keep a
| mental list of "things you can't really retrofit onto a
| mature piece of software" that I keep kicking myself to turn
| into a blog post sometime. I suppose a quick & trivial
| example is that pretty much by definition switching languages
| involves a rewrite.
|
| (Though that involves a bit of definitional footwork where I
| declare using a compiler that goes from language A to B isn't
| really "switching to B". Anyone who has tried that maneuver
| in real life can attest it certainly isn't the same thing as
| a real full rewrite in the target language, even if it does
| sometimes have its utility.)
|
| Still, there's literally orders of magnitude difference in
| how likely a given retrofit is to work and how easy it is for
| us to add it, and proof of that is precisely in the enormous
| signature this difference leaves on our processes.
| gretch wrote:
| I completely agree, it's 2 separate mediums with their own
| optimized process/technique.
|
| It's like sculpting Clay vs Marble. If you make a boo-boo in
| clay, it just takes you a second to readjust. If you are
| working in Marble, and you took a piece out that you weren't
| supposed to - well it's time to order a new marble block.
|
| Taking the techniques and processes of marble sculpting into
| the world of clay would just make you a bad (or at least highly
| inefficient) clay sculptor.
|
| And there's really no point to a dick measuring contest of
| whether clay or marble sculpting is more worthwhile - they both
| have their own place in our society.
| zemvpferreira wrote:
| I might be misreading but I think you're missing the forest for
| the trees. It's not about the upfront planning, meetings or
| whatnot, those are consequences of prior criteria. This is what
| engineering is:
|
| 1-A practical problem is being solved in a scientific way.
|
| 2-Safety, repeatability, understanding of the how and why of
| the solution are non-negotiable.
|
| 3-The person solving the problem has been credentialed as an
| engineer in both ethics and scientific rigour.
|
| 4-Because he is credentialed, there is non-waivable liability
| for the engineer signing off on the solution if it fails.
|
| No whining or superiority intended, but if any of the four
| criteria is missing, you're not practicing engineering. In my
| experience most software development is missing all four.
| That's not necessarily a bad thing, it's just that most
| software development isn't engineering.
|
| Again, nothing intended by it. There's no superiority to
| engineering over development.
| kortilla wrote:
| > 3-The person solving the problem has been credentialed as
| an engineer in both ethics and scientific rigour.
|
| >4-Because he is credentialed, there is non-waivable
| liability for the engineer signing off on the solution if it
| fails.
|
| Both of these are bullshit. The engineers that aren't yet
| credentialed but do all of the work that the PE signs off on
| are still certainly engineering.
|
| > 2-Safety, repeatability, understanding of the how and why
| of the solution are non-negotiable.
|
| Safety critical systems would like a word.
| javawizard wrote:
| My bleeding linguistic descriptivist heart breaks a little
| every time I see an argument devolve into squabbling about
| the meaning of the word "engineer". Like, we can totally
| debate the merits of applying or not applying those four
| rules to the practice of creating software, but do we really
| gain much by arguing about what label we use to represent
| them?
|
| It's like how the word "literally" has come to be used as an
| intensifier, not strictly in the (ahem) literal sense of the
| word - and "objectively" is well on it's way down the same
| path. You can be angry about that, but it's not going to stop
| the continuing evolution in how the world uses those terms -
| and "engineering" as a term is exactly the same.
| javawizard wrote:
| Total tangent - one of the things I love about 3D printing is
| that it's about as close to "ceilingHeight += 6" as you can get
| in the real world.
|
| Case in point: I modeled a thing today, printed it off, and
| realized that it would be ever so helpful if one part were
| about a millimeter thicker. 30 seconds later, version 2 of the
| part is on its way to the printer.
|
| It's fucking _amazing._ I can't wait for stuff like that to
| become as mainstream as paper printers are.
| yen223 wrote:
| I think people who think software engineering isn't real
| engineering, will be shocked at how much "real" engineering is
| just people plugging numbers into software
| antod wrote:
| Yeah, in my experience, the real world engineering was
| rushed, under funded, relied on gut feel, and could count on
| the humans on site building it to use their own judgement to
| make up for all the gaps in the designs, drawings or specs.
|
| Although back then in the 90s it was plugging numbers into
| tables rather than software. Very little science involved in
| any of it.
| NKosmatos wrote:
| Besides the debuggers/analyzers/simulators/emulators... we have
| at our disposal, a more powerful "ancient" mechanism exist: code
| inspection/review/desk-check by a fellow programmer.
|
| I understand it's not applicable in all positions/companies and
| heavily depends on the team and project size, but I've seen it
| work too many times.
|
| Following this, the next best thing is testing (as others have
| commented).
| assimpleaspossi wrote:
| We had a presentation of our new medical instrument to marketing
| on Wednesday so there was a big push on Monday to get the display
| up and running perfectly. There was a dot on the screen. I didn't
| know why there was a dot but I was under pressure to finish
| everything else. So I semi-ignored it.
|
| The the Engineering Manager walked by. "There's a dot," he said,
| "Get rid of it before Wednesday."
|
| With all the other things going right with the project, why this
| dot--a single pixel--was so important drove us all crazy. I ran
| through the assembly code that handled all this over and over
| again and couldn't see anything wrong. Never a reported error by
| the assembler. Neither could the project manager. Stayed at work
| all night to wrap it all up and, on Wednesday morning, everything
| was done and working perfectly just as the Engineering Manager
| walked into the room at 8am.
|
| "That dot is still there."
|
| Like the author of the article, I questioned whether I should be
| in this line of work. I continued rewriting, assembling, and
| testing every variation of the code I could. At 3:00PM on Friday,
| I found the issue.
|
| MOVE B #0,D0
|
| Do you see it? Imagine this is the 1990s, with a green screen
| monitor and a PDP-11.
| mandarax8 wrote:
| No I don't see it. Are moving D0 into B? What's the #0 doing?
| assimpleaspossi wrote:
| The problem. It's MOVE.B #0,D0
|
| Do you see it now?
| saagarjha wrote:
| I assume that's where the framebuffer is?
| assimpleaspossi wrote:
| Yes. Or at least the data for it.
| jaffee wrote:
| wait... but why did it work in the development environment?
| ShMcK wrote:
| Exactly. That's what drove me crazy.
| danwee wrote:
| > By Thursday, I began to worry about my own job security. I had
| been spinning on a feature I said I would ship 3 days ago.
|
| Off-topic: is it really like that in the US? (I'm assuming he's
| from the US). Like, if you get stuck for a few days, you start to
| worry about being fired or reprimanded?
| tedunangst wrote:
| As real as the rest of the story.
| mgaunard wrote:
| The article is nonsense from the first sentence.
|
| Software development has all of diagnoses, audits and
| proofreading.
|
| It's an all-encompassing discipline.
| moron4hire wrote:
| And this is why I have a few KLOC file that has every known media
| type as a named variable. It takes up less space than a single
| JPEG image, but it makes it so I never screw up media type
| spelling.
|
| Because I, too, have been there.
| guhcampos wrote:
| While the low stakes can be seen as a privilege, I could also
| argue it can be seen as utterly detrimental.
|
| Many of us suffer from mental health issues up to burnout. Why do
| we burnout if we're not dealing with life or death? Something is
| psychologically wrong with this job.
|
| This is, obviously, a multidimensional issue, but one of the
| probable causes is Alienation. Ultimately, some software
| developers can, consciously or not, question the meaningfulness
| of spending 40+ hours a week on stuff that is, to a large extent,
| pointless - even harmful. Sure, the money is good, but how much
| cash do you need to buy meaning? How deep in the hedonic
| threadmill can you go before snapping?
|
| I'm not even sure if these questions apply to myself, it's just
| something that keeps coming up in my own therapy and among
| friends in the trade.
| sojournerc wrote:
| Well put. After 10+ years in the industry I question how much
| value I've actually brought into the world, and it certainly
| did lead to major burnout, which I am only recovering from now
| after 8 months being funemployed. Only in hindsight do I see
| how bad it was for my sense of fulfillment in my life.
| KaseKun wrote:
| Feedback: I opened your page, eager to read, saw the "subscribe
| to my substack" email popup and just left.
|
| Not salty, just broke my interest. So now I will go about my day
| without reading your article. p.s. I'm sure it's very good though
|
| Consider saving that popup until I've read some of the article
| user_7832 wrote:
| That's substack behaviour btw, and you can just click continue
| reading
| lemper wrote:
| this kind of thing is what I realised in my first 2 years of my
| work life. and whenever we have a family gathering, those
| relatives are usually bragging how hard their jobs and life are.
| but not me, I brag how easy my job is. clock in at 930, get the
| hell out at 1830, then no thoughts given about job after the
| hours.
| crvdgc wrote:
| > I sent a message to my friend, "Cracked it at last. It was the
| letter 'E'."
|
| Enum types have saved me so many "typo"-related errors. Even in
| this case, it's not exactly a typo, but the encoding process
| should make you ask questions about the domain and the meaning of
| the strings you operate on.
___________________________________________________________________
(page generated 2023-11-04 23:02 UTC)