[HN Gopher] You've only added two lines - why did that take two ...
       ___________________________________________________________________
        
       You've only added two lines - why did that take two days?
        
       Author : gregdoesit
       Score  : 254 points
       Date   : 2020-07-14 18:38 UTC (4 hours ago)
        
 (HTM) web link (www.mrlacey.com)
 (TXT) w3m dump (www.mrlacey.com)
        
       | dev_tty01 wrote:
       | -2000 lines of code.
       | https://www.folklore.org/StoryView.py?project=Macintosh&stor...
        
       | ilyas121 wrote:
       | One time I spent 3-4 months working on a project that amounted to
       | adding 11 lines of code to a config file on kubernetes. Tbh, a
       | lot of it was bad communication, but it was also because I wrote
       | and rewrote so much of the same code.
        
       | not2b wrote:
       | I recall a story about someone at a government contractor who did
       | a major refactoring and removed thousands of lines of code from a
       | project, increasing its performance, only to be told by
       | management that they'd signed a contract that said the company
       | got paid by lines of code delivered, and his improvement would
       | cost them tens of thousands of dollars, so revert the whole
       | thing.
        
         | pintxo wrote:
         | As long as we are counting LOC before compiling, that can be
         | solved easily:                   if (false) {           /*
         | original code stays here, as we are payed by LOC */         }
         | else {           /* write your new code here */         }
        
           | flingo wrote:
           | As long as this is contained to the metrics-metagame branch
           | of the git repo, I am fine with this.
           | 
           | Get 80k commits in, before lunch.
        
           | ZoomZoomZoom wrote:
           | Realistically, it would take some compile time conditionals
           | in a bunch of places to get rid of the dependencies. The best
           | part, you'll get paid for all those #ifdefs, whens and
           | #[cfg()]s! You can even split longer functions to be able to
           | wrap each one of them in those conditionals! Where do I sign
           | up?
        
         | vikramkr wrote:
         | That's a pretty bad breakdown in communication- the manager
         | should have communicated how the contractor was paid and the
         | programmer should have spent their time working in line with
         | that - whichever end that breakdown happened on that sounds
         | like that led to an awful lot of misery and wasted time - ouch
        
       | mrwh wrote:
       | "Because the text was so light it was difficult to read"
       | 
       | Snark aside, it's quite a good list.
        
       | ChicagoDave wrote:
       | I can't like this post enough. We are not accountable by lines of
       | code. Delivering healthy, maintainable software requires thought,
       | experience, and thorough testing. This is why companies have
       | taken so long accepting the idea of unit testing.
        
       | adrianmonk wrote:
       | You've only rendered one two-word verdict -- why did that take
       | five days of deliberation? You had twelve people working on it!
        
       | [deleted]
        
       | dllthomas wrote:
       | One of my favorite contributions involved two commits: one that
       | added 5 lines, another a bit later that removed a different 5
       | lines. This was after more than a week of building tiny models to
       | understand how the system might behave. Thankfully I was on a
       | team that appreciated it, although the reduced load on on-call
       | quickly drove the point home :)
        
       | augustk wrote:
       | With unit tests included it would probably be more than two
       | lines.
        
       | tdrp wrote:
       | We had a non-tech lead at some point (although his title was
       | something like development manager) and he would praise my
       | coworker for how many check-ins he did. Except that coworker
       | would do things like:
       | 
       | 1- Copy-paste an entire class into a new class and change a
       | single constant in it, because he was too lazy to do inheritance.
       | 
       | 2- "Solve" multiple bugs a day that he had introduced himself the
       | day before.
       | 
       | 3- Loudly complain about other people's frameworks/codes.
       | 
       | He was the super confident type even though he was wrong more
       | often than not. But paired with a non-tech lead with his own
       | impostor syndrome, it was a recipe for disaster.
        
         | throwaway_dcnt wrote:
         | That word (imposter syndrome) does not mean what you think it
         | does :)
        
       | arnvald wrote:
       | Oh, that reminded me of my "two lines" moment. Years ago I was
       | writing software for some university project, and one feature
       | took me a few days to figure out and implement, and when I
       | checked the diff I realized that "all" it took was removing some
       | 20 lines of code. I literally added a feature by removing some
       | constraints that I had previously introduced.
        
         | zdw wrote:
         | Deleting code is giving your future self a gift of not having
         | to maintain that code anymore.
        
           | Scramblejams wrote:
           | Yes, I like to say it as "A line of code deleted is a line of
           | code debugged."
        
       | rmason wrote:
       | Because I had to explore all the things that wouldn't work before
       | finding the two lines that did.
        
         | newshorts wrote:
         | This summarizes the argument pretty well and should suffice as
         | a tl;dr.
        
       | not2b wrote:
       | Too bad about the low-contrast gray on white text. It is a source
       | of eyestrain.
        
         | yongjik wrote:
         | Came here to say this. Gray on white for anything other than
         | disabled options is a sin. This website is particularly
         | egregious.
        
         | tempodox wrote:
         | Agreed, came here to say the same:
         | 
         | https://contrastrebellion.com
        
       | whoisjuan wrote:
       | If someone is measuring productivity in code, based on the amount
       | of lines of code written, then they have never written code.
       | Anyone with a tiny understanding of how programming works would
       | totally get why something so small could take so long.
        
         | mv4 wrote:
         | Seriously, Albert? You spent 7 years and "E = mc2" is all you
         | produced? We need to talk.
        
           | quickthrower2 wrote:
           | Michelin Star: 1kg food
           | 
           | 2 Stars: 2kg food
           | 
           | 3 Stars: 3kg food
           | 
           | "Well KFC can do it..."
        
         | joe_the_user wrote:
         | I know the reasons for not producing code consistently. They're
         | logical and I can even verify them. BUT I am still frustrated
         | with _myself_ when I don 't produce significant code each day.
        
       | slaymaker1907 wrote:
       | I'd rather write 2000 lines in two days since if I've only
       | written 2 lines, figuring out those 2 lines must have been
       | miserable.
        
       | arendtio wrote:
       | Actually this is one of the upsides of web development: Since
       | every line contributes to the file size of your software and
       | therefore to the loading time there is a motivation for keeping
       | the code base small.
       | 
       | Sadly, there are many projects out there which obviously failed
       | to reach this target at some point.
        
         | aequitas wrote:
         | This can also go suprisingly wrong when management decides code
         | size is the performance metric needed to improve the site and
         | hires a "performance engineer" who abolishes all structure and
         | abstraction in the code, making it near-impossible to debug and
         | maintain. But at least it runs fast.
        
           | arendtio wrote:
           | True, the quest to reach a small file size can also lead to
           | various down-sides. Cryptic architectures and weird code are
           | just two popular symptoms.
        
       | glouwbug wrote:
       | What if a single line change, given it took 2 weeks, fixed 40% of
       | your crash rates? That fix alone is worth millions, almost 100x -
       | 1000x the engineer's hourly salary in down time.
        
         | arendtio wrote:
         | A manager would certainly argue the other way around: The
         | person who created the bug costs the company a lot of money.
         | Fixing that single line was just necessary because someone
         | didn't do his work in the first place. So fixing that line is
         | something you should do off-the-clock.
         | 
         | This is just one of the reasons why I appreciate it when
         | managers have at least some coding experience.
        
           | cgrealy wrote:
           | To that manager: that bug wasn't the creation of a single
           | developer. It went through code review. It had unit tests. A
           | QA verified its initial implementation and a Product Owner
           | signed off on the feature as done.
           | 
           | If it wasn't caught before prod, it's either such an edge
           | case as to be almost impossible to catch OR (more likely)
           | it's representative of a systemic failure within the
           | organisation.
        
       | BurningFrog wrote:
       | Conclusions:
       | 
       | 1. Picking a good manager is very important!
       | 
       | 2. Communicating with your manager is very important!
        
         | Lammy wrote:
         | 1. Being in a position where you have the privilege of being
         | able to pick a good manager is important :)
        
           | williamdclt wrote:
           | I remember hearing somewhere that the reason n.1 people leave
           | their job was their manager. Don't know if that's true but
           | the idea's there. So it makes sense that your manager should
           | be a major decision criteria when you pick a job (being able
           | to actually pick a job is also a privilege, but it's fairly
           | common in SWE)
        
             | Lammy wrote:
             | Many companies have a team-selection process that starts
             | after (and is separate from) the actual hiring, e.g. you
             | might not know who the available managers are or if there
             | even are any 'good' ones.
        
       | otikik wrote:
       | Those two lines took two minutes to write.
       | 
       | Knowing which lines to add, and where, took 25 years of
       | experience.
       | 
       | That's what you are paying.
        
       | RandomInteger4 wrote:
       | Because I procrastinated due to the overwhelming complexity
       | overloading my mind with the myriad scenarios resulting from
       | those two necessary lines and my lack of experience with this
       | scenario depriving me of the intuition necessary to prune the
       | aforementioned tree of mental complexity in an efficient manner.
        
         | Piskvorrr wrote:
         | Because I have spent time thinking, not merely typing. (The
         | error "programmers are just overpaid typists" is widespread)
        
           | Jtsummers wrote:
           | My first boss and my boss two positions ago both thought that
           | way. It was incredibly frustrating. Along with: If only you
           | programmers would stop putting in bugs we'd ship perfect
           | software every time. (When most of the "bugs" were
           | specification errors and not program logic errors.)
        
             | neatze wrote:
             | Where does program specification ends and where does
             | program logic starts ?
        
               | [deleted]
        
               | beckingz wrote:
               | Where management says it does.
        
               | Jtsummers wrote:
               | Program logic error:                 // return the
               | maximum value from an array       return array.min();
               | 
               | Specification error:                 Only users with role
               | X can access this content.       [where X should've been
               | Y]
               | 
               | In the former case, a test should catch it (because the
               | code isn't doing what we believe, per spec, it should be
               | doing). In the latter case, only validation (confirming
               | with customers) can catch it. Any test that is run
               | against the code will be based on the spec which tells us
               | to do the wrong thing.
               | 
               | Though we usually didn't run into the latter case, ours
               | were mostly embedded systems. So the problem was more
               | like: You implemented this against Industry Standard
               | 1234-A, but we're implementing against Industry Standard
               | 1234-B which says that message Foo word 15 now has a
               | range of 1-20, not 1-19, and 20 means "cease operations",
               | and 18 has been changed from "cease operations" to "halt
               | and catch fire".
               | 
               | So one system was developed per one spec, and another per
               | a slightly different spec. The other common scenario was
               | that the specs weren't created from thin air, but rather
               | based on a preexisting system. And the authors of the
               | spec misinterpreted what the preexisting system did and
               | gave an incorrect specification for a behavior. When
               | testing against the old system (or with the old system as
               | these were mostly communication systems) you'd see a
               | difference in behavior or failure to communicate. But
               | since tests were never truly comprehensive, many of these
               | errors could make it out into the world.
        
               | neatze wrote:
               | What happens in case where specification is:
               | 
               | [User inputs X1, system displays Y]
               | 
               | On system crash user input was X2.
               | 
               | Is this specification or program logic error ?
        
       | ak39 wrote:
       | Because coding is like the art and science of distillation.
       | Cheers.
        
       | staycoolboy wrote:
       | TL;DR: Regression.
       | 
       | This is one place where I learned a LOT from Intel. They differ
       | significantly from every other company I've worked for: they knew
       | from 30+ years of experience that validation and regression are
       | 90% of the man-years of effort. For each CPU there's 1 lead
       | architect, about 5-10 "lords" who scheme to become lead architect
       | (it's like the fucking Tudors over there), ~30 microarchitects
       | who write the RTL/VHDL, then about 80 designers, and finally
       | 300~400 validation engineers who verify the circuits drawn by the
       | designers match the RTL written by the microarchitects, and
       | validation takes multiple quarters for each rev, although metal
       | layers are slightly easier.
       | 
       | Every other company since then is just like "You're a contractor,
       | you should be faster than new college grads... chop chop."
       | 
       | I have contract with a cloud enabling service that deploys to
       | vendors who make surveillance devices. Every time I touch a
       | critical piece of code, even if it is a single line of code, I
       | have to validate on their 10 gateway platform SKUs and 30 level-1
       | device SKUs (and another 40 level-2 and below): That's at least
       | 300 combinations (I only have 30 set up at a time, and have to
       | change 10 times to swap in new hubs); then I have to run 60-90m
       | of regression tests. It takes two or three days to finish any
       | regression, assuming there are no bugs. I could cut that down to
       | a day if I had more lab space, but if anything goes wrong: BAM!
       | That's at least two weeks to debug and file new issues and
       | regress.
       | 
       | Can't say it enough: regress from day one. Hardware gets this a
       | bit better than software, because mistakes cost billions, but
       | real software should start from a test-forward posture: e.g.
       | write tests first, then write code to pass them.
        
       | addicted44 wrote:
       | If the reporter hasn't provided enough information to recreate
       | the issue (it's obviously not a major deal breaking issue
       | otherwise it would be obvious and easy to recreate) and they are
       | internal to the company, tell them to provide more information
       | before moving forward.
       | 
       | The author's approach is good for external bug reports, but they
       | don't clarify that's indeed the case here.
       | 
       | I have to strongly appreciate the author for finding the root
       | cause and tackling that instead of the symptom.
       | 
       | So often, especially in front end coding, you will see an
       | exception being thrown because of a null value being passed in,
       | and the "fix" checked in by the developer basically returns the
       | default value if null is passed in, when they should be
       | investigating and fixing why a null was passed into the function
       | in the first place.
       | 
       | If your function has a contract that forbids nulls from You
       | resolve the immediate bug, but this almost certainly leads to
       | multiple bugs being created in the future (or worse, something
       | that is quietly wrong, because 1 row in a 100 row table is
       | missing and no one noticed) until the root issue is resolved.
        
       | CodeWriter23 wrote:
       | Dude, you could have just said "because I take my job seriously
       | and executed with complete diligence".
        
       | rubyn00bie wrote:
       | Oh this reminds me of what went from one of the most infuriating
       | questions I would get asked by investors to one where I almost
       | wanted to bait them into asking it...
       | 
       | "Why/how is this worth X dollars/time? I know someone who says
       | they can do it in a week." To which, I eventually learned to
       | reply: "Wow, well... In that case, let me shoot you an article on
       | how to build a Twitter clone in 15 minutes. [awkward pause while
       | I smile at them] There's a lot more than just literal lines of
       | code that goes into building a successful software product."
        
         | dboreham wrote:
         | Gaslighting occurs in the workplace too.
        
         | quickthrower2 wrote:
         | Nice comeback
        
       | graton wrote:
       | A good commit message can also help to explain why the two lines
       | of code took so long.
        
       | zabzonk wrote:
       | Nobody should manage programmers who is not themselves a very
       | experienced programmer. Otherwise, you are in Dilbert Country.
        
         | msclrhd wrote:
         | The tricky part of this is that not all programmers make good
         | managers, or want to be promoted into management. They are
         | different skill sets. That said, having a basic understanding
         | of the difficulties and things that take time (learning new
         | technology, investigating/debugging an issue, etc.) would be a
         | good thing to have as a manager. Also, being able to assist
         | where possible -- asking if the developer needs someone to help
         | out, finding people with the relevant skills to mentor the
         | developer (or finding suitable courses/training/books), etc.
        
           | twodave wrote:
           | I mean, is it really this hard? This is not a good/bad
           | manager problem to me, this is an organizational culture kind
           | of problem. As a manager I'd expect my three top priorities
           | to be ensuring enough devs are on the team, communicating
           | priorities effectively, and unblocking the devs on the team
           | as needed.
        
       | shoes_for_thee wrote:
       | It's beside the point, but grey-on-white fonts give me a
       | headache.
        
       | rurp wrote:
       | This article made a number of great points.
       | 
       | > I know some developers don't like having to fix bugs, and so do
       | whatever they can to get out of it. Claiming there isn't enough
       | is a great way to look like you're trying to help but not have to
       | do anything.
       | 
       | God, this behavior has annoyed me so much at times. I've worked
       | with a few developers that were not bad overall, but would use
       | the slightest excuse to punt on fixing an issue they were tasked
       | with but didn't want to track down. Regularly weaseling out of
       | tasks like this wastes the time of multiple people and either
       | ends up back with the original dev or gets dumped on a more
       | responsible worker.
       | 
       | > Because I took the time to verify if there were other parts of
       | the code that might be affected in similar ways.
       | 
       | Not looking for other places in the code that are very likely to
       | be affected by the same issue is bafflingly common, in my
       | experience. Although I would say that managers are much more
       | often to blame for this behavior than the devs. Any workplace
       | that puts less weight on fixing an issue well than on artificial
       | metrics like number of tickets closed is incentivizing exactly
       | this type of behavior. Why bother getting criticized for spending
       | all day fixing a simple bug the right way when you can fix 5
       | different iterations of that same bug and close 5 tickets in the
       | same amount of time?
        
       | kentlyons wrote:
       | One of my favorite personal commits was removing about 5000 lines
       | of dead code tightly woven into many other parts of the overall
       | codebase.
        
       | celticninja wrote:
       | The fix is a refactor of a refactor of a refactor of the actual
       | fix.
        
       | m3kw9 wrote:
       | Cuz trying to understand someone's code, testing, debugging and
       | finally apply the fix, and test again.
        
       | kevsim wrote:
       | Do people actually have fights like this with management at their
       | companies? Not trying to knock the author, but I'm just surprised
       | anyone would actually hear this kind of comment in 2020. I'd
       | think by now any and all metrics tying lines of code to
       | productivity would be long dead.
        
         | beefield wrote:
         | > Do people actually have fights like this with management at
         | their companies?
         | 
         | There was a time when I thought this video was funny:
         | 
         | https://www.youtube.com/watch?v=BKorP55Aqvg
        
           | pintxo wrote:
           | Still think it's funny. But yes, it's no fun while you are
           | the expert.
        
         | cortesoft wrote:
         | A lot of software development still happens at businesses that
         | are not 'software companies'. The experience is very different,
         | with a much different culture around software.
        
         | RandomInteger4 wrote:
         | This scenario seems like something that's more common in
         | freelance work where the client has access to the code for
         | whatever reason.
        
         | decebalus1 wrote:
         | You'd be surprised...
        
         | birdyrooster wrote:
         | I know someone that worked at some skeezy company in Menlo Park
         | that got passed up for a raise after spending months navigating
         | the bureaucracy to save the company millions on their operating
         | costs because they didn't write enough code. This was in the
         | last four years.
         | 
         | Edit: And they quit right afterwards.
        
           | 0xEFF wrote:
           | It's better to find ways to make more money than to save it.
           | There's a floor but no ceiling in much of what we do.
        
             | rriepe wrote:
             | Thanks. This comment blew my mind. This perspective is so
             | far on the other side of things that I never considered it.
        
               | stormdennis wrote:
               | It feels like saving money might also be more
               | environmentally friendly than growth.
        
             | BurningFrog wrote:
             | If your revenue can grow exponentially, that's probably the
             | right priority.
             | 
             | Most companies aren't like that though. Know your company!
             | 
             | Also consider if you can run out of money before growth
             | kicks in...
        
             | mring33621 wrote:
             | Yessir, Mr. Belson!
        
             | [deleted]
        
             | tehjoker wrote:
             | The ceiling is the size of the addressable market.
        
             | jedberg wrote:
             | I wouldn't say it is better, just different. Both have
             | value. If you find a way to save millions, that might be
             | quite worthwhile, because that might be easier than
             | building something new that _makes_ millions of dollars. It
             | 's all about ROI.
        
               | melling wrote:
               | People shouldn't downvote him. He's right. i've done lots
               | of small things to save time and money in the past.
               | Management really doesn't value it as much as making
               | money or working on more visible projects.
               | 
               | Telling someone that it only took me an hour to eliminate
               | an hour of someone's work every week doesn't go far.
        
               | VLM wrote:
               | Someone was building an empire by having employees do
               | manual data entry instead of parsing json files. All the
               | way up the mgmt tree there are fewer direct reports.
               | Nobody ever gets a job title promotion by having fewer
               | direct reports.
               | 
               | Even worse, someone else now has to explain "why they did
               | it wrong to begin with" regardless if the replacement
               | technology existed or not at the time of original process
               | creation.
        
               | jacobr1 wrote:
               | A lot of this just visibility and internal salesmanship.
               | Having an engineer standup at an all-hands and be lauded
               | for saving $X million right after the sale-gal is lauded
               | for closing the deal with $BIG_CO is something I've seen
               | done, and it does it get recognized.
        
               | jedberg wrote:
               | That's just bad management, not an axiom.
        
             | fphhotchips wrote:
             | This heavily depends on the industry you're in. In
             | software, yes this may be true, but in low margin
             | industries it's absolutely not.
             | 
             | The maths is simple. If my margin is 1%, and you make me an
             | extra $100, I keep a buck. If you _save_ me $100, I keep
             | that whole $100. If I 'm smart, I can use that to drive my
             | prices down, and take more market share without reducing my
             | margin.
             | 
             | Obviously it becomes less clear if your margin is >20% or
             | so.
        
             | buran77 wrote:
             | Making a million or saving a million are equally important
             | in the end assuming one of them doesn't require
             | particularly unreasonable ways. Sometimes it happens that
             | the floor is really close to the ceiling and lowering the
             | floor is the easier thing to do. Go for the low hanging
             | fruit first. If you have too much useless clutter it makes
             | sense to remove it rather than break down walls to expand.
        
             | grecy wrote:
             | Certainly many companies prefer this approach because so
             | many goals are tied to increasing revenue, and certainly
             | personal bonuses are too. Very few people get rewarded for
             | decreasing costs. In my last (big!) company it was never
             | even talked about. Increase revenue was the only goal.
             | 
             | Also making more money is better, because it means growing
             | the company with more employees and more job safety for
             | everyone.
        
           | akhilcacharya wrote:
           | The defense I've seen is that it works reasonably well as a
           | measure of productivity _if_ you're working in a similar team
           | and in a stable codebase.
           | 
           | From what I understand a lot of product teams at FB have
           | nearly frictionless development tooling for their use cases
           | so the pressure is to produce volume.
        
             | ramraj07 wrote:
             | Was the team that caused the outage of half the apps on iOS
             | one of them?
        
         | cek wrote:
         | I'm a maintainer of an OSS project with other contributors. I
         | have fights like this all the time because others are
         | constantly just wanting to fix the symptoms. This is for a
         | project that is a framework/API, where the saying "the best
         | programmers remove more code than they add" should be even more
         | true.
        
         | archi42 wrote:
         | I regularly hear a friend complain about BS like this and
         | variants. "Why did adding a button take a week, it's just a
         | button?!" is also very popular. Not sure what's worse, that or
         | the recurring "that element should be 1px to the left, drop
         | everything you're working on and fix it asap"...
        
           | seamyb88 wrote:
           | I sometimes battles with myself over things like this. I code
           | for my job and for recreation, the latter being where UI
           | comes in. In order to get anything done in recreational
           | programming you have to concede that you're not building an
           | app with bells and whistles. Yet I lose so much time over
           | $hit that does not matter. Usually aesthetics.
        
           | touristtam wrote:
           | Try changing the colour and getting told it isn't the same
           | shade of red as the drawings presented by the designer on his
           | PDF presentation.
        
             | detaro wrote:
             | I mean, that's totally reasonable if that's the spec (not
             | to mention hopefully trivial to fix).
             | 
             | Now if there's 5 drawings with different colors, or asking
             | "what color do you want it?" leads to a 5-week email
             | chain...
        
           | silveroriole wrote:
           | A funny side-effect of this that I ran into: customers who
           | went to tortuous lengths to avoid requesting a new page or
           | button, because they'd had that past experience of 'just a
           | button' taking 2 weeks. They still wanted all the new
           | functionality, but glued onto the existing pages/buttons
           | because they thought it would save time! An interesting
           | misunderstanding :)
        
         | ajford wrote:
         | Not everyone has good managers.
         | 
         | $JOB-2, admittedly about 4 years ago now, the good manager with
         | a background in software left for a better opportunity and was
         | replaced by someone who's background was management. With no
         | insight into the subject matter, they fell back on whatever
         | they thought they could quantize.
         | 
         | Got numerous things like that, though my team lead and our
         | project manager did a great job of shielding the team from that
         | crap, we still occasionally hear it come up in group meetings
         | and the like.
         | 
         | I even got a task handed directly to me, bypassing everyone
         | above me, to "estimate how much it would cost to migrate all
         | those linus apps your team has to windows. They'll run better
         | there". Just the windows licenses alone would have cost us
         | about half the existing server costs since we were using AWS
         | instances. Also included a line item that included recruitment
         | costs for a new developer, and verbally informed him that it
         | would likely involve hiring a new team, as the existing team
         | was hired specifically as linux developers.
        
         | trav4225 wrote:
         | One would wish. Personally, I don't think I've ever worked
         | under a manager who understood software development. It tends
         | to be all about what they can see (GUI) or about nearly
         | meaningless metrics on a dashboard (LOC, tickets closed, etc.).
         | Again, just in my personal, limited experience.
        
           | dgb23 wrote:
           | The problem is not "manager/client doesn't understand
           | software development". That's fine.
           | 
           | The problem is lack of trust in you as the expert and
           | possibly a lack of self-awareness (they think they
           | understand).
           | 
           | A manager/client should make mostly strategical decisions
           | like: We should solve this problem, here are the resources.
           | And almost never tactical.
           | 
           | They also shouldn't even care or look at LoC. They shouldn't
           | be worried about metrics of 'effort' at all.
        
             | trav4225 wrote:
             | Ah, agreed. I guess that, in my experience, not
             | understanding SW development tends to go hand-in-hand with
             | not trusting the developer.
             | 
             | I found your phrase "lack of trust in you as the expert" a
             | little jarring because (again, in my personal experience)
             | considering the developer to be a domain expert is somewhat
             | of a foreign concept. I suspect/hope the situation is
             | better elsewhere in the industry. :-)
        
               | dgb23 wrote:
               | I meant 'expert' as in the person responsible for the
               | technical side. Not in the sense of 'they know everything
               | they need to know all the time' or anything like that.
               | 
               | > I suspect/hope the situation is better elsewhere in the
               | industry. :-)
               | 
               | I do freelance, client work. Alone and in (very?) small
               | teams. Typically my/our clients only have a superficial
               | understanding of everything technical (if at all). Trust
               | often needs to be earned.
               | 
               | One way to gain trust is being creative/optimistic and
               | explaining feasible possibilities and strategies. Another
               | one is being pragmatic and not selling them something
               | they don't need, or might not need.
               | 
               | And then the most important one is to have conversations
               | about their problems and wishes. Showing that you
               | understand them by asking questions and writing a
               | specification. And explaining your (iterative) workflow:
               | "Let's figure this part out after we've done this other
               | part." I guess this is the "domain" part of the process.
               | 
               | My experience is that if trust is in danger then the work
               | is less valuable, less fun and less sustainable.
               | Indications of this are things like we discussed before
               | and similar:
               | 
               | - Trying to measure effort instead of rewarding value.
               | 
               | - Nitpicking, bikeshedding and other distractions.
               | 
               | - Overstepping their expertise (typical for UI design, a
               | bit less for programming)
               | 
               | Now most of my interactions are good but sometimes I get
               | the above. We're actually discussing of doing more
               | upfront communication work in the offers and initial
               | discussions to prevent these things (even by filtering
               | out clients/collaborators) and to set a tone. Because
               | again, this is unsustainable on multiple levels and it
               | never ends well...
        
         | seneca wrote:
         | You would hope so, but I've seen an Engineering Director at an
         | otherwise well run software company use number of Github
         | commits as the central reason to put someone on a performance
         | improvement plan as recently as 2019. Granted, this was someone
         | who was a professional manager and hadn't been an engineer for
         | the last 90% of their career, and many people were shocked by
         | it, but it happened.
        
           | kevsim wrote:
           | I was wincing a bit when I made my initial comment fearing I
           | might actually be wrong. This hurts to read.
        
           | majormajor wrote:
           | Were they right about the person being a low performer?
           | 
           | I'm curious if this is "everybody knows this person isn't
           | doing any work, here's a blindingly obvious metric to use to
           | defend this move to HR" because HR orgs often hate things
           | that don't have metrics attached, or if it's "I don't
           | understand what this person is doing, and I don't see any
           | commits, so it must be nothing"?
        
             | seneca wrote:
             | Completely valid question, and I think you make a great
             | point here. A lot of baffling managerial behavior is
             | because the manager is working in a baffling bureaucracy.
             | Unfortunately, I think this situation was largely of the
             | latter case, and maybe some motivations I'm not aware of.
             | 
             | They were a senior engineer that spent a lot of time
             | coaching the rest of the team, and less time on their own
             | personal work. The commits data point, in my opinion,
             | should have been the beginning of a conversation that ended
             | with the manager asking this person to adjust their
             | priorities. Instead it was presented as an accusation that
             | the person wasn't getting their work done, which ultimately
             | lead to them feeling insulted and quitting.
        
               | samatman wrote:
               | Which leads me to want to fill the rest of the story in:
               | the manager of the senior engineer had a friend he wanted
               | to promote, and this was the expedient way of getting the
               | obstacle out of the way.
               | 
               | That could be completely wrong, of course. But would it
               | surprise you?
        
               | majormajor wrote:
               | I agree with you on what a manager who doesn't know what
               | they're looking at should do there. You gotta dig in and
               | find out![0]
               | 
               | I've been fortunate recently to not work in orgs where
               | mentoring and collaborating like that is looked down upon
               | - instead, it's encouraged - but my ongoing struggle is
               | to figure out how to quantify it.
               | 
               | I've got two similar but distinct motivations for wanting
               | to quantify it:
               | 
               | * If I have a manager who looks less favorably on it, I
               | want to be able to demonstrate my worth; but also,
               | 
               | * If I'm spending most of my time trying to mentor the
               | rest of the team, I want to see how well I'm doing - and
               | I want to be able to change things and see if it results
               | in positive or negative changes
               | 
               | Sadly I've completely failed at coming up with how to
               | quantify this so far. It all comes down to qualitative
               | peer feedback/manager feedback...
               | 
               | [0] As a technical person, I try to practice the reverse
               | of this: if someone asks for a feature or claims there's
               | a bug, I try to dig until I fully understand why they're
               | asking for what they're asking. So I think asking for
               | similar curiosity and depth from a non-technical person
               | is fair.
        
               | seneca wrote:
               | Well, just spit balling, but you should see it in team
               | velocity. The effort you're spending coaching should show
               | up in the output of your team members.
               | 
               | Assuming there's some kind of constant ongoing engagement
               | with one person or group, I'd expect an immediate dip in
               | velocity as your productivity goes elsewhere, then it
               | growing, and maybe evening out to before-engagement
               | numbers (approximately), as they reap the benefits of
               | learning from a senior engineer. Then, as you're able to
               | return to normal duties and they're able to apply the
               | lessons, you should see velocity greater than before the
               | engagement. That delta should be somewhat quantifiable
               | and, ignoring other variables, should represent the
               | benefits of coaching.
               | 
               | There's also huge value in the increased job satisfaction
               | for both mentor who enjoys mentoring, and a mentee who is
               | learning. That should show up in any kind of employee
               | satisfaction survey, or retention numbers.
        
           | mateo411 wrote:
           | I think it's fair to use this as supporting evidence. If they
           | are assigned tasks that aren't too difficult and they aren't
           | completing them really fast, and there is a PR process in
           | which changes are landed into the repo, then I think it's
           | fair to use the number of commits to the repo.
           | 
           | If anybody can push commits to the repo, then it's a useful
           | metric. Finally, this sort of action should be take after the
           | manager has worked with their report, by having somebody else
           | help them, or put them on a different project.
        
         | [deleted]
        
         | alexbanks wrote:
         | Yes. The industry moves at a snail's pace, and is very
         | different from what you'd read on HN. A huge % of dev jobs are
         | still using old software/processes, with managers that haven't
         | written software in 20 years, if at all.
         | 
         | In 2014 I worked at a company that switched to Git and then
         | started measuring LoC to assess performance/involvement.
         | Engineers took to committing/removing things like node_modules
         | directories to make the data meaningless.
         | 
         | It still happens, even today, quite a bit.
        
           | jim_and_derrick wrote:
           | sounds about right to me. i've had product managers argue
           | that we fix bugs fast enough that we should not actually try
           | to implement real solution (python2 to python3 upgrade). This
           | lady is like 'every py2->py3 bug takes less than 2 hours to
           | fix. Why would we do the solution that takes multiple
           | sprints?'
           | 
           | jaw dropped. since then i'm committed to being the biggest
           | office space corporate schmo possible. let me cog it up, keep
           | payin me 6 figs, lettin me work at home full time.
        
         | Piskvorrr wrote:
         | Last time I met this, it was 2008 IIRC.
        
         | WalterBright wrote:
         | Many people assume their manager knows what the employee is
         | doing. They often aren't, meaning they go by what they can see,
         | which is lines of code.
         | 
         | The smart thing to do is to regularly keep your manager updated
         | on what you're doing, especially if they don't come by
         | regularly and ask you.
         | 
         | Especially if you are WFH.
        
           | drocer88 wrote:
           | Rather than an integer number of lines of code, how about
           | using a boolean : "it works" or "it does not work"? or "Does
           | it meet the spec" or "it does not meet the spec"? Even a
           | mediocre manager should able to test that one out.
           | 
           | Code is often improved by removing code.
        
           | touristtam wrote:
           | Task completion should be the metric, not line counts,
           | otherwise the incentive is creating the most bloated piece of
           | software and the most comprehensive unit-test possible. Any
           | system is going to be (ab)used by the employee to their
           | benefit.
        
             | qayxc wrote:
             | Relevant post:
             | https://news.ycombinator.com/item?id=23762526
             | 
             | Task completion would also be abused, because it's too
             | vague. It simply shifts the burden to the one formulating
             | the task (e.g. preventing holes in the specification like
             | missing performance or hardware requirements).
             | 
             | Exaggerated example: if the "task" is to automatically
             | deliver a report containing certain data and formatted in a
             | specified way, the easy way might be an implementation that
             | stalls the DB server for hours with deeply nested FULL
             | OUTER JOINs on non-index fields.
             | 
             | The task would be completed quickly and arguably correctly,
             | since neither runtime nor memory requirements were
             | explicitly specified...
             | 
             | But you said it yourself, any system is going to be
             | abused...
        
           | methodin wrote:
           | Indeed and it's why organizations that execute well treat
           | this process as a collaboration rather than a dictation and
           | report-back.
        
             | WalterBright wrote:
             | Organizations are always imperfect, which is why I strongly
             | recommend taking the lead and being pro-active in keeping
             | management informed of what you're accomplishing.
             | 
             | Out of sight, out of mine <== don't let that happen to you
             | 
             | I don't believe it is any coincidence that the highest
             | compensated engineers I know also are highly visible
             | through their own efforts.
        
           | kevsim wrote:
           | That's true. And I guess depending on the job/manager you
           | could replace lines of code with "user-visible changes to
           | app", etc.
        
             | qayxc wrote:
             | That'll be exploited as well. The number of pointless UI
             | and feature changes would skyrocket without the app
             | actually getting better or gaining meaningful
             | functionality.
             | 
             | Meta-metrics might be much more helpful, though harder to
             | come up with, quantify and monitor. Things like defect
             | rates, user reported incidents, user satisfaction, stuff
             | like that.
             | 
             | Things that cannot easily be gamed from within the
             | development process and that are still directly linked to
             | the success and economic viability of the product and its
             | development methodology (though on a higher level).
        
               | kevsim wrote:
               | I wasn't suggesting that as a good metric. More like "if
               | isn't LoC, it'll be some other terrible metric"
        
             | csharptwdec19 wrote:
             | I've seen that abused all the way to management, where
             | meaningless new features are prioritized ahead of bugs
        
         | VLM wrote:
         | At most of the big companies I worked at (over 500 employees)
         | there is a steering committee doing prioritization work and
         | continuous integration test suites and an elaborate change
         | control committee and process such that fixing a spelling error
         | will take much more than two days.
         | 
         | Whats nice about the proceduralism is you can document that the
         | steering committee only meets once a week on Tuesday afternoons
         | and change control meets on Thursday. And everyone knows the
         | automated test suite on DEV takes about half a working day. So
         | if a change can't be worked into the schedule in less than a
         | day, it'll never pass CI testing before the change control
         | meeting so it'll take more than a week.
         | 
         | Whats bad, is mgmt would like you to complete multiple changes
         | perhaps at the same time which always complicates the change
         | control process especially if change #7 failed last week so
         | company policy is to roll everything back and now we have 13
         | changes, two weeks worth, to complete next weekend. Also whats
         | bad, is knowing its a corporate nightmare to make any change,
         | why did I make a mistake to begin with of having the buttons
         | swapped or a misssspelling or whatever.
         | 
         | I find the big metric now a days is backlog. Lets see the
         | number of request tickets decrease this week instead of
         | increase. That leads to intense pressure to roll multiple
         | problems into one ticket.
        
         | duderific wrote:
         | They don't always make the comment out loud, but you can tell
         | they're thinking it.
         | 
         | They absolutely use lines of code metric at my company. I don't
         | miss any chance to tell my manager it's complete bullshit. His
         | answer: "Engineers are supposed to write code, just like
         | construction workers are supposed to build houses."
        
           | Nagyman wrote:
           | Oof, that's a false equivalence. Construction workers have
           | blueprints for how things are supposed to be built. You're
           | (generally) making the blueprint as you go along, based on
           | vague specifications in many cases. This can depend a lot on
           | how your organization designs software, of course.
        
             | auxym wrote:
             | And... guess who made the drawing (blueprints have not been
             | used in a while)? An engineer. Probably using a vague spec
             | by an architect, too.
             | 
             | And I can assure you, they were not judged on the number of
             | views or pages on their drawing, or on the number of
             | variables in their structural calculations.
        
           | runawaybottle wrote:
           | Can you please help your brothers out and hint at what
           | company this is so we can all avoid?
        
           | ptx wrote:
           | What if the construction workers just stack all the windows
           | in one corner and pour all the concrete in the other? It must
           | be just as good as building the house properly since they
           | used the same amount of materials. If they just double the
           | amount, the resulting pile of garbage will be twice as good
           | as a functioning house.
        
           | MauranKilom wrote:
           | "If you wanted someone who writes as many lines as possible,
           | you should have hired a secretary."
        
           | bavila wrote:
           | What an absurd response from your manager.
           | 
           | If you give a construction worker a design to build a wall,
           | and the worker is given 2,000 bricks that must be used to
           | build the wall, then, yes, of course the worker must lay down
           | all 2,000 bricks to build that wall. However, if I am asked
           | to build a computer-simulated model of said wall, and if
           | there is a way to build the model with 200 lines of code that
           | looks and performs identically to a model built with 2,000
           | lines of code, then, yes, of course I am going to build the
           | wall with 200 lines of code.
           | 
           | I hope you find better pastures.
        
         | fireflux_ wrote:
         | Oh, very much so. I don't think it's a matter of how "old" the
         | industry is - there will always be people who have never worked
         | with software folks or are familiar enough with the ecosystem
         | not to make the assumptions stated in the article.
         | 
         | This made me realize that working in a purely engineering team
         | can sometimes be a perk. Not because technical people are
         | "better", but because it leads to fewer frustrations like this
         | one.
        
       | femiagbabiaka wrote:
       | https://speakerdeck.com/jallspaw/findings-from-the-field-dev...
       | 
       | this reminded me quite a bit of this deck -- in particular, a
       | focus on a shallow metric (in this case LoC) as a proxy for
       | measuring complexity.
        
       | bmcahren wrote:
       | If you work somewhere you're defending yourself from this
       | question repeatedly, just move on at your earliest convenience.
       | They don't value quality developers and you'll eventually turn
       | into the low-quality developer they've always wanted.
        
       | eikenberry wrote:
       | > I don't like having to fix bugs.
       | 
       | ???
       | 
       | I rather enjoy fixing bugs, particularly really hard ones. They
       | can be fun logic puzzles that take some sleuthing to figure out
       | and offer multiple pay outs... First time reproducing it.
       | Figuring out the problem. Figuring out the best fix. Test case
       | fail -> test case pass.
        
       | ablanco wrote:
       | It's really sad that people (managers) still thinks of code this
       | way. Luckily this has never happened to me, but if it did I think
       | it would be a great sign to change jobs.
        
       | lmilcin wrote:
       | Hindsight is 20/20.
       | 
       | It takes more work to produce succinct code and it can take
       | surprising amount of effort and care to land at a simple solution
       | to a complex problem.
       | 
       | My solution is to try to involve other people in my "process".
       | This helps me transfer some knowledge of the decision process,
       | helps debug ideas early on and hopefully is useful mentoring for
       | the team.
       | 
       | I can do this because I am senior engineer / tech lead at my org.
       | For other engineers I highly recommend pair programming and
       | constantly rotate developer pairs so that everybody can get some
       | appreciation of everybody else.
        
       | mirekrusin wrote:
       | This is achilles heel of non-tech managers. You can link as many
       | articles like that as you want, it will still be a problem. They
       | may be more aware of it, but it will still be, daily struggle.
       | Non-tech manager should be paired with tech-lead with high trust
       | relationship for this not to be a problem.
       | 
       | This example is just one case/symptom of much larger problem.
       | 
       | Non-tech managers will only see fast progress on combination of:
       | - poor developer - doing fast progress - with shitty code - on
       | good quality codebase
       | 
       | They will see tech lead/good coder as asshole in general, with
       | poor performance in general, who for some unknown reason is
       | respected for their code and sometimes magically ticks off hard
       | problems quickly which "must be a coincidence, overestimated work
       | to begin with or something like that" on combination of: - person
       | who actually cares about the project - who repairs shitty
       | code/tech debt - who thinks more deeply about the problem - and
       | as a bigger picture issue, not just ticking off ticket with the
       | lowest resistance possible - writes good quality code - if the
       | problem breaks current abstrations, refactors abstration itself -
       | who cares about readers of the code
        
       | Piskvorrr wrote:
       | Reminds me of that time a PHB decided to measure efficiency by
       | kLOC. All the pull requests in the following week had a net
       | negative line count.
        
         | andi999 wrote:
         | They PHB should put extra bonuses on kLOC, like 1k$ per 1kLOC,
         | and watch the codebase increase exponentially and since
         | documentation is better than code, double the amount for line
         | of comments.
        
           | Piskvorrr wrote:
           | That's a literal Dilbert strip, 1998-ish, IIRC.
        
             | [deleted]
        
       | jedberg wrote:
       | It's not just management that feels this way. A lot of junior
       | engineers feel the same way. It's what leads to bloat because
       | they assume "it can't be right" if it's just a small change.
       | 
       | It takes a while for a lot of junior engineers to realize small
       | elegant solutions are better, and requires good mentorship and
       | code review to get there.
        
       | jmartrican wrote:
       | Because i wrote failing unit/integration tests before
       | implementing the solution.
        
       | pjettter wrote:
       | I once reduced the amount of code for a client by ~75% and added
       | usability and fault-tolerance. I wasn't even half done and they
       | thought it was good enough. LoC is no measure.
        
       | csours wrote:
       | Because looking at this code feels like walking on broken glass.
        
       | jiveturkey wrote:
       | you think adding code takes a long time? try removing code!
        
       | caymanjim wrote:
       | A variant of this that has driven me to quit more than one job is
       | having a non-technical manager look at a UI prototype and
       | consider that 90% of the solution. "The UI guys had this page
       | ready two months ago! Why doesn't this work yet?" It's even worse
       | when you present a working prototype. They simply don't
       | understand that the backend functionality is what's doing the
       | bulk of the work, and just because you can see something, that
       | doesn't mean it's secure, performant, scalable, or even
       | functional beyond demoing with dummy data.
        
         | chrisacky wrote:
         | I literally just had a discussion with a client last week about
         | a feature taking 2months to develop.in my time this week I
         | built the UI, with no backend, and she asked why I quoted two
         | months when it looks like it's already completed.
        
           | AnimalMuppet wrote:
           | Yes, it "looks like it's already completed" because you did
           | the "looks" part. I get that you want to show them that part
           | to get approval of the design approach, but it opens the door
           | to misunderstandings like this.
           | 
           | Maybe as part of the demo, you should demo that it
           | *conspicuously fails to actually do anything", to help reset
           | unrealistic expectations.
        
         | D-Coder wrote:
         | I seem to remember Joel Spolsky recommending that UI demos be
         | done on paper... with pencil. That way even a manager can see
         | what it will look like without thinking that it's all done.
         | (Can't find a reference quickly.)
        
           | WaltPurvis wrote:
           | https://www.joelonsoftware.com/2003/05/16/20030516/
        
         | baddox wrote:
         | Not even just the backend! Frontend interactivity itself can be
         | very complicated, and it generally is not fully specified by
         | design (do your design specs come with state machines?) A few
         | things that are often missing from a Figma/similar are things
         | like error states, loading states, handling longer text content
         | than the mockup, and responsive design.
        
           | Softcadbury wrote:
           | And you can add paging, empty states, accessibility,
           | security, browser compatibility...
        
         | mring33621 wrote:
         | Yes, very much like the time I replaced a getfakedata() method
         | with a getrealdata() method and then management complained that
         | it was much slower now.
        
           | beckingz wrote:
           | Maybe print out the data to show them the difference?
        
           | pkilgore wrote:
           | After this (and a few emergent race bugs), I started burying
           | the equivalent of setTimeout(() => getFakeData(), 1500) in my
           | similar code.
           | 
           | Best part is, I'm almost certain to beat 1500, so I've gotten
           | compliments that it "feels snappier".
        
             | mcbits wrote:
             | This reminds me of the infamous Speed-Up Loop.
             | https://thedailywtf.com/articles/The-Speedup-Loop
        
             | randomdude402 wrote:
             | I am feeling suddenly inspired by this idea, so thanks!
        
           | Kye wrote:
           | Lesson learned: make demo functions slower on purpose so the
           | real one matches or exceeds it. It's not even deceptive:
           | you're setting realistic expectations instead of giving a
           | false impression.
        
         | cosmodisk wrote:
         | It's all correct: 90% takes 5 days and the rest 10% will take 3
         | months.
        
         | symlinkk wrote:
         | To me it just sounds like your frontend has a better
         | architecture than your backend.
        
         | zachrose wrote:
         | I sometimes look at small mass-produced plastic items and
         | marvel at how hard it would be to make one from scratch. If you
         | showed me, say, a fluted plastic bottle of wite-out with a
         | screw-on cap, I would have to assume you had a very expensive
         | operation up and running that was already churning these out.
         | 
         | In software we can put a few shapes on a screen in just the
         | right context and people will believe there's an operation as
         | sophisticated as the wite-out bottle factory behind it.
        
         | RcouF1uZ4gsC wrote:
         | Joel Spolsky has a great write up on this phenomenon [0]. The
         | opening paragraph is great:
         | 
         | > "I don't know what's wrong with my development team," the CEO
         | thinks to himself. "Things were going so well when we started
         | this project. For the first couple of weeks, the team cranked
         | like crazy and got a great prototype working. But since then,
         | things seem to have slowed to a crawl. They're just not working
         | hard any more." He chooses a Callaway Titanium Driver and sends
         | the caddy to fetch an ice-cold lemonade. "Maybe if I fire a
         | couple of laggards that'll light a fire under them!"
         | 
         | 0.https://www.joelonsoftware.com/2002/02/13/the-iceberg-
         | secret...
        
         | trav4225 wrote:
         | Ahh, yes. This is so common in my experience as well!
        
         | BareNakedCoder wrote:
         | Has happened to me too more than once. I usually reply that the
         | UI prototype is like a Hollywood movie set: what looks like a
         | real building is fake, just a single wall. The real building
         | still needs to be built. That explanation sometimes works,
         | often doesn't :(
        
         | ftio wrote:
         | Early in my career, I learned a simple 'demo day' rule: never
         | demo things that aren't end-to-end _done._
         | 
         | When you do, it can easily confuse folks who aren't deeply
         | involved in your project ("haven't I seen this already?") and
         | can hurt team morale because they never get a "shipped it"
         | moment that feels good.
         | 
         | More to the point: enforcing this rule incentivizes teams to
         | build things in small, shippable components. Nobody wants to be
         | left out of demo day multiple weeks in a row.
        
           | [deleted]
        
           | Jtsummers wrote:
           | Also, never use the word "done" in any context in a meeting
           | like that. Do not even say: "I'm not done". They won't hear
           | the "not". Say, "Development is still in progress" or
           | something similar. I got chewed out for something being
           | released (where it was found to be broken) to a customer
           | because I said something like: "I'm about 80% done with
           | testing, but I haven't run into any issues yet." They
           | released it even though it wasn't ready, and both the
           | customer and I found that there were issues in that last 20%
           | I hadn't reached.
        
             | eikenberry wrote:
             | Did you really get chewed out? That seems pretty much like
             | a deal breaker for me. Managers are collaborators, not
             | parents, and have no place talking to co-workers in such a
             | diminutive manner.
        
               | Jtsummers wrote:
               | Yes. He came to my desk a week or so after he okayed the
               | release of the software and took me to a conference room.
               | I don't know how long he chewed me out for because I was
               | red with rage but too terrified of losing my job to say
               | anything. I've experienced similar rage with only one
               | other manager [1]. He was 3 levels above me in the
               | management chain, I really liked the two above me (the
               | test manager, as I was in test at the time, and the
               | software manager) and the guy above him [0]. I wanted to
               | stay with them and I had a good friend there as well. But
               | I did apply for a new job a couple months later, and left
               | by the end of the year.
               | 
               | It was my first professional development job and I
               | learned a lot of things. One of the keys was this:
               | 
               | Your boss and employer are not your friends. When you
               | promise something to your friends, you owe it without any
               | expectation of reward or return. But your employer owes
               | you something for everything you give them. If they fail
               | to meet their end of the bargain, that's on them and you
               | are absolutely 100% free to leave. That can be money,
               | time off, good working conditions, respect, trust, or any
               | number of things. For me money was not primary (though it
               | is nice): I wanted a good work environment, interesting
               | work, and respect. Fail any of those and I will be
               | looking for an exit, even if it's just a transfer within
               | the same company. But respect is first in that. A boss
               | who shows little respect to his employees is not someone
               | I want to be around. I had that boss who chewed me out, I
               | had another that kept me doing busy work for a year and
               | kept saying worthless platitudes like "you're important
               | to our work, we can't do this without you" when
               | everything pointed to that being false. He was just
               | empire building and trying to grow his direct report
               | count, but it hurt those of us under him because he
               | didn't have the work (but he did have the money) to keep
               | us there. (I was still relatively junior at that job and
               | stayed longer than I should've.)
               | 
               | [0] The hierarchy was something like: VP of Engineering
               | (several divisions below him) -> Chief of Engineer
               | (Aviation) -> Chief of Software (Aviation) -> Chief of
               | Testing (Aviation) -> Me; other production lines had
               | similar chains below the VP.
               | 
               | [1] When she was my manager I quit, or more accurately
               | transferred to another group. Years later, I quit my last
               | job for several reasons, one was her. She was _not_ in
               | our division while I was in that position, but they 'd
               | just hired her on. When I heard the name I had to verify,
               | when I confirmed it was the same person I was ready to
               | exit.
        
           | caymanjim wrote:
           | In a company that understands and embraces agile software
           | practices, this works well. You demo small things that are
           | done, and prototypes are understood as just mockups designed
           | to drive future work. Alas not everyone in power gets it. In
           | more egregious cases, I've been in adversarial environments
           | where teams were pitted against each other to appear "more
           | done." Obviously a recipe for failure. I'm fortunate enough
           | to be able to be more selective in where I work now, and have
           | the experience to drive the choice.
        
             | [deleted]
        
           | csours wrote:
           | I'm still conflicted about this. On the one hand I agree. On
           | the other, I wish we could educate people enough for them to
           | understand Proof of Concepts and Minimum Viable Products.
        
             | irrational wrote:
             | If they could be educated, they wouldn't be managers.
        
           | ngngngng wrote:
           | That's a funny comparison to demo days early in my career.
           | The company I worked at had too much upper management that
           | would hijack dev teams to make "cool" features constantly. We
           | only had to make something good enough to appear like it
           | worked in a demo though, because then that upper manager
           | would get his bonus or look good to the CEO or CTO and we
           | could move back to doing real work.
        
           | core-questions wrote:
           | > incentivizes teams to build things in small, shippable
           | components.
           | 
           | Isn't this a bit of a fallacy? Not everything can be broken
           | down into chunks of work that fit into a single sprint.
           | 
           | There's a reason I stopped bothering with Scrum a while ago,
           | and this is high on the list.
        
             | ftio wrote:
             | This doesn't require that things fit into a single sprint.
             | It just incentivizes teams to ship their work in smaller
             | chunks.
             | 
             | If it helps motivate a team to divide some four-sprint
             | piece of functionality into two shippable chunks that each
             | take two sprints, I'd call that a win. Customers get
             | _something_ a bit faster even if it 's not single sprint-
             | sized.
        
               | manquer wrote:
               | Reiterating what gp said , not all dev is like that,
               | lesser you are doing IT and more comp science or any
               | unfamiliar territory really it is harder to break down
               | ahead of time .
               | 
               | Many times I can't tell you what tasks need to done let
               | alone how much time is needed and break it into smaller
               | chunks during planning phase.
               | 
               | If planning has to work you should be familiar with what
               | you are building , with poor information on the bug/ code
               | / stack planning agile is just useless overhead . it
               | works great for yet another CRUD app where you know the
               | requirements to the dot and know exactly how to build or
               | fix not always , most management fail to differentiate
               | 
               | All the reasons in the TFA are also why it is hard to
               | estimate , what and how much time will take .
        
             | MattGaiser wrote:
             | There is a reason that teams with mostly non-technical
             | leadership deliver broken software as your choices are
             | feature driven architecture with absurd glue or being asked
             | "why isn't it done yet"?
        
             | ddingus wrote:
             | Why would it be?
             | 
             | For all the things that can be atomic like that, it's good
             | practice.
             | 
             | The bigger ones just take time, and aren't shown, until
             | ready for use.
        
               | caymanjim wrote:
               | It's an anti-pattern to simply not demo any progress
               | until done. If you're doing agile right (loaded
               | statement), the solution is to make sure everyone
               | understands what's being done. If the audience is
               | expecting all demos to show complete products, find a
               | different audience to demo done-but-incomplete work. The
               | idea is to get feedback before you've sunk six months
               | into something that may not meet expectations.
        
               | ddingus wrote:
               | That isn't what I got out of the comment.
               | 
               | Progress gets quantized. Some quanta are small, easily
               | shown, etc... other quanta are a bit bigger, less easily
               | shown.
               | 
               | There is a similar problem in manufacturing.
               | 
               | Atomic releases.
               | 
               | While making something, there are many subtle tweaks to
               | the BOM. Changes, substitutions, removals, adds.
               | 
               | Upstream people can make a real mess out of all that, and
               | one way to prevent it is to only deliver releases that
               | are resolved and intended for manufacture.
               | 
               | "where is revision 4?"
               | 
               | Doesn't exist, won't get manufactured, etc... "Use
               | Revision 5 plz."
               | 
               | For the case of insuring expectations get aligned, a mock
               | up can be used. Deliberately used to generate a spec.
        
               | ftio wrote:
               | Yeah, I could've been more precise about what I meant by
               | "demo day." In my comment, I was thinking about the
               | broader, often companywide demo days that many companies
               | hold.
               | 
               | I wasn't talking about intra-team demos to, say, product
               | owners.
        
         | commandlinefan wrote:
         | > They simply don't understand that the backend functionality
         | is what's doing the bulk of the work
         | 
         | Even people who ought to know better don't understand this.
        
         | [deleted]
        
         | bsder wrote:
         | > look at a UI prototype and consider that 90% of the solution
         | 
         | Management tip: Make the UI reflect the actual state of the
         | project.
         | 
         | The UI should be _UGGGLY_ and should get prettier as the
         | backend work gets finished. If if the artists prettify it; make
         | the animations and interactions janky and sluggish.
         | 
         | Never make the UI better than the actual implementation.
         | 
         | Bonus tip: Always have _something_ slightly off in the UI that
         | management can point out to fix. Useful managers will simply
         | quickly point it out and move on to more important problems;
         | useless managers will focus on it.
        
           | bob1029 wrote:
           | This is the best option. Creating low-fidelity UIs that prove
           | the business functionality are faster to develop/iterate and
           | provide an immediate signal to even the least technical
           | individuals that the feature is still incomplete.
        
           | dllthomas wrote:
           | https://mamchenkov.net/wordpress/2012/07/23/a-duck
        
           | WorldMaker wrote:
           | "Sketch" themes or "xkcd" themes (named after the pencil look
           | of the comic) can be quite handy for this.
           | 
           | For instance, Bootsketch: http://yago.github.io/Bootsketch/
           | 
           | I wish some of the bigger CSS frameworks would adopt sketch
           | theming support as a "progressive" option, rather than the
           | entire page all or nothing being Bootstrap or Bootsketch have
           | the ability to add a "sketch" class to any element on any
           | page. (Or maybe better yet, forcing sketch styles by default
           | and needing something like a "final" or "final final" class
           | everywhere, like the documents folder of someone that has
           | never understood source control.)
        
       | cmollis wrote:
       | this happened to me.. except it was one line: free(ptr); / __here
       | it is --- > */ ptr = 0x00;
       | 
       | a classic.
        
       | newshorts wrote:
       | The assumption that asking for more information to recreate the
       | bug is a lazy tactic to get out of the bug fix is also a terrible
       | assumption and discredited the opinion IMO.
       | 
       | Often times asking for more information can speed things up and
       | lead to a quicker resolution.
        
         | stx wrote:
         | In my experience sometimes this is true, sometimes it is not.
         | In some cases when asking for more information it takes much
         | longer. Some of the reasons:
         | 
         | After asking the question I get a meeting schedules where
         | design by committee happens. The story or bug your working on
         | gets completely redesigned. Sometimes in an illogical way.
         | Requiring more questions.
         | 
         | When working remote, like most of us right now, now I will end
         | up waiting for a long time to get a response. I then must start
         | some other story/task/bug. Trying to context switch multiple
         | complex tasks at some point your productivity slows down.
         | 
         | I have also received criticism for asking when I could figure
         | it out myself even when figuring it out may have taken hours
         | more time then just asking a yes/no question.
        
         | labcomputer wrote:
         | Sure, it depends on the context. But I've seen many examples
         | where the reportee is asking for information that's already in
         | the bug report, or can be easily inferred from the report.
        
         | norenh wrote:
         | I have worked on both sides of this in the enterprise world (as
         | a support agent in the middle of dev team, as a end user and as
         | a developer on the receiving end) and it is never simple. A bug
         | report takes time to make and many times it might take time to
         | reproduce or narrow down to a simple test case. A developer
         | should of course get the information needed to fix a issue, but
         | very often (s)he can find the issue with very little detective
         | work if they know the product. The problem I've seen is that
         | you have a fundamentally broken system where: 1. The devs don't
         | really know the product in the sense that they do not use it.
         | They have very little experience how it actually is used or the
         | workflows and might not have good overview of the code base. 2.
         | The support agents, if they exist, have little clue of either
         | development or the product and just as a filter to remove the
         | absolute majority of known issues but at the same time mess up
         | the communication between end-user and devs 3. The end user
         | have neither time or experience to test or report issues so you
         | get very bad reports that vary wildly.
         | 
         | When working as a support agent I have spent a lot of my time
         | acting as a filter to stop making the end-users go mad with all
         | the requests from the devs and preventing the devs from being
         | flooded with crap reports (of course, some always slip
         | through). That means a lot of time spent on reproducing and
         | testing (and sometimes pointing out where the bug is in the
         | code, even suggesting patches). But very few organisations pay
         | for that knowledge and very few allow agents to muck around for
         | a day with a tricky issue to make sure the devs can fix it
         | without a major hassle.
         | 
         | It is very easy to ask for more information as a dev, and very
         | often it is needed, but a lot of the time it is just pushing
         | the cost to the end-user when a minimal amount of detective
         | work (or even a single quick test) would do the same and save
         | everyone a lot of hassle. I would argue that in a lot of time
         | when we, as devs, ask for more information we do it to push the
         | issue into the future and to save ourself a minuscule of work
         | now, not to have a quicker resolution.
        
           | addicted44 wrote:
           | Assuming the reporter is internal, you don't need them to go
           | ahead and type out everything. A quick call with a screen
           | share is all that's needed.
           | 
           | Not even reaching out (again, assuming they are internal...if
           | they are external then there are many other considerations)
           | is just not smart IMO.
        
         | halgir wrote:
         | I know this can be nuanced, as pointed out in other replies.
         | But as a product manager, I admit to having used this as a form
         | of triage. People have told me they don't have time to write a
         | proper bug report. I tell them if it's not important enough for
         | you to spend five minutes reporting, it's not important enough
         | for a developer to spend five hours fixing.
         | 
         | I of course don't respond to everything as black and white as
         | this, and I'm not expecting them to do the kind of
         | troubleshooting that me or a developer could do much quicker.
        
         | jedimastert wrote:
         | Also, asking for more information lets you work on something
         | else with more actionable feedback while they do so
        
           | dgb23 wrote:
           | I agree with this. If you are generally swamped with work,
           | you need to do triage and possibly delegate work.
           | 
           | This isn't perfect behavior. But in some situations the
           | perfect solution isn't feasible.
        
         | c0nsumer wrote:
         | Unfortunately, working in a big enterprise world, I've seen
         | both sides of this. After a while it becomes somewhat obvious
         | if someone is legitimately asking for more info, or if they are
         | just punting the ticket down the queue. (The former is when you
         | can tell they are becoming focused whereas the latter seems to
         | be more general, swirling questions.)
        
           | newshorts wrote:
           | True, having seen this as well, the motivation driving the
           | dev does eventually become pretty transparent.
        
           | bonestamp2 wrote:
           | Agreed, although we (mostly) solved this a number of years
           | ago. Our validation team has screen recording software
           | running all the time. If they see an issue, they attach the
           | video to the bug report. These videos dramatically improve
           | everyone's ability to accurately report bugs and quickly
           | resolve them.
        
           | gshulegaard wrote:
           | I too have seen the case when a developer will ask for more
           | information in order to game the process. While this is
           | arguably (and I would agree) a failure of the process since
           | it incentivizes undesirable behavior, you can quickly wind up
           | in a situation where there is a large cadre of developers who
           | will reflexively ask for detail. In this situation you often
           | have good "measured" performance across the engineering org,
           | but there tends to also be a large swath of tickets which
           | find themselves in limbo. Some of these tickets can take
           | months to resolve when a day or two of concentrated effort
           | could have resolved it.
        
         | EsotericAlgo wrote:
         | I suspect most developers have been on both sides of it. I've
         | most often seen it as a delaying tactic where access/system
         | bureaucracy prevents easy recreation. So generally
         | dysfunctional enterprises.
        
       | mastazi wrote:
       | I agree with the general sentiment of the article, but the
       | following is a big mistake IMHO:
       | 
       | > Some developers would have immediately gone back to the person
       | reporting the problem and required more information before
       | investigating. I try and do as much as I can with the information
       | provided.
       | 
       | Some developers have a hard time with interpersonal communication
       | but you can't isolate yourself if you're working in an org. That
       | mindset will inevitably make you less effective (I learned that
       | the hard way).
        
       | pdpi wrote:
       | "I'm sorry for the long letter, but I didn't have the time to
       | write a shorter one."
        
       | Slartie wrote:
       | "Because I had to spend a lot of time to compile this long list
       | of things that I also did while fixing the problem which are
       | essential for a good solution but aren't immediately visible from
       | the two lines I actually added so I would have something in hand
       | to rebut this stupid question of yours!"
        
       | whotheffknows wrote:
       | Because product managers struggle to comprehensively understand
       | value add and have instead replaced stating business goals and
       | value add with bullying based micro managing tactics like
       | counting lines of code and conflating other such arbitrary
       | metrics related to code with having a 1:1 ratio of accomplishing
       | the goal and do not respect the thought of troubleshooting,
       | architecture design (unless you take another two days to turn it
       | into a diagram presuming it needs to be consumed by some other
       | party) and finding an elegant way to implement code to accomplish
       | the goal as work because they can't see it, and they can't
       | understand it because they are too busy collecting visual days to
       | prove they are properly micromanaging you to take the time to
       | learn the challenges inherent to the architecture and challenge
       | at hand.
       | 
       | Does that help?
        
       ___________________________________________________________________
       (page generated 2020-07-14 23:00 UTC)