[HN Gopher] The worst programmer I know ___________________________________________________________________ The worst programmer I know Author : zdw Score : 810 points Date : 2023-09-02 14:41 UTC (8 hours ago) (HTM) web link (dannorth.net) (TXT) w3m dump (dannorth.net) | slowhadoken wrote: | The business mindset wants employees to be contestants in a | reality tv show. The process of creating things doesn't look like | a commercial though. Progress doesn't care how you feel, it's a | functional process that produces a clear perspective. Greed | always obscures that vision. | _mc wrote: | A very relatable story. Of course, we all feel sorry for those | other Tims out there who were not lucky enough to have such a | good manager. Partly, because we see the Tim in ourselves. | | I think this is what we can do to help: Remember sometimes we are | also those co-workers who took help from Tim around us and | conveniently forgot to Thank their contribution in success of our | project. A simple thank you note in the right meeting, slack | channel or in the project delivery mail goes a long way. | Measuring the indirect impact of an employee is hard, even if you | were the manager at any level. Taking help is not a sign of | weakness or acknowledging the contribution of a co-worker doesn't | make your effort any smaller. | jimkoen wrote: | > I explained all this to the manager and invited him to come by | and observe us working from time to time. Whenever he popped by, | he would see Tim sitting with someone different, working on | "their" thing, and you could be sure that the quality of that | thing would be significantly better, and the time to value | significantly lower--yes, you can have better and faster and | cheaper, it just takes discipline--than when Tim wasn't pairing | with people. | | BREAKING NEWS: Pair programming improves software quality, more | at 5! | Trasmatta wrote: | Extensive pair programming can also be massively draining and | burnout inducing for certain types of people. I hate it when | companies mandate pairing. Some people's brains just don't work | effectively in that type of environment. | mberning wrote: | I find it amusing and very telling that the organizations with | the most burdensome and unnecessary overhead are always the first | to take an interest in developer productivity. A metric which | their own structural inefficiencies are in direct opposition to. | just_dan wrote: | [dead] | gloryless wrote: | I have been this person and I'm trying to move away from it. It | really is a great skill to enjoy lifting others and to be the | glue of a team. But there are multiple slippery slopes inherent | to that role that make it difficult. You can begin to confound | the knowledge of others as your own, and almost certainly your | own IC skills will atrophy if not purposefully maintained. I | think it also requires the explicit buy in of the team, or at | least other seniors who understand the benefits and can help keep | balance. | | It just takes one jealous colleague or one "efficiency minded" | manager type to completely rug pull you. I know it's valuable | because I have benefitted from that person many many times, but | it takes empathy and a lot of balance. | nittanymount wrote: | clearly, Tim is a coach/mentor in this team, try to measure his | work a wrong way ? | redbell wrote: | Evaluating someone's performance, especially, software engineers | by non-tech people might produce dramatic results. | | Let me tell you a story about a friend of mine, codenamed | _tommy_. Tommy was an IT guy with incredible skills in | networking. He moved to an energy company, fully-owned and | operated by the government. Just a few weeks from his arrival, | they had to rebuild the entire network from scratch with new, | modern, equipments as well as extending the network to all the | buildings of the company's headquarters. They started to look for | external contractors to outsource this project but Tommy was | shocked by the price the financial department was willing to pay | to get this work done, obviously, some non-tech people made the | estimates. Tommy interrupted the operation and told the | appropriate department he can do the work and needs only the | physical equipments (routers, switches, cables) and two guys who | can do the _cabling_. They agreed, and he took the challenge and | delivered the work as expected within just a few weeks within | _less than a tenth_ of the initial budget. All that he got was a | _"Thank you, you did good work"_ oral endorsement by his boss. | | What a time to be an IT techie when your boss(es) are just old- | school, who will never understand your true value. | paulcole wrote: | Was Tommy upset? | redbell wrote: | Absolutely! But after a while he knew why there was no kind | of reward whether in the form of a financial compensation, a | promotion or even additional days of vacation. Simply because | the law of work does not have a section for _exceptional_ | performance /achievement. | paulcole wrote: | must've been Tommy's first rodeo lol | [deleted] | ajmurmann wrote: | We all know Goodhart's Law: "When a measure becomes a target, it | ceases to be a good measure". Quantitive measure done't work well | and especially not for something as complex as software | development. They might tell you were to look more closely at | best. Qualitative assessments work much better, but those require | trust. As soon as going gets tough for a company or department, | trust weakens, doubt increases and higher management, especially | if they don't understand software dev well, will require | quantitive metrics. It's bad, but we'll never get rid of the mess | because of organizational dynamics. | [deleted] | idontunder wrote: | [flagged] | mgaunard wrote: | The worst programmer I knew never had any productivity problem; | if anything he produced too much code, outpacing the others' | ability to maintain certain levels of quality. | | He ended up promoted; in many organizations, people that hack the | code rather than properly design and build sustainable solutions | are highly valued. | astrange wrote: | Was he promoted to a job where he did more of that, or a job | where they could make him stop writing code and do something | else? | ChuckMcM wrote: | When I've been asked to coach someone on "technical leadership" I | always ask them to be on the lookout for "facilitator" employees, | those whose help makes another employee more productive or | effective. I am convinced there are "service oriented" | personalities where people get more job satisfaction out of | helping someone else do a great job than getting all of the | credit for doing something amazing. As the author points out they | often "score poorly" and yet losing them will create net decrease | in team productivity. I always try to give folks the tools to | help distinguish between people who aren't productive because | they aren't, and people whose productivity is exhibited in the | success of others. | | It is never good to measure the "one" metric and manage to that, | it results in people who game the metric "winning" and fosters | the promotion of such behavior. I pointed this out to Google | leadership and to quote Lazlo, "This is the system we have, it | isn't perfect but we're going with it, either work within it or | don't, it is up to you." :-). That meeting told me everything I | needed to know about whether senior leadership was trying to have | a better engineering environment or not. | | To many new managers come into the job (especially if they were | engineers individual contributors before) with the idea that if | they keep the "best" members, and move out the "bad" members both | team morale will be great and so will the teams output. But they | miss that their understanding of "best" is not based on managing | people, its based on getting their original job done. As a result | they favor people who mirror their skills and habits and disfavor | those who have different skills and habits. Getting them to see | this and having their eyes go wide with realization is always | interesting. | 88913527 wrote: | Have you ever seen an organization filled with service-oriented | employees and no doers? Zero-interest rate policy has lead to | having more Senior Director of Jira Board Management and Lists | of Tasks type roles and not enough people that can do the work. | I'm not opposed to the idea that others can be a catalyst for | the productivity of others, but you need the others for | anything to get done, otherwise it's necrosis. | ChuckMcM wrote: | > Have you ever seen an organization filled with service- | oriented employees and no doers? | | Yes, but to be fair it was an IT organization which had | settled on a metric of "tickets processed" for their quality | metric. As a result people who processed a bunch of tickets | but never addressed root causes were seen as "good" vs people | who wanted to fix fundamental problems that would reduce the | number of tickets. It was, for me, a pretty classic case of | picking the wrong metric. And to be fair the "best" | IT/Service org is one that looks like it has nothing to do | because it is always ahead of the curve of upcoming issues, | and upper management has a hard time with that. | hi_dang wrote: | [flagged] | mynameisvlad wrote: | "Didn't happen to me anecdotally so must be fake news" is not a | compelling argument. | | Also to say it couldn't happen at tech companies is pretty | bold. There's nothing special about tech companies. They can | hire incompetent managers just as well as other companies. | hi_dang wrote: | [flagged] | AtNightWeCode wrote: | Metrics. I used to work on a team with skills in agile | development. The process was evaluated at every retro and | everything was tweaked. One member of the team however continued | to put tasks into states that was not even in our agile board. | Meaning. You could not drag a task into that state. You had to | set it. Turned out that the idiot CTO used an unknown report to | evaluate staff. One metric was putting a task into a specific | state no longer used by our team. The idiot CTO had told his | favorite pet dev about this metric. | | Too bad I quit before the CTO, CEO and most of the board members | got fired. Would have enjoyed sitting there and going. Yes, yes, | yes. | igama wrote: | "Tim wasn't delivering software; Tim was delivering a team that | was delivering software. The entire team became more effective, | more productive, more aligned, more idiomatic, more fun, because | Tim was in the team." - This happened years ago to me, with a | manager pulling me aside and asking why my Tickets resolved were | so low... They only cared about the number of tickets worked | on... | watters wrote: | The title is a fairly harmless form of click-bait. | | What the author describes is the effect on a solid senior | engineer working in a terrible organizational system for a not | very skilled or savvy manager. | | Such managers (and directors and VPs) are common, even in the top | tech companies. They may occur less frequently in those | companies, but skilled, savvy managers are much rarer than | excellent engineers, so the dysfunction described continues | unabated in all companies. | csours wrote: | I've asked this question a number of times now: What is the unit | of work for software development? | | If you work on a factory line, you can measure widgets per hour | and quality. In construction, you can measure distance or area | completed. But in programming, you are not making a repeatable | product like the factory line. You can say that developers | deliver story points; that is the product, not the work. | | I invite you to come up with your own answer before you read | mine. | | ---- | | ---- | | ---- | | I think the inner cycle of development is learning and trying. | You learn about a system, make a theory, try that theory out, try | to extend that theory, then you test. That test will let you | learn some more - was I right or wrong, was there some side | effect. Then you repeat. | | I don't think this learning and trying is a good unit of measure | for performance, but I do think it's a good basis for an | engineering notebook, which may be reviewed with a manager. | | Non-junior developers are essentially managing themselves when it | comes to getting the work done. So how do you manage a manager, | when that manager is not responsible for widgets? | johndhi wrote: | Nice story. It's unfortunately really hard for higher management | to see something like this. I guess it's on the middle manager to | convince upper management of this. | | Unfortunately in my current experience my manager is not at all | like Tim. | ncruces wrote: | This worst programmer sounds eerily similar to the best one (from | the Twitter thread). | mattlondon wrote: | Personally I want the seniors on my team actually delivering on | the really hard stuff. | | Helping juniors do their job is great and all, but you still need | experienced people to work on the hard and complex stuff that | juniors _can 't_ because they don't have the | knowledge/experience/people-skills. No amount of pair programming | can replace that. | | You don't want to be in a situation where you have _really really | well implemented_ low-value features, but the high-impact and | high-priority hard stuff was not done because some of your most | experienced folks were helping the less-experienxed people write | effective unit tests or whatever. | spyhi wrote: | A senior engineer can work through a hard problem assigned to a | junior engineer, resulting in a well-implemented hard feature | and a less junior engineer. Just because a junior engineer is | working on it doesn't mean by default it's an easy problem--how | are you going to grow your engineers otherwise? | wizerdrobe wrote: | Some firms simply hire nothing but Seniors. You trained up a | Junior-Mid-Senior? Cool, well offer him 20k more and call it | a day. | nathias wrote: | If I worked somewhere where a guy would shadow me, hover around | and 'support' me that would make me quit very fast. | Waterluvian wrote: | I've met a lot of project managers who are competent and see the | bigger picture. They actually pay attention and understand why | the numbers are what they are. They respect that the numbers are | a very flawed tool and cannot be utilized without context or | understanding. | | I've also met a lot of project managers who are there because | they're incompetent. They lean heavily on "agile" and "best | practices" and say moronic stuff like, "can you show me how many | lines of code each developer has added this month?" (this | happened to me. I fought it hard, explaining that it's not a | meaningful metric. I showed him a month that I wrote -1500 lines | of code). | | I feel like I could say the same about managers, coders, | executives. The incompetent exist everywhere and they lean | heavily on bureaucracy to protect their existence. | liquidpele wrote: | Ive even seen good managers hold a few incompetents on purpose | in preparation of layoff cycles in larger companies that do | them consistently. | earljwagner wrote: | As half of the pair programming team, why not just give him half | of the story points? | GuB-42 wrote: | Maybe the tool doesn't support that. | | Or maybe Tim didn't care about story points, he knew his worth, | and he felt that if the company wanted to fire him on such an | arbitrary metric, it wasn't a company worth working for | anyways. In the end, he did well because he kept his job and | the company dropped an inappropriate metric. | shultays wrote: | Tim's productivity score was zero | | I also have a Tim in my team but he is a net negative. | | Most of the time he would try to pair up. He just make noises | that implies he is following your work. But you can see that is | not the case when he tries to make a comment or a suggestion, he | is clueless. Trying explaining things to him is a waste of time. | | Rarely he decides to work on a task himself. No matter how | trivial the task is, he needs someone to spell out what to do | step by step. Even then when he sends a code review, you can find | some surprises. He becomes a net negative because he can take a | task that should take 2-3 hours top for a regular dev and then | spends 1-2 week on it while also wasting more than 2-3 of someone | else's time. | | It is always fun to see him grab an easy looking task that is way | beyond his capabilities and then struggle for weeks and tries to | weasel himself out of it. | | I never saw someone so immune to learning. He is in the team for | over 2 years yet has a productivity of zero. I don't understand | why companies keep such people | [deleted] | andrewmcwatters wrote: | Bad management | xena wrote: | That person manages to stay because he plays political games | correctly. | thereisnojesus wrote: | I have struggled to find work my entire life, but people like | this get jobs. I hate life | astrange wrote: | You live in a different country probably. | | Or, the past isn't the present. It was very difficult to get | a job in the US in 2008 and now it's easy because it's 2023. | (slightly harder for some kinds of tech) | jokethrowaway wrote: | In Europe firing people is not always straightforward. | | There are so many people doing jackshit which make me go | insane. I guess, good for them and I'm glad I'm not a | shareholder. | | Management handle the most blatant cases in 6 months. There are | so many people who are not completely clueless at pretending to | do something and they go undetected for their entire career. | | From previous experiences, in a US startup they would be fired | in 2 weeks. | jonhohle wrote: | What value to society does making companies carry dead weight | provide? It raises the company's costs, lowers productivity | and morale, all to protect someone unfit for a particular | role? | | The unpredictable layoffs and terminations of US companies | are their own issue, but companies pay unemployment insurance | to let people go with some safety net. I can't imagine UI is | more expensive than keeping an underperforming employee. | SlightlyLeftPad wrote: | Unfortunately, I have seen many of these types of people pass | by management. The worst ones are the ones who do play | political games correctly because they're the ones who either | get away with it at the very least or worse, make the talented | engineers want to leave. Basically, the latter can completely | destroy good teams. | ryandrake wrote: | Yup, I've seen many people like this in engineering. They | "put all their skill points" into Charisma. Then they go on | to build long, prosperous careers by bullshitting and | charming senior management, until they themselves are | promoted to senior management. It is a reliable, proven | career progression for the incompetent. | holoduke wrote: | They need to fire his manager first and then assess this guys | capabilities. Maybe he is not guided enough. Maybe he is plain | stupid. Full responsibility of his manager. | brundolf wrote: | > You see, the reason that Tim's productivity score was zero, was | that he never signed up for any stories. Instead he would spend | his day pairing with different teammates. | | Pretty clickbaity title. This isn't a story about a bad | programmer, it's a story about a bad metric, and an even worse | manager who followed it blindly | avar wrote: | It's entirely possible that the subject of the article is a | terrible programmer, if he were to sit down and write or | maintain something as an individual contributor. | | I've worked with people like that, who were pretty bad | individually, but brilliant when part of the right team. | | Writing code and directly enabling the productivity of others | who are writing code are _different skillsets_. | | Obviously there's some overlap, but you're most productive in | Tim's role in you're complimenting the skillset of the person | writing the code. | thatwasunusual wrote: | > Pretty clickbaity title. | | Good. I hope it made you read the article and learn from it. | voxl wrote: | It made me immediately go to the comments, find this comment, | and decide to definitely not read the article. | davidmurdoch wrote: | Ignore the others. It's a quick read and a good story, and | I think most engineers or engineering managers could take | away something from it, even if just reinforcing that your | already know. | adhesive_wombat wrote: | > worse manager who followed it blindly | | And apparently has zero idea of the team's internal working | patterns. | nine_zeros wrote: | > Pretty clickbaity title. This isn't a story about a bad | programmer, it's a story about a bad metric, and an even worse | manager who followed it blindly | | The clickbait is made so that this document can be shared with | a future shitty manager. If you send them a link titled "The | Worst Manager" - I assure you their first reaction will be to | figure out how to get rid of you. | | Managers are the bane of this industry and sadly, engineers | have to spend an immense amount of time dancing around shit | managers. | psunavy03 wrote: | Bad managers who want to control instead of empower are the | bane of this industry. | volkk wrote: | a manager that truly relies on story points as a direct | metric of productivity wouldn't be reading blogs like this in | the first place to make themselves better. the article is | preaching to the choir of engineers and at a minimum half way | decent managers nodding and upvoting. the ones that truly | need to read this and embody it will never see it | jacoblambda wrote: | You say that but even in this thread you have tons of people | claiming he was actually a bad programmer precisely because he | wasn't also shipping code. | | Yes it's a bad metric but so many engineers (not just managers) | fail to understand that. | protonbob wrote: | It seems like the easy solution here would be to give this guy | partial credit for stories completed. | hardwaregeek wrote: | It's like Draymond Green. Individually his statistics suck. He's | jokingly called Mr Triple Single (a triple double is a major | achievement, a triple single not so much). But he's such a | fantastic defensive coordinator and playmaker that his impact | metrics on the team are massive. Like practically comparable to | Steph, his more lauded teammate, in some stretches. | | A common refrain in basketball is that people forget it's a team | sport. Doesn't matter how good you are individually if your team | sucks (see Michael Jordan in 1988 or Lebron most of his career). | Similarly programming is a team sport. Individual stats are not | the same as team success. | rcarr wrote: | Came here to say something similar. | | In this case, Tim from the blog post is a football defender or | a linebacker if you're an American. Measuring them based on the | amount of goals they scored or a touchdowns they caught is | stupid. Instead they're stopping costly errors and providing | the foundation that allows others to go on and score. You're | probably not going to win very much if you field 11 strikers or | 11 wide receivers. | KSS42 wrote: | That impact should show up in the plus/minus score? | | https://www.espn.com/nba/statistics/rpm | | For 2022/23 Green ranks 38. His defensive impact is very high | but it is offset by his negative offensive impact. | hardwaregeek wrote: | Yeah that's what I meant by impact metrics. In the 2015-2017 | playoff runs Green's impact is almost on-par with Curry. But | for most people who watch basketball, they just look at the | box score and don't look at advanced stats. | Given_47 wrote: | Not even just playoffs either, I think his rank in that | three year RAPM range was fourth or something staggering, | after Curry, Lebron, and I think Kawhi? My go-to RAPM site | that did all the calculations was taken down so can't | currently cite the numbers | Given_47 wrote: | Standard plus minus is pretty crude since it obviously | doesn't filter out any context, and the ones that _do_ [0] | tend to be a better reflection of a player's impact in their | given _role_ , not their overall _quality_ , which is | something that drives me up a wall with the nba analytics | crowd. | | It's easy to fall victim to the McNamara fallacy (I've | certainly been guilty of it), before you start understanding | the innumerable intricacies in the domain. And basketball is | the only domain I probably know better than 99% of HNers lol. | | That being said, GP's general point about Draymond is very | true. Yes he's one of the best defensive players of all time | and one of the smartest as well. I think the main point is | his incredible self awareness (yes get the jokes off). On | defense it's more subtle, such as not over committing and | leaving his man etc but on offense is where it's obvious. As | his own shooting has fallen off a cliff, more and more when | he's dribbling unguarded he frantically looks around for | Steph or klay to flow into a dribble hand off to pry them | free for a shot. | | He's talked extensively about the criticism he's faced for | lack of shot attempts, with his rational being why would he | ever shoot if he can instead try to get Steph a shot. He's | also mentioned if Klay hasn't touched the ball in a few | possessions, he makes sure to get Klay the ball with at least | a decent look; otherwise the next time Klay gets the ball | he's shooting it regardless of how bad the shot is. He also | frequently pushes the break[1] to catch the defense off guard | and before they can set up. | | He _is_ still a negative offensively, but why I appreciate | draymond so much is for the above reasons and the myriad | other subtleties he does to maximize his benefit to the team | and diminish the detrimental elements of his. | | And lastly, standard plus minus is still a hell of a lot | better than box score garbage, I don't mean to crap on it. | | [0]: https://squared2020.com/2017/09/18/deep-dive-on- | regularized-... | | [1]: http://stats.inpredictable.com/nba/onoff.php?season=2022 | &tea... | | (Steph actually ranked higher than Dray last year in pace | (seconds per possession) on/off which is why separating | Draymond himself is so difficult. Their relationship is | certainly symbiotic, but Draymond is the one that optimizes | for best interplay of their skills) | psunavy03 wrote: | And similarly to sports, there are devs who understand this, | and devs who actively refuse to do things like pair, mob, or | collaborate and just want to be handed work pellets so they can | pick up their headphones and go to la-la land. | refulgentis wrote: | I don't buy it and they sound like a very annoying coworker. If | he's 100% devoted to pair-programming and makes such a massive | difference, promote him to a lead. Programming is the only | profession that acts like it's literally impossible to ever | measure productivity at all without committing some obvious | wrong. Drives me nuts, coming from a blue collar background. It's | cargo cult thinking used to justify many negative outcomes. | ChrisMarshallNY wrote: | _> Tim wasn't delivering software; Tim was delivering a team that | was delivering software. The entire team became more effective, | more productive, more aligned, more idiomatic, more fun, because | Tim was in the team._ | | This was the money quote. | | Teams do big stuff. | | Good teams do good big stuff (very good). | | Bad teams do bad big stuff (very, _very_ bad). | | It seems that the hyper-competitive nature of today's workplace | means that engineers consider _their own teammates_ to be | "competition," and we never really get a good team. This is | especially true, with the mayfly tenures of most engineers, these | days. | | I'm fairly happy with the fact that I was able to keep a stable | team of experienced, high-performing, senior C++ image pipeline | engineers together, for _decades_. | | Other managers would bust my chops for being a "Santa Claus" | manager, because I refused to burn them out, and often | intervened, when other managers were being too hard on them. | | It seemed to work. When my team was finally rolled up, in 2017, | the engineer with the _least_ tenure had a decade. | [deleted] | tnel77 wrote: | In my experience, the best raises are from getting a new job. | What were raises like for your engineers that stuck around for | 10-20 years? | ChrisMarshallNY wrote: | Not very good. These were highly skilled engineers that could | easily have commanded better salaries, elsewhere. | | That meant they stayed for other reasons. | | I wonder what those reasons could be? | arrjayh wrote: | This is brilliant. I'm a mid-level engineer with decent | C/C++/Rust background. Have yet to find a team like this. | I'm inspired by your story to keep searching! | notyourwork wrote: | Will be five years with my current manager. Team has | shifted some but money is not the only reason to stay | somewhere. | liquidpele wrote: | ... So you let them enjoy work but fucked them on salary? | astrange wrote: | FAANG type compensation doesn't come from "raises", it comes | from good yearly performance bonuses. | | (Although in my experience the raises you get from changing | between smaller companies are still worse than just staying | at one FAANG.) | hermannj314 wrote: | It is also possible if they fired this guy, and replaced him with | another developer that only did points that the organization | would be more productive. | | Without quantifying it or comparing to an alternative, this is | just feel good commentary. If you deliver any value, that does | not consequently make you a good business decision. You have to | pit your value against your cost and the companies best | alternative option. | | Also, if a company measures my value in widgets, I have found my | career does quite well assuming widgets is the right way to | measure my value. Assuming you know better than everyone in | management is prideful and not good teamwork. | nottorp wrote: | Your last paragraph just said that if you hire people and tell | them their earnings depend on $METRIC they will optimize said | metric. | | The argument here is which metric, or are metrics good for | anything? [1] | | [1] Except ditch digging and children. It is well known that 9 | people will dig a ditch in 1/9 the time one person will, and 9 | women will make a baby in 1 month instead of 9. | AugustoCAS wrote: | The answer to your scenario is `yes` with a high probability | (taken from my magician's hat), but only in the short term. | | People like the one described in the article prepare a pipeline | of good engineers, who also have experience in the domain and | in the organization. | | So if one cares about fast delivery, get a good number of sr | engineers who work on their own thing, share little and are not | encumbered by each other. If a company needs to deliver | urgently this works, but is an (expensive, short term) option. | charcircuit wrote: | Having this person help others 100% of the time likely is not the | best use of his time. | hibikir wrote: | This is also why the most hilarious anti-feature of Jira, | supposedly a tool to manage agile teams, is how every ticket has | one person assigned to it. If you do sufficient pairing, the | person assigned to a ticket is completely useless. Also why | performance measurement from the outside of a team is always | going to be dubious. | | Every team knows their best performers, and their lowest | performers. The number of points aren't going to line up with | performance most of the time, precisely because time helping | others is never going to show up. And if suddenly getting help | lowers your review, you are going to ask for less help, not more: | Trading accuracy in external performance tracking for lowered | team performance sounds really dubious. | voytec wrote: | > supposedly a tool to manage agile teams, is how every ticket | has one person assigned to it. | | It's whoever owns the issue. You can make it an epic and assign | particular sub-tasks to team members if it's a teamwork. | desbo wrote: | And if there's pairing on a sub-task...? | ChrisLTD wrote: | Not sure how that solves the pair programming issue. What | you'd need is a way to split the points for a single task | among 2+ people without the overhead of duplicating the | ticket. | fragmede wrote: | It's, what, two clicks to duplicate a ticket, and another | to assign one to other person? Sure a "this person paired" | button would be easier, but sometimes you just gotta do | jira chores. | ChrisLTD wrote: | Then the status has to be tracked in two places. It's | certainly not impossible, but as a programmer I'm | allergic to unnecessary busywork. | [deleted] | Aperocky wrote: | Smells fishy. | | Senior engineers in my knowledge and experience are all | delivering on something relatively high impact while contributing | massively to the team by occasional/often "pairing". | | I've seen rare examples who don't "pair" but just deliver by | themselves. | | I've never seen an example where they don't deliver on anything | (planning, design, architectures included) but only "pair" as | their job every day. | siva7 wrote: | You do realize that pairing is also delivering in everything | you mentioned? Just because you hadn't the luck to experience | this in your career so far doesn't invalidate this | asveikau wrote: | More cynically, perhaps they _have_ experienced this but | labelled the person as a non-performer. | loeg wrote: | I agree that it seems like a weird distribution of time for | someone senior. It's fine and good to mentor juniors or pair | some of the time but I think that in general pairing is net | less effective than two people working individually. Seniors | certainly and usually team leads are expected to deliver _some_ | individual work product. You can definitely help make teammates | more effective without spending all of your time on their | shoulder. | | Also: the business established a metric it wanted ICs to meet, | the guy in the story refused to participate in it at all. At | the very least, he's demonstrating resistance to following the | expectations of leadership. He might be a good team player at | the smallest scope, but great engineers can do that and | simultaneously play along with management/biz interests. | | (I'll also agree with the article that measuring "story points" | or whatever is probably a bad metric, like most measures of | software productivity.) | twic wrote: | The team being described here was one where all work was done | paired. Senior engineers were never delivering by themselves. | It sounds like you have experience of teams which are not like | that, which makes comparisons ineffective. | | The real reason Tim showed up as having zero productivity was | because he always let his pair put their name on the ticket, | and so get the credit for it. This is really a story about how | things go wrong when a ticket tracker designed for solo work is | used by a team which pairs. | mi_lk wrote: | This^^ The article depicts it like it's an either-or when in | real world capable engineers can consistently do both | johnnyanmac wrote: | Too lazy to track down the exact company, but the author does | link to Tim's LinkedIn. He has many titles as "Agile coach" and | his lede is | | >Enabling technology teams to operate at their full potential | | Sounds like he is a very particular type of developer focused | precisely on enabling teams in this manner. | | ----- | | also, I can just post the obvious here but: he may be doing | work but not tracking it. I've never been perfect at creating | stories for every task I get, especially retroactive ones that | pop up in the middle of the week. | pizzafeelsright wrote: | Hi. I barely deliver anything of value from my perspective. | | I asked to swap teams. Two levels up both said "no way you | can't be replaced. " | | I have a reputation and didn't know. | oytis wrote: | In orthodox agile environment planning, design and architecture | might not result in any "story points". | | Also these activities might not always result in a lot or any | artifacts. E.g. being in a meeting, making sense of messy | stream of requirements and using institutional knowledge to | help set the right priorities on a project or prevent team from | spending months on a dead end idea might not leave any paper | trail at all. | loeg wrote: | Seniors are usually expected to do these things and also | produce tangible artifacts. At the principle / architect | level maybe you aren't producing code artifacts but you | should easily be demonstrating 7+ figure impacts to the | business from your efforts. | suzzer99 wrote: | It's a great deal for Tim. He never has to work overtime to | deliver something, and never has to fix bugs on stuff he built. | | That said I believe the author that Tim was a huge net | positive. | MarioPython wrote: | I feel that the article is talking about the same thing as what | is described in this talk | https://www.youtube.com/watch?v=YyXRYgjQXX0 - "disagreeable | givers", which the host of the talk argues are one of the most | valueable employees to have in a company while also being the | least understood and often let go. | | I am a disagreeable giver myself and I have experienced a lot of | backlash by the higher ups inside companies for being one, while | also being praised a lot by my colleagues that were working | alongside me. | | A previous discussions about it: | | "The best employees are not the agreeable ones" - | https://news.ycombinator.com/item?id=17386640 | xena wrote: | I'm this kind of person most of the time and it really sucks come | review time. I'm also a mentor type and that is also very hard to | account for in most systems. It means I do an essential role that | is seldom rewarded because there's no number associated with my | meddling. | pydry wrote: | I sometimes wonder if developers should do an end run around all | this bullshit and come up with and start measuring management | productivity metrics. | | I dont see a downside to doing this. | ruined wrote: | it's called a labor union | commonlisp94 wrote: | unions don't measure productivity. They group people based on | credentials + experience, and treat everyone as | interchangeable within those buckets. | rexpop wrote: | That's one possible union architecture, sure, but you're | missing the forest for the trees. A union offers job | security to reduce the risk of "managing up." | commonlisp94 wrote: | > one possible union architecture | | It's the one used by all the major ones: airlines, auto | manufacturers, and teachers. What institution do you know | of that has a greater emphasis on measuring performance? | pydry wrote: | You're thinking of management. | | I'm sure most unions would _love_ performance based pay | where union reps decide what constitutes good performance. | For some mysterious reason management is as keen on unions | exercising their judgement as unions are on management | deciding. | | Where unions agree policies that treat members as | interchangeable (e.g. age based pay) it is usually as a | result of a compromise brooked with management who would | _love_ to have the latitude to give pay raises to scabs, | kiss asses and spies. | criddell wrote: | That's not generally how it works in professional sports | with player unions. Nor does it work that way in the film | and television industries where there are unions | representing writers, directors, actors, etc... | | The shape of the union is whatever the membership wants it | to have. | commonlisp94 wrote: | Both of those examples have weaker unions that play less | of a role. Also the poster above suggested that the union | as opposed to the management could measure performance. | That doesn't happen in sports or TV. | rgblambda wrote: | Managers don't stay in the same role long enough to have their | productivity measured. | Cerium wrote: | Really? From my manager and up at least 4 levels has been | unchanged for at least 8 years. Titles changed some, but the | same people are in the same effective roles. | throwaway92837 wrote: | They measured by the perceived output of the team. Give them | credit for being self-serving, at a minimum. | omoikane wrote: | Management also have their own metrics, measured by even higher | management further up the chain. Even if there is a manager or | director that I really liked and would like to keep, they have | to answer to the metrics of their VPs and SVPs above. It's | metrics all the way up. | | People at the top of the hierarchy probably do care about | people at the bottom, but it's difficult to care about a large | number of people as individuals, so they resort to metrics that | probably models what's going on. Unfortunately, the metrics | don't always work. | | Instead of measuring and gaming numerical metrics, enforcing a | particular culture might be a better way to go: | | https://apenwarr.ca/log/20190926 | h2odragon wrote: | How would coming up with good metrics for "management" be any | easier than coming up with good metrics for "programming"? | | At least programming has some verifiable realities that can be | witnessed objectively by multiple observers. Not that such | things are often used on "metrics", but they _could_ be. | | The quality of someone's management is hard to assess from | outside, much less objectively verify. Has your manager | increased or decreased your productivity today? Was it | necessary that they do so for a larger goal you're not | considering? Were they just power tripping? | pydry wrote: | That's exactly my point. Managers who protested the use of | metrics on them would inadvertently undermine the argument | for using them on developers. | | Measuring is an aggressive act intended to invoke control | that has a veneer of innocence. | | That said I'm now wondering if there wouldn't be some metrics | which might prove useful to workers either way. | TheDong wrote: | "Hey, boss who can fire me, I just thought you should know that | we on the team have started keeping metrics. I want you to know | that your 'times you made the only girl on the team | uncomfortable with a sexist joke' metric is unusually high this | month, and your 'unblocked the team by speeding up an external | request' metric is 0 for this month, down from 3 times last | month" | | Let me know if you find any downsides. | | Anyway, management will of course argue that developers under | them are incapable of seeing everything management does. After | all, management's job is to shield developers from other | managers, so if the developers think all the managers at the | company are worthless, that's actually a sign of how well | management did their job of shielding each other's teams from | each other. | tjpnz wrote: | The logical conclusion to that argument is that we should do | away with the lot of them. | bee_rider wrote: | We all feel like management contributes nothing, right? But | they seem to always be around successful companies. I | dunno, correlation isn't causation, but I think there must | be something there. | TheDong wrote: | Weirdly enough, many unsuccessful companies I know of had | management too. Correlation isn't causation, but maybe | there's something there. | | There are also plenty of successful companies and | projects without management too. Basically every | 1-to-5ish-man consulting shop has zero managers and some | of those do wildly well. Some of the best indie games, | produced by teams of 3 or 4, had zero dedicated | management. Most open source projects have effectively 0 | management. | | Valve, famously, kept a flat organizational structure for | a long time, and certainly was somewhat successful. | chaxor wrote: | AI is actually now shaping up to replace these jobs much | more simply than blue collar work. | | So, yes absolutely, administrative work now can finally be | replaced, and we can free up all the tormented souls in | these managerial positions to do something more meaningful | with their lives. | pydry wrote: | In many workplaces middle management has already been | automated. Algorithms manage Uber drivers. Algorithms | manage Amazon warehouse employees. | | These companies are even more stratified than before with | the lumpenproletariat doing human-mechanized tasks while | executives program their lives using software we write in | exchange for the unbridled luxuries like the chance to own | a roof over our head one day. | | It's not exactly the future I wanted. | pydry wrote: | >Anyway, management will of course argue that developers | under them are incapable of seeing everything management | does. | | What a coincidence! Thats one of the first thoughts that | crept into my head when code metrics started being used on | me. | | This "voyage of discovery" you've alluded to is exactly what | I meant by no downsides. | | If managers feels threatened by being measured by their | employees after their _employees_ start measuring _them_ , | well, that's also an interesting reflection is it not? | [deleted] | 38 wrote: | > He would not crowd them or railroad them, but let them take the | time to learn whilst carefully crafting moments of insight and | learning, often as Socratic questions, what ifs, how elses. | | I do not like people who do this. just tell me the answer. this | is such a gigantic waste of everyone's time. you figured | something out months/years ago, great for you. give it to me NOW, | so I can get on with my day. if we BOTH run into something | unknown, we can tackle it together. but dont force me to go | through the same painful learning process you went through. YOU | suffered, because at the time no one knew how to do whatever it | was. now that someone knows (you), your job should be to spread | that knowledge across the business as quickly as possible, not | hoard it to yourself until someone is deemed "worthy" of knowing | it. | mynameisvlad wrote: | Quite simply, no. | | You're not going to learn from being handed an answer on a | silver platter. | | You'll implement it, get on with your day, and not at all think | about why the answer is what it is. | 38 wrote: | > You'll implement it, get on with your day, and not at all | think about why the answer is what it is. | | this is an incorrect assumption. some people (like me) have | an analytical mind. if I am given an answer, I will usually | reverse it back to the question, so that I understand how it | came about. or I will ask follow up questions until I have | that understanding. | | all this method is doing is forcing multiple people to go | through the discovery process, when all that should be needed | is for one person to do so. its a waste of business | resources. person A can share with person B, then person B | can go on to make their own discoveries. we dont need to | force every employee to discover EVERYTHING on their own. | thats just a huge waste of time. it would be like forcing | everyone to discover Pythagorean theorem on their own, | instead of giving them that tool and letting them use it to | create other stuff. | mynameisvlad wrote: | [flagged] | 38 wrote: | [flagged] | qdog wrote: | I've worked with several types of people. For me, the best | mentors were the ones who would answer questions I had with | the full answer, often with details. Then they got on with | what they were doing while I went back to my desk and tried | to understand/retain some of what they told me. | | I'd personally find someone shadowing me and asking questions | super annoying. | | I don't think this would work with all teams, the takeaway I | got from the article is about artificial metrics. | shigawire wrote: | You are thinking of something different than this is | describing. | | Your situation is a waste of time where no one grows. The | article is describing growing skills which is a net | productivity benefit. | jader201 wrote: | The moral of this article seems to just point out what we all | already know, and what has already been discussed on HN countless | times: don't measure performance solely by things that should | never be measured in a vacuum (like story points, lines of code, | etc.). | | Not sure why this is the #1 article on HN right now, other than | maybe the (what I would consider) click-baity headline. But I | wish there was an acceptable way for HN to use more fitting | titles for articles (especially since most articles always use a | click-baity headline). E.g. would it be at the top if the title | was "Don't measure performance by story points"? | | I guess some interesting anecdotes have resulted in the post, but | the message of the article itself doesn't seem to share anything | particularly new or enlightening. | johnnyanmac wrote: | >E.g. would it be at the top if the title was "Don't measure | performance by story points"? | | TBH it's a non-zero chance here on HN. "Don't measure by story | points" is still preaching to the choir to a community like | this after all. | | >I guess some interesting anecdotes have resulted in the post, | but the message of the article itself doesn't seem to share | anything particularly new or enlightening. | | 1. Lucky 10k. Especially if it involves some managers who may | in fact be doing this stuff as we speak | | 2. Generally, I come to the comments because some anecdotes are | more interesting than the article. | the_af wrote: | Agreed, but also: enough people are disagreeing with the | moral of the story that I think we can no longer assume | anything in the article is preaching to the choir. | tomtheelder wrote: | I actually don't think that's what the author is arguing. They | are arguing that certain metrics that are valuable to measure | at a team level become less useful or even misleading if you | zoom in too far to an individual level. Story points being a | good example. Useful when talking about a team, not useful when | talking about individuals. That's a more nuanced point, and one | that I definitely don't think is obvious to everyone. | the_af wrote: | > _I guess some interesting anecdotes have resulted in the | post, but the message of the article itself doesn 't seem to | share anything particularly new or enlightening._ | | Enough commenters here on HN are disagreeing with the article's | conclusion that I think we can infer this is not a point | everyone here agrees on, and the article was needed after | all... | _gabe_ wrote: | Now when you Google "Tim Mackinnon programmer", the 5th or 6th | result for me is a link titled "The Worst Programmer" and the | little descriptive blurb below that says "His name is Tim | Mackinnon...". I know the author was click baiting and flipping | the story on its head, but I would be a bit annoyed if Googling | my name + programmer surfaced something like that. | twic wrote: | Tim thinks it's awesome: | https://twitter.com/iterex/status/1697927494479777844 | owenmarshall wrote: | Annoyed? I'd _love_ it: it would be an incredible door opener | anywhere you went. | tchaffee wrote: | Get your resume. HR looks up your name. Throws out the | resume. It could be fun if you can get an interview. It might | hurt you though. | ted_bunny wrote: | If HR is going to throw it out because of the title alone, | they're going to be obnoxious to deal with even in the | scale of HR departments. | tchaffee wrote: | Or they are just busy. A pile of a hundred resumes and | two open positions usually means you disqualify quickly. | | Sometimes we need to pay rent and deal with obnoxious HR | departments. | twic wrote: | This is just not something that actually happens. | tchaffee wrote: | Can you reassure me then with the data that backs up your | claim? Because in my very long career I've seen a lot of | people use heuristics when deciding who to follow up | with. | | "According to a 2018 CareerBuilder survey, 70% of | employers check out applicants' profiles as part of their | screening process, and 54% have rejected applicants | because of what they found." | twic wrote: | _HR_ are not going to reject an incredibly experienced | senior guy with a CV as long as your arm because of the | _title_ of a blog post. Your quote doesn 't even suggest | they would, and I'm not going to cite any evidence | because it's honestly just a patently absurd proposition. | tchaffee wrote: | HR will definitely reject someone because of the title of | a blog post. When you have a pile of a hundred CVs and | two openings, you disqualify quickly. | | I'm basing this on real world experience. | softfalcon wrote: | Yeah, this is a great opener to break the ice with during an | interview. | | You can even add some prestidigitation by having them take 30 | seconds to Google it and your name comes up. Play it off as a | joke and now everyone has a little smirk/chuckle over it. | | Now they know you have a good personality and can tell a | funny joke about yourself. Goes a long way to putting you in | that "I can work with this person" category. | | Also, if they can't appreciate the joke, that's an easy red | flag for you that you probably don't ever want to work for | that team. | _gabe_ wrote: | You both make good points, on second thought it's all about | how you spin it :) | gardenhedge wrote: | My thoughts too. Sucks for him. | jamestimmins wrote: | Reminds me of an anecdote about Bell Labs. Someone calculated who | the most productive employees were (based on things like patents | received), and found that many of them would eat lunch with the | same person. That person wasn't individually very productive, but | he would always ask thoughtful, compelling questions that in turn | made his coworkers measurably more productive. | psunavy03 wrote: | For all a lot of people dump on Scrum Masters and Agile Coaches | . . . this is part of who the good ones are supposed to be. | agumonkey wrote: | That kind of people was somehow mentioned in Peopleware. A | group of people is a subtle structure, and good team spirit, | good questions can improve things "invisibly". | closeparen wrote: | Do people honestly think this kind of thing replicates with | formally scheduled Zoom 1:1s? I don't. | lizard wrote: | I don't know about you, but I don't tend to have breakfast | and lunch over Zoom. | | While I did go out to lunch with coworkers more often while | working in the office it was almost exclusively with direct | teammates, and other groups I occasionally saw where also on | the same team. | | Now that I'm fully remote, I will typically do a few "hacking | sessions" over Zoom every week. Its much easier and more | comfortable than standing over their shoulder in tiny cubes | we used to have. | | That said, especially now that i am fully remote, I've been | trying and mostly failing to get developers especially across | teams to talk and collaborate more. But its not too | suprising: I was recently in a call and I was introduced to | another developer who I replied, "Yeah, I know you. I was in | the cube next to you for 2 years and on your team for 6 | months." | | Remote creates some new challenges, but its a culture thing, | not a technology thing. | andai wrote: | That is a catalyst! | ldjkfkdsjnv wrote: | This type of person needs to start a company, they never get | paid a fair wage otherwise | jongjong wrote: | It sucks being that person today because everything is about | optics and that person will get purged. I know from experience. | | Team players, mentors, software architects; they tend to be | tossed aside to make room for coders who can churn out large | amounts of code, even as the company's capacity to deliver and | maintain features declines over time due to tech debt. Managers | always love a developer who can consistently write 5000+ lines | per code per week, regardless of how many features they | actually ship and how many bugs they introduce. | | As a team lead and engineer who has managed some complex | projects, the idea of someone writing over 2000 lines of code | per week terrifies me... That's over 100K lines of code a year. | Think of the unnecessary complexity. There is a very good | chance that the same feature set could have been implemented | with just 10K lines of code, less buggy and in half the time | though that would only amount to 380 lines of code per week! | Management won't like that. | | I tend to think that the dev who can churn out thousands of | lines isn't thinking deeply enough about the long term | direction of the project; all the code they're writing is | essentially throwaway code. | sshine wrote: | > _sucks being that person today because everything is about | optics_ | | Not everywhere. I've casually suggested five big changes to | the startup I'm currently working for that others ran with. | I'm proud that my ideas even make sense, and my reward is | that others come to me for leadership. I would get more glory | if I had also carried them out. But I'd rather do the things | that others can't, than what shines the most. | | > _2000 lines of code per week terrifies me... That 's over | 100K lines of code a year_ | | That would be incredible (and scary). But productive people | I've seen the contributor metrics for who write vastly more | than they read, still have a number of deleted lines growing | with their added lines in some proportion. | | There is a style of less re-use, more copy-pasting that just | grows faster but also needs constant refactoring in trivial | ways. | varispeed wrote: | I worked at companies where de facto lines of code were a | metric of performance. Then when I moved to first company | where "how" was more important I had a heavy anxiety where I | didn't write a line of code for a couple of weeks. I was | worried I'll get fired. We were just having meetings and just | talking about problem at hand and throwing ideas, without | actually trying to implement anything. Then when the ideas | how to tackle the problem matured, we would try to turn it | into code, like a proof of concept thing (tested with people | looking for solution) which could be thrown away. Eventually | we would get the solution to the problem and most of the time | it was flawless. In the code heavy approach, company would | have ton of bugs, support requests, fixes on top of fixes, | sometimes it turned out the feature was misunderstood, but it | was already so embedded in the system, it was difficult to | remove. So things were piling on. The other approach? Boring. | We had some bugs here and there, usually when something was | not covered by the tests or some edge case we didn't think | of. But I never forget the anxiety... | 3np wrote: | On an individual level: So what? I stopped giving a f. I'd | rather do what I believe is right than earn another $100k a | year at a certain point. If it gets to the point of being | laid off, hey, maybe it's the nudge you needed to find a | better place anyway. Meanwhile, you could play the game all | you want and still have your entire business unit shuffled | away next year. | | I'm not going to drive off a cliff just because the OKR tells | me there's actually a road there but I wonder about some | people... | nine_zeros wrote: | > It sucks being that person today because everything is | about optics and that person will get purged. I know from | experience. | | This is my company. Engineer skills, tech-debt, teamwork, | camaraderie don't matter. Do as the management says, in the | time they've promised to others or else.... | thefaux wrote: | [flagged] | closeparen wrote: | I don't know. I've met several people who see themselves like | this and who are seen by senior leadership as being like | this, but nothing they say tracks, even a little bit, with | what I know about the system and problem space from my time | actually immersed in working on it. | Gibbon1 wrote: | Friends of mine worked at a place were they got a rock star | programmer that churned out thousands of lines of code a | week. And they eventually found themselves relegated to the | role of cleaning up the mess. So they all quit. | | Edit: Take rock stars 3000 lines of code a week and divide by | one rock star + six experienced developers now doing nothing | but bug fixes and it doesn't seem so super. | arrjayh wrote: | I'm working through this exact situation right now, I really | appreciate this insight! | andai wrote: | "Negative 2000 Lines of Code" | | https://www.folklore.org/StoryView.py?story=Negative_2000_Li. | .. | ZeroClickOk wrote: | nice, thanks for the link | yourapostasy wrote: | This is why software craftsmanship is rarely recognized. When | you build with craftsmanship so features are easy and fast to | add on top of what you built because you thoughtfully the | most likely ramifications of the current requirements within | reason, operational excellence is easy to accomplish because | you sat down with front line operators and took the time to | understand their incentives and daily operations pain points | from a first-person perspective, and so on, you aren't the | one who is recognized with the commensurate credit, those who | benefit from your work in the future are the ones who grab | the limelight _as if they did your work_ , unless the | leadership are themselves highly technical (and many times, | not even then). Incentives currently in most of my clients | are mostly aligned to the fulfillment of keywords and not an | outcome. | | "Produce a procedure documentation" gets keyword fulfilled | into "here is a document with some steps", instead of "here | is a procedure we wrote, used spelling and grammar checker | upon [I'm still shocked so few take the few seconds to | correct as they go], run through an automated editor, then | iterated through random people from the user population until | someone who never saw it before accomplishes the procedure | without assistance". | | Some startups succeed because they're forced into | conscientiously thinking through these ramifications in just | the right contexts because they're so close to the coal face. | It is also possible to overdo this in the wrong context and | end up bikeshedding. | yodsanklai wrote: | > That's over 100K lines of code a year. Think of the | unnecessary complexity. | | I've got a colleague like that. It's all good and management | praises him, but this is a time ticking bomb. When he leaves, | someone will have to maintain that code. | ChrisMarshallNY wrote: | _> There is a very good chance that the same feature set | could have been implemented with just 10K lines of code, less | buggy and in half the time_ | | A significant part of my personal code review process, is | going back through my code, and factoring out complexity. It | takes time and humility, but is very much, in my opinion, | worth it. | | Documenting my code is a trick that helps. When I am writing | _why_ I did something, I sometimes reflect, and say to myself | "Didn't I just do this a few lines back?" | | My code tends to be complex, by necessity, but it should be | no more complex than absolutely needed. | | A big, _big_ tool for that, is OOP inheritance, which is | considered "bad coder" smell, these days. | Chris_Newton wrote: | _A big, big tool for that, is OOP inheritance, which is | considered "bad coder" signal, these days._ | | Is it? I'd agree that there's increasing awareness of the | limitations of OOP, and I'd agree that using inheritance | excessively can be one of the limiting factors, but I don't | think I've ever personally seen anyone criticised or | penalised for using inheritance _appropriately_. | ChrisMarshallNY wrote: | Just using OOP is considered bad. There is no | "appropriate" way to use OOP. I see people being | criticized for that, all the time. | | I have run into folks that don't understand polymorphism. | It seems that it is not even being taught. | | _Old Boomer Yells at Sky_ | 88913527 wrote: | Because it's a bogus argument. The productive person doesn't | need a paper weight at lunch to act as a shower thought | generator. Management can get it wrong sometimes, but in | broad strokes, they're right. | willcipriano wrote: | Idea people really overestimate their contributions. | closewith wrote: | Maybe, or maybe human endeavour is more complex than | individual efforts. | 88913527 wrote: | It's tough, but what I've seen is low performers weigh | the team down. They constantly ask for the high | performer's time, and if we give them bug tickets, new | feature work, they constantly stumble and always report | status as blocked. They don't add value. They can't get | to the finish line with anything. It's not a kind thing | to point out, but trying to angle it as "oh there's this | other benefit you're just not seeing" is trying to work | around the fact they can't competently fulfill the job | function after exhausting all of our options (training, | pair programming, etc). They might be friendly people, | but the social boosts don't counteract the losses | incurred, it's still a net loss. | jodrellblank wrote: | You've turned the story round from "Tim MacKinnon is a | good programmer and asset to the team which the simple | metrics were not tracking" into the strawman "defend | people who cant do their jobs and are not an asset to the | team by claiming that they are nice people". | mynameisvlad wrote: | Define "productive". | | Because lins of code churned out is not and has never been | a good measure of productivity. | | That "shower thought generator" might very well be more | productive than the person they're sitting next to churning | out tens of thousands of lines of unmaintainable code if | their shower thoughts are causing people to find better | ways to solve a problem. | | Which is basically the entire point of the article. | 88913527 wrote: | It's more about measuring outcomes. We have a goal, did | we meet the goal. There are many paths to the goal, so | measuring things like lines of code is incorrect. But so | is measuring Bob's ability to ask Alice a good question. | Management can't, at scale, consider such factors. We | don't have the counterfactual where Bob didn't ask the | questions, and Alice did great anyways. Performance | reviews would become even more subjective if we had to | place a value on the impact of asking questions. All | forms of measurement are flawed, so I stick with | outcomes. | manicennui wrote: | Quickly shipping a thousand lines of buggy code that you | then spend the next month fixing (by writing thousands | more lines of code) is a good way to fool everyone into | thinking you are productive. | mynameisvlad wrote: | > Management can't, at scale, consider such factors. | | Why not? Peer feedback is a prime component of most | performance/rewards discussions at companies. Work | outside of points is certainly not a new concept. A | manager's job is to distill this information amongst | others to their own management chain at the right time. | | > We don't have the counterfactual where Bob didn't ask | the questions, and Alice did great anyways. | | Bob's time isn't unlimited. There are surely instances | where he was helping out Joe, Suzie, Darren, and James | and had no time for Alice. | | Based on your other comment, you seem to think someone | being an unblocker/idea generator/dev lead is a "low | performer" who weighs the team down. That's just | fundamentally wrong. | 88913527 wrote: | It isn't wrong, it's right; because pontification of | things (in a vacuum) yields no results. I cannot sell my | customers Bob's ideas. All I can sell them is software | that does something. The people that can do this without | needing Bobs around are the people that will be rewarded. | mynameisvlad wrote: | Well that software you sell them is fundamentally better | and more maintanble because a person like Bob is around | to give directions. | | > The people that can do this without needing Bobs around | are the people that will be rewarded. | | Unicorns are few and far between, but sure, you do you. | alwaysbeconsing wrote: | The part that's often missed is the _future_ outcome, | when someone returns to this code to fix a bug or add a | new feature. I believe it 's incumbent upon those of us | with some experience to ensure maintainability is part of | the considerations. | EVa5I7bHFq9mnYK wrote: | why? most code is not some complex algorithm where 100 | lines of code can take years of genius work to figure | out. Unit tests, for example, have near linear | proportionality between LOC and utility. Same for | comments, same for standard business logic. | mynameisvlad wrote: | I can whip out 100 lines of bullshit in a few seconds. I | can just paste in whatever Copilot gives me and as long | as it builds call it a day. | | It will take me far longer to come up with the correct | 100 lines that is both maintainable and can be worked on | by others down the line. | | I can pad my lines of code in seconds if I wanted to | before pushing the changes. That padding provides no | business value and might even introduce bugs. | | And how do you handle refactoring? If I come in and | refactor everyone else's shitty padding by combining | helpers and optimizing code, I'll have negative lines of | code. Am I an unproductive worker? | | Sure, most code is not some complex algorithm but lines | of code is a stupid metric that is not representative of | the work done and can be gamed by anyone knowing what | they're doing. | manicennui wrote: | Nonsense. Most people write pretty useless unit tests. | Gotta get that test "coverage" high though! | astrange wrote: | Unit tests are useful if you write them alongside new | code, but then become not useful since if you never | change the code, they never break, and so are wasteful. | | It's better to have tests more sensitive to failure, like | integration or regression tests. | naasking wrote: | 100 lines of integration tests are worth a lot more than | 100 lines of unit tests, so it's not a simple matter of | counting LoC. | | Also, solving the same problem with less code is a lot | more valuable than many think. Not only are there fewer | code paths to test, the system probably has fewer | unnecessary constraints and edge cases to consider. How | do you account for negative LoC? | vGPU wrote: | I could be brief. | | Or I could elaborate, expound, simplify, and expand my | solution. | | It depends what I'm getting paid for. | | If I'm getting paid for lines of code, guess who's going to | re-implement functions that could have been a single line of | code? | | Why bother writing a loop function when I could just copy- | paste the same code as many times as needed? | | Turning one line of code into 3,000 - easy. | | Turning 1,000 lines into 100 - that's when you know you're | working with a professional. | [deleted] | mike_ivanov wrote: | Given that DRY is out of fashion, 2000 lines of code per week | looks pretty modest. | closewith wrote: | In a remote world, can that person exist? | scruple wrote: | Yes and no, depends on the engineering culture and the | management. I was successful in this sort of position as a | full-time remote senior and then a team lead from 2016 til | 2022. I changed employers and found myself in an | environment that simply did not understand pairing, | mentoring, etc. Management was oftentimes directly in the | way, confused about loss of "velocity" and other trivial | bullshit, despite the fact that the team was shipping in | overdrive. I left at the start of this year and am now back | in a position where these things are valued, encouraged, | and happening remotely. | greenyouse wrote: | That would depend on the culture of your team and larger | workplace. Healthy teams should be checking in frequently | to talk about ideas, reviewing big things, scoping upcoming | work, etc. If there's time reserved for deeply technical | but loosely structured discussion like that, then everybody | takes turns being that person. In that env someone could | "specialize" in it and help inspire others to do great | work. | | It's the team that creates that kind of opportunity for | feedback though. If the team has dysfunctions like | rejecting deeper discussion or not working beyond jira | tickets or checking out at meetings, etc. then it's not | going to work. Someone that's good at that kind of | supporting discussion will feel push back when fostering | those discussions so it will fall off over time. | | The teams that do the best work and are the most fun to be | on can host those types of discussions though, even | remotely. It's worth experiencing if you haven't! | Longlius wrote: | Yeah the main thing I've found helps is if there's a | regular Teams/Zoom meeting where everyone just pops in for | like 30 min to ask questions. Then you can use that as the | springpad to launch into one-on-one sessions. | | You do need to cultivate a culture in the team of people | being willing to lower their guard and ask questions | though. And I think the key to this is just staying humble | so people feel comfortable approaching you. | mellavora wrote: | Yes. | | I assume you mean the thoughtful person whose probing | questions unlock and unblock everyone else. | | Lunchtime conversation is only one enabler of this. | | I suspect the person is Hamming, as he makes reference to | this in his book The Art of Doing Science and Engineering. | | This aspect of what it takes to be a Hamming is curiosity | about what other people are doing; you can track this by | reading shipped emails or lurking in slack channels, then | reaching out individually to the people/teams involved when | you wonder about something. | | Hamming was intentional about doing this at lunch. The | magic isn't lunch, it is in intentionally seeking the | information and then acting on it. | dharmab wrote: | I am one of those people and work a fully remote job, but I | had to earn that credibility with years of being a top | contributor first. It would be difficult to just walk into | the role. | scruple wrote: | I wrote a sibling comment alluding to the same, having | been that person across a few different employers now. | The struggles I had certainly, to a large degree, boiled | down to a lack of trust (walking into a new | team/department/company is hard on both sides!), but that | wasn't the full story. IMO, management needs to have the | right mindset to establish culture, too. | [deleted] | Aperocky wrote: | > I tend to think that the dev who can churn out thousands of | lines isn't thinking deeply enough about the long term | direction of the project; all the code they're writing is | essentially throwaway code. | | This is a strong statement. There are both people who are | writing throwaway code and people who are writing essential | code that match the description. | | And one will never get to be the latter part without going | through a phase where they are doing the first. | legends2k wrote: | > one will never get to be the latter part without going | through a phase where they are doing the first. | | The parent comment doesn't contest this. I think it's about | the throwaway code author being valued more than the other. | l33t7332273 wrote: | >Managers always love a developer who can consistently write | 5000+ lines per code per week | | What managers care about this at all? | hinkley wrote: | The first project I was on that hit half a million lines of | code, 2/3 of it was generated. It was a bit ridiculous. | DiabloD3 wrote: | The ones that work at companies that promote incompetence. | | You know, most companies. | goalieca wrote: | 5000 lines is silly, but all managers love that coder who | closes tickets faster than anyone. | datavirtue wrote: | Yeah, you have to do it all. Churn out stories AND mentor AND | knock down "desk-side" work (random infra bullshit). I have | been at big companies where no one lasts very long. Thier | mental health suffers to a point where they have to leave so | that they can go work at some other sweatshop for a while. | The lull between giving their notice and the honeymoon at the | new company is their only break. | AStellersSeaCow wrote: | Depends on the company and management. Google codifies this | role to some extent as Tech Lead, which is an engineer | expected to act as a force multiplier and mentor more than an | individual contributor. | | It doesn't always work as designed (ok, maybe rarely works as | designed), and TLs can get too bogged down in cat herding, | planning, and bike shedding to actually work as an engineer. | But at least the spirit of the role is sound. | mlhpdx wrote: | The TL role is a little restrictive IMHO. I've worked with | very junior people who have a very effective ability to | pair and improve others' effectiveness. Perhaps as they | learn they also teach. | teirce wrote: | This was my experience as well. It's completely up to | management to recognize these kinds of engineers | regardless of role name or leveling. | whstl wrote: | Tech Lead is a very difficult role. :/ | | If you are immature or competitive, you cease being a force | multiplier to be a morale destroyer. | | If you are more of a domain expert than your Product | Managers, you will spend your time fighting and refining | tasks to build features the right way. | | If you don't have enough time to code, you'll go obsolete. | onion2k wrote: | I'm the frontend lead in a company of about 200 people | (mostly devs) these days, and the idea of being a force | multiplier is spot on. I'm not there to be the best dev | or the most knowledgable; I'm there to lead the | conversation and amplify people who are saying good | things. Having a pretty deep understanding of the tech is | useful so I can tell what those good things are. I am | absolutely not in the company to show off or take credit | for what my teams do. | | Where I disagree is with the idea of fighting with | product owners. If there's a disagreement around approach | or tech choices that's a sign we don't have enough | information. Fighting or refining won't solve that. It's | a signal that we need to do more discovery work and | understand the problem better. | 3np wrote: | [delayed] | whstl wrote: | I never said one _should_ be fighting. My point is that | POs /PMs should know the domain at least as much about | the domain as TLs do. | | The problem is not needing discovery work or | understanding the problem. The problem is when the Tech | Lead is the one who's providing all the data for that | discovery, or helping them understand the problem better, | because of lack of expertise of PO/PM. Or having to push | back because of incomplete knowledge. | | If there is lack of information or incorrect information, | POs should be able to get that information themselves. If | a TL is the sole source of that info, then it becomes an | issue. | | IME this is very common. And it takes too much time of a | Tech Lead's day. | TheRealPomax wrote: | It also doesn't get people promoted to that position just | because that's what they're doing. Because politics. | AdrianB1 wrote: | Is that a higher level position ("promoted" suggests | that)? In my FMCG IT department I am the TL & "technical | architect", but I am on the same level as a senior | developer, just having in the top 3 priorities the | coaching and mentorship of all technical people in the | department and no code expected (I do write some as | examples or templates). What is the TL level in Google vs | developers and architects? | Arainach wrote: | My experience at Google has been that TLs were generally | strong engineers who were doing that kind of mentorship | and product leadership, so to the degree that it's a | "promotion" (same money, more responsibility isn't a | promo in my book) it does seem to go to those who are | doing it. | | Now TLM (Tech Lead + Manager), however......there's a | role that's set up for failure. Be a manager but be | judged entirely on your technical contributions. | nobodyandproud wrote: | I have to manage up, gently, reminding my manager and his | peers that we're managers first. | | Any meaningful contribution or engineering is extra | credit. | [deleted] | 8n4vidtmkvmk wrote: | I love writing code. I usually "score" on the higher end for | LoC which managers like to praise me for while simultaneously | saying LoC isn't everything but there aren't many good | measures. Lol. But! In my defense, I delete as much code as | possible. Love deleting code. Not sure if that counts in the | LoC. I see lots of others copy and pasting and leaving little | bombs everywhere. I refactor, clean, delete. So.. hopefully | my LoC is mostly that and not adding fluff. | cratermoon wrote: | > Managers always love a developer who can consistently write | 5000+ lines per code per week | | Managers love metrics. There's nothing wrong with metrics, of | course. It's when metrics become targets that things fall | apart. | | https://www.folklore.org/StoryView.py?story=Negative_2000_Li. | .. | beebmam wrote: | If your leadership is tossing these incredibly valuable | engineers aside, then it's time for you to toss that | leadership out. You can do that by leaving, or talking to | management about this, or unionizing. It's crazy to me tech | workers aren't unionizing anyway. | jacobsenscott wrote: | When you can get a bootcamp certificate, and then get two | remote jobs and coast at both for 12 months, and then | repeat, what could a union do for you? | Sivart13 wrote: | A union doesn't have the power to change management, and is | just as likely to advocate to retain low performing ICs in | the name of "solidarity" | b800h wrote: | I prescribe a viewing of "Carry On at your Convenience" to | cure that sentiment: | | https://en.m.wikipedia.org/wiki/Carry_On_at_Your_Convenienc | e | Pamar wrote: | (I am from Europe, so I have a fairly good idea of what | Unions can do, also thanks to having lived and worked in | two different countries). | | I am not against Unionizing "per se" but the role of Unions | has never been "tell the management how to run their | business". There has been some cases of (smallish) company | being "acquired" by their own workforce, and the Unions | might have helped with formalizing the deal, but this is | rare, and anyway happens only when the company goes | bankrupt or decides to shut down. | | So I do not understand exactly what you mean here. | CapitalistCartr wrote: | A union would provide the sort of employment protections | much of Europe alreadys enjoys. | no_wizard wrote: | Unfortunately union / labor movements in the US suffer | from a big problem: due to historical circumstances | they're very combative. The labor movement here never | grafted the idea of being business oriented on behalf of | workers into the movement (like in Germany) rather, they | treat the business as the enemy pretty much from the | outset. | | Some of that is indeed earned by the businesses | reputation, but ultimately this is what I think spurred | the decline of union membership in the US because | businesses don't get a lot if any value out of having a | union around and the organized workers often find the | benefits stagnant after some time | astrange wrote: | That is because of historical circumstances, but it | continues to this day because it's encoded in the law; we | don't have codetermination or sectoral bargaining. | jokethrowaway wrote: | Unions always end up doing more evil than good costing | money to everybody involved. It's political bullshit. | | It's been a net negative to workers for ages. All my blue | collar friends hate them. | | Besides, developers have power in the market, they can | negotiate quite a bit without paying money to some | political useless figures. | lostlogin wrote: | 71% of Americans support unions - though you may not live | there. | | https://news.gallup.com/poll/398303/approval-labor- | unions-hi... | zlg_codes wrote: | Unions may be different in your part of the world. In | America, it's one of the only ways for blue collar or | other production-oriented workers to have any degree of | leverage at the negotiation table. We are treated like | cattle in the workplace, and though unions come with | their fair share of problems (due to it being yet another | leadership structure to work within), the idea of workers | holding power as a group is essential, because it | reflects reality. None of that VC money is getting a | return without workers to do the work. Most places in | America are not unionized, but the ones that do pay | better than other work in the area, even after union | dues. | | I see it as very much a union-by-union thing, much like | you would an employer. | | Now, some programmers may be able to negotiate good terms | for themselves, but the vast majority of that stage is | simply how silver your tongue is. Why should you be paid | better because you got a better charisma roll with the | interviewer? I would want my coworkers to be paid the | same as me for the same experience. A senior with 10 | years in the field, naturally, would be paid much more. | | It's strange you say developers can negotiate, when | there've been quite a few layoffs as of late and we see | plenty of stories of people having trouble staying in | tech. Which is it? The only thing that can give you | credible sway is learning rarer or more in-demand skills, | and putting together projects that show you understand | how to use them. And for how long will that last? A union | is a lot harder to fight than an individual. | | But yes, there are bad unions. If they're as bad as your | alleged blue collar friends say, let's name them! | Sometimes their politics or dues or seniority system | sucks. Those systems deserve to be put on blast. | | But strangely, no unions listed in your comment as bad. | gemstones wrote: | It's funny you mention it as a charisma roll, because | it's not really a roll, is it? High charisma is high when | it's with your interviewer, when it's with your peers, | when it's with your business stakeholders. High charisma | is useful in getting a job, in arguing for addressing | tech debt, in pushing back on unreasonable timelines. Why | would you not consider charisma in a job interview? | astrange wrote: | Why should you have to spend your time on being | charismatic with your own management if your job duties | require doing it with everyone but them? | SeanLuke wrote: | I have seen first-hand the negatives of unions in Italy: | there are downsides of powerful union control. But in the | US, a strong argument can be made that unions played a | very major part (along with the GI Bill of course) in the | growth of the the middle class from 1950 to 1980, and | their busting, starting with Reagan, likewise was | instrumental in the dwindling of the middle class and the | dramatic rise in wealth inequality. | droopyEyelids wrote: | This is the "sorting hat" the makes sure that person ends up | at the right company. | | Its not fun to lose your job, but that can be better than | being stuck just getting by at a company where your work isnt | appreciated. | benreesman wrote: | You're largely correct but I think your comment might not | nail the root cause (not saying you don't know this, just | that your comment doesn't emphasize it). | | When a market is competitive, the things that matter are | roughly: hard work, candlepower, and | optics/neurotypicality/maneuver in that order. | | When a market is fairly sewn up that order becomes roughly: | optics, candlepower, ethical flexibility, hard work in that | order. | | The hard-ass nerds who don't give a shit about corporate | culture du jour are treated like royalty when someone might | fuck your business up. | | While "purged" is a strong word, I take your meaning, and | whatever we want to call it, it happens when competition is | largely pro-forma. | | Human beings will do anything to avoid selecting on merit | except lose. That's just human nature. Being mad about it is | like yelling at the wind, but compared to even a decade ago, | I'm not sure how high I'd be holding my head in today's | competitive landscape for high-prestige achievement. | tempodox wrote: | The saddest thing is that some bosses _want_ throwaway code. | I had a short stint once in a company where the owner wanted | the web service rewritten from scratch every 6 months so they | could use the newest web framework and follow the current | fashion. He would hire a 5000 LoC per week hero on the spot. | andai wrote: | Tangential but I was doing a web app for a client and gave | a time estimate, which accounted for doing things properly | (i.e. learning a frontend framework first). | | He asked "can you do it faster" and I agreed, thinking I'll | make a throwaway version first and fix it later. Needless | to say the project was a disaster, rapidly became | unmaintainable. | | That's how I learned my job isn't to do what the client | asks, it's to make sure their project succeeds even if it | means making them (temporarily) unhappy. | [deleted] | nine_zeros wrote: | > That's how I learned my job isn't to do what the client | asks, it's to make sure their project succeeds even if it | means making them (temporarily) unhappy. | | And I learned that doing it my way will get me fired | because the manager has asked to do faster. | | The way I have learned to get around this is by making | the manager publicly document the request to go faster. | If they don't document, I don't see or act on it. Once | they document it, I happily go faster and let it all | crash and burn. Then when they inevitably try to blame | me, I point at the public documentation of the request to | go faster and let the blame fall on the person | responsible. | jareklupinski wrote: | that's great for covering your a, but the project will | still fail and no one will get value / praise for all | that time spent | | if time is the only actual concern for the project's | success, a good approach is to explicitly re-scope the | feature list and start asking managers things like: | | "do we really need feature X to release? can feature Y | wait until after beta? did the request for feature Z come | from a user or a stakeholder?" | | document all that too of course ;) but then at least | there is a chance for safety _and_ success | jonathanlydall wrote: | This sounds like possible malicious compliance. | | Regardless, it's an important life skill to learn that | it's generally not enough to ask people to do what you | want, you need them to actually "buy in" to what you | want, and then they'll actually care enough to at least | try make it happen. | | This applies to managers and their employees, or also | when trying to get on the ground employees to adopt a | product initially sold to their manager/execs. | nine_zeros wrote: | "Buy in" is what you use for people acting in good faith. | But managers aren't acting in good faith. They just want | it done so that they look good to their own bosses. They | don't actually care about the product/service. Their ask | to "go faster" is a bad faith argument where there is no | real need to go faster except for the manager to look | good. | | I don't feel the need to get "buy in" for bad faith | managers. | cjaybo wrote: | > but managers aren't acting in good faith | | An overly broad statement which, my experience, is not | true. Managers come in many shapes. | | Although, I suppose ironically, if you act in bad faith | as a response to this perception, then I think that | perception will quickly become true. | gremlinunderway wrote: | Why is asking for requests to be in writing an "act of | bad faith"? Literally cna't see a single outcome that | would be an act of bad faith here. | | If the project fails, and the manager tries to blame it | on you, they are de facto acting out of bad faith given | the request. Documenting it just identifies this. If the | project succeeds or fails, but no one blames you, then | the documented request is just there for the record. | ebiester wrote: | It depends on "when" along the timeline of the project. | | If we don't know if anyone will want the product, the | quality of the product is less valuable than validation of | product market fit. | | Later, I care much more about avoiding accidental | complexity and having a great technical foundation. | tilne wrote: | But you can't have the technical foundation later because | you've already built on something else. | adolph wrote: | > where the owner wanted the web service rewritten from | scratch every 6 months so they could use the newest web | framework and follow the current fashion | | This sounds like an improvement over the opposite, a code | base that is rarely touched and uses eol frameworks. | Software is a living thing and if you don't act as a | ruthless gardener you wind up a museum curator with 1990s | DEC hardware running in the 2010's. | | The right balance of staying current and not reinventing | the wheel is not trivial. | hnfong wrote: | If you choose the right frameworks which have sufficient | momentum to last you say 10 years, you don't have to put | yourself in the dilemma. | | And yes, 10 years is quite possible these days. Besides | the infamous Javascript framework churn, things are | moving quite a bit slower in recent years. | kagevf wrote: | > Besides the infamous Javascript framework churn | | reactjs came out in 2013, so it meets the 10y metric, but | it has some internal churn, such as classes, hooks, etc | adolph wrote: | "If you choose the right frameworks" is a big if. Even | within a framework, there is versioning and dependency | management to account for. Consider the log4j | vulnerability. The cost and risk of patching something | untouched for 10 years is higher than something touched | more recently. | | In part, this is due to the risks inherent to change have | been spread out over 10 years instead of backloaded to | the end. | | Practicing mitigating risks by proactively taking them | has value of its own. The parable of ergodic cakes shows | this.[0] What % of cakes will fail if 10 people each bake | one, versus one person baking 10 over time? | | https://luca-dellanna.com/what-is-ergodicity/ | bitwize wrote: | Hey, if the 1990s DEC hardware still works, and it'd be | more expensive to change it... | | There are PDP-11s running nuclear plants today with | support contracts to keep them running until 2050. | | PDP-11s. | adolph wrote: | That is a great example. By not taking account of risk on | the front end by embracing change, the system gets | progressively more expensive to maintain (extended | support contracts) and the risk of eventual inevitable | change grows higher. Further, the system becomes | progressively less valuable compared with newer systems. | dharmab wrote: | I've written several 100ks LOC/year at points in my career- | but exclusively when working on new projects. When | maintaining projects I might go a week at a time without | writing any code solo, or I might spend a week trying to | _reduce_ LOC. | dmoy wrote: | I think my net contribution of lines of code at my current | company is still negative. It was for a long time, but I | haven't checked in awhile so I'm not sure if it still is. | [deleted] | dharmab wrote: | Usually I end up adding more lines of documentation and | tests and removing lines of application code so it's not | easily measurable- on theme for this thread, heh | allenrb wrote: | I remember times at a few of my jobs, just absolutely | cheering for someone's PR that was filled with red. Good | times. | esafak wrote: | At my last company we had an architect whose only direct | coding contributions were deletions, because nobody gets | credited for cleaning up code. | jongjong wrote: | My problem in my last role when I read large Pull Requests | is that they tended to be way more complicated than they | should have been but because they worked and I couldn't | single out a small number of specific problems, I had no | choice but to approve. Still, I knew it would slow us down | in the medium and long term but this bloat is completely | invisible to management. | | It has become taboo to say things like "This code is too | tightly coupled", "You don't need to add an external | dependency for that", "The inputs to those methods are too | complicated; your components are micromanaging each others' | state", "You're violating separation of concerns", "The | cyclomatic complexity of this code is too high; you could | simplify all your if-else statements"... When it's not my | company, it's impossible to dismiss code when it works | right now, even though it is likely to break later. | hnfong wrote: | Somewhat unrelated, but it's true that it's sometimes | hard to give a reason to reject code that has a "funny | smell". | | Without going into specifics, there was a case where I | reviewed a PR, asking "this isn't usually how people do | file operations, are you sure this is really fine?" To | address my concerns, they even wrote a specific test | program to "prove" that there weren't any problems with | the code. I reluctantly approved the PR since I couldn't | just ask them to rewrite the whole patch due to just a | hunch. | | Lo and behold, after a kernel upgrade and file system | change, that weird piece of code caused a multi-week | panic for the whole team. The extra funny thing is that | the test program above made it trivial to confirm and | reproduce the issue once we identified this was the | cause. | throwaway92837 wrote: | Right. This is where you would think the AI assistance | could play an important role: | | Warning: it looks like you're trying to pack too much | crap into a single PR and your peers are unlikely to | understand what they are accepting. | dharmab wrote: | I sometimes use my job title as a higher level senior or | lead to say vulnerable things like: | | "This change is hard for me to read and understand" | | or | | "This is a large PR, and it may be difficult for me to | schedule time to review it. Can it be split up into a | series?" | | I also configure linters and code quality tools to | automatically flag some of the more egregious problems. | cratermoon wrote: | > "This change is hard for me to read and understand" | | Believe it or not, I consulted at one place where the | manager decided I was the problem because I was | consistently assessing problem code and team processes in | similar ways. She asserted that "everyone else | understood", even when they plainly didn't understand but | where just going through the motions. | | Said manager had a number of other issues as well. Worst | gig I can recall having in the last couple of decades. | ido wrote: | I would start being less diplomatic once I get the hunch | polite phrasing isn't getting through - "this code is | badly structured, brittle and will make debugging | harder". As programmers being tactless is expected so | might as well use it to your benefit. | cratermoon wrote: | In this case, I could have, but I felt my time was better | spent thinking about why things were complex and hard to | understand and made notes on that, mostly for my future | self. Whenever I found the opportunity, I would include | some of the reasoning and explanation, in written form, | in my feedback. I didn't get much out of that gig, but I | did end up with several thousand words of ideas and | observations. I wouldn't be surprised if some future | programmer on that project ran across something I left | behind and found it useful, or at least comforting. | | Edit to add: in 1:1s with the manager I was more direct. | About the best I can say about that is "at least I | tried". | jongjong wrote: | I can relate though I wish I could get into a position | that I could say such things and not get fired. In some | circles "This change is hard to me to read and | understand" would be interpreted as "I'm an aging | dinosaur who doesn't understand this new tech; you | youngsters are too clever for me." (though I realize how | completely wrong it is). | | I'm 33 but I feel like I already have to make an effort | to avoid the dinosaur label. I disagree with a lot of | modern tech trends but I simply cannot express my view | about them even though I could explain the problems very | clearly and logically and can provide far better and | simpler alternatives. Unfortunately, hype does not yield | to reasoning... And sometimes, you're too far into the | tech debt and it doesn't make financial sense to rewrite. | padjo wrote: | I'm 10 years older, my experience has been that getting | to ask stupid questions is one of the joys of | age/seniority/security. Very often everyone else in the | room has the same stupid question but you get to look | like a stone cold genius because you were willing to risk | looking silly. | marcosdumay wrote: | Don't mislead yourself, that benefit comes exclusively | from security. Age and seniority only contribution is | some weak correlation to security. | jongjong wrote: | I guess maybe in 10 years I'll be working with 30 year | olds who understand and value of that approach as I do | today. | | My current reality is that I'm a 33 year old working with | 20 year olds who think they're geniuses who are going to | take over the world in 5 years; from that viewpoint, I'm | essentially a failed engineer because I didn't build a | Facebook, Uber or AirBnB even though I had 10 years to do | it. | hgsgm wrote: | From seeing your posts, I think you have a psychologica | lock that under mines your self-confidence. | reneherse wrote: | I'm curious what type of company has these team | demographics. Startup, agency, SMB, bigcorp, academia, | or? | [deleted] | [deleted] | erik_seaberg wrote: | My secret weapon (rarely needed) is "I got this | eventually, but someone may have trouble quickly figuring | it out during a 3 AM outage." | [deleted] | pc86 wrote: | I'm honestly not familiar with this "I had no choice but | to approve" mindset. In the greenfield projects I've | worked on there was always at least one person, sometimes | several, who had the authority to just say "no, this is | far too complex, scratch it all and we'll meet tomorrow | to discuss next steps." Sometimes it ended up with | breaking the PR into several more manageable pieces, | sometimes it ended up with a wholesale rewrite / refactor | of that component. | jongjong wrote: | I didn't have enough leverage in that company to say such | things and the project had already been running for a | couple of years when I joined (not greenfield). | | The last greenfield project which I managed from scratch, | we didn't have this problem because all developers shared | the same mental model of what we were building before we | wrote any code. We had a lot of discussions beforehand to | get to this shared understanding. There was literally not | a single PR which surprised me throughout the entire | project and I'm sure none of my PRs were a surprise to | any of my team mates either. There was plenty of | disagreement throughout but it was always fully resolved | through discussion before we started coding each major | feature. | nerdponx wrote: | In my experience it pops up when company politics get | involved, or somebody gets attached to their idea about | how certain things should or shouldn't be done. In that | case often the safest thing you can do for your own | reputation and appearance is to leave some very gentle | notes that a certain thing maybe could have been done | differently, but approve it anyway on the grounds that it | works for now. That way you're not seen as an | obstructionist, but if things do go wrong you at least | have a written record so you can say "I told you so". | hn72774 wrote: | "You don't need to add an external dependency for that" | "You're violating separation of concerns" | | I've found that kind of feedback to be useful actually. | And when giving similar feedback it is received better | with a small change in wording to make it more about the | code and not the person. Even if that is the intention | the wording does matter. For example: | | "An external dependency isn't needed here, try | implementing with XYZ instead." "Split this function into | x and y for better separation of concerns" | | Removing the "you" removes some resistance to receiving | the message . | ted_bunny wrote: | The imperative can rankle too. I like passive voice or | "let's" statements. | marcosdumay wrote: | It sucked being that person back then too. | | The idea of measuring everything and acting on the numbers | you can get is from the 19th century. Managers have been | doing that same kind of practice since then, with the same | kind of result (it's a very reliable result), without a | change. | tengwar2 wrote: | Acting on the numbers you get is not intrinsically a | problem: it's what the action is. Looking at how fast | stories, function points or whatever get closed is | important for planning what you can get done in a given | time, and that can be crucial for project management and | managing customer expectations. It's not acquiring the | information which is a problem; it's not using the metrics | which is the problem. The problem is not understanding what | the metric can be used to represent (project velocity), and | what it cannot (individual productivity); | ResearchCode wrote: | Those are not important at all, or the top software | projects would be using them. Linux kernel is doing fine | without the velocity point story tickets. Agile | "planning" which is used in worse software projects is | snake oil. | krmboya wrote: | It may be useful to collect metrics to get insights, but | if they are publicized as a measure of performance, it's | likely they'll be gamed, making them less useful. | namaria wrote: | Being superficial wasn't invented in the 19th century. | People are very oriented to things they can see, measure | and touch, when the most impactful and insightful people | are often the silent care takers, the teachers, those | keeping things running smoothly. | | When you do things right, people won't be sure you've done | anything at all. | vegetablepotpie wrote: | A lot of that is from Frederick Taylor, who invented | "scientific management". | | He did experiments where he would have workers shovel piles | of ash from one side of a line to the next, giving them a | new shovel size each day. Found that the ideal shovel size | holds 21 pounds [1]. | | The ideological assumption of his work is that management | exclusively does the thinking and the workers exclusively | do the doing. This falls apart when the workers have unique | knowledge and insight that management does not have. | | [1] https://www.mentalfloss.com/article/63341/frederick- | winslow-... | marcosdumay wrote: | > when the workers have unique knowledge and insight that | management does not have. | | AKA every time. | | AFAIK, Taylor himself wasn't nearly as radical about | doing measurements and only acting on them nor about | managers deciding everything and not listening to the | workers as Taylorism preaches. His work was one of the | many, many management theories that was completely | modified to appeal to incompetent power-hungry wannabe | dictators (and yet blamed on the person proposing the | original theory). | Erikun wrote: | It might be from the great book The Idea Factory by Jon Gertner | (p 135). 'In the midst of Shannon's career, | some lawyers in the patent department at Bell Labs decided to | study whether there was an organizing principle that could | explain why certain individuals at the Labs were more | productive than others. They discerned only one common thread: | Workers with the most patents often shared lunch or breakfast | with a Bell Labs electrical engineer named Harry Nyquist. It | wasn't the case that Nyquist gave them specific ideas. Rather, | as one scientist recalled, "he drew people out, got them | thinking." More than anything, Nyquist asked good questions.' | avanai wrote: | The most impressive thing about this story is that _they | figured out the answer_. They did the research, and nailed | down that it was Nyquist who was was the productivity | booster. It's the exact opposite of the OP's story, where | management tried to fire the Nyquist-equivalent. | Strilanc wrote: | Honestly, I'm kind of skeptical of the answer. I'm not | saying that talking with Nyquist wouldn't be useful, | probably it was, but what's stopping a dozen other things | at least that useful from being part of the answer? | Tarq0n wrote: | They found an answer that felt right to them. The | reseachers weren't blinded to the context they were working | in, and their hypothesis is essentially unfalsifiable so I | would take it with a grain of salt. | liquidpele wrote: | All they figured out was that the smart people hung out | together. | sound1 wrote: | IMHO this is the right answer :) | jamestimmins wrote: | Yeah that's the one! Thanks for finding the reference. | agumonkey wrote: | You also need a fertile soil. In many many places, curiosity, | exploration is passively frowned upon. | tfgg wrote: | Harry Nyquist isn't exactly an unknown engineer who doesn't | have his own achievements, though - not sure why people are | saying he would be fired in a modern company! | smallerfish wrote: | DORA seems ok as a big company framework, where different teams | of similar sizes can be roughly compared using the scores, and | the CIO or CFO can have some satisfaction about being able to | avoid spending money on non-producers, without engineers feeling | like they're being individually spied upon. Without this | accountability, engineering managers may let non-performers coast | for a variety of reasons. | | For small companies, engineering managers & direngs should be | aware enough through working with the team members individually & | through PR review who is performing and who isn't, and not need | to deploy metrics. | peter_retief wrote: | I often wondered why s/w development is always a rush at the | expense of quality. | | Well I do know why just don't agree with the principle of seeing | how much the company can get out of a developer in x hours. | JKCalhoun wrote: | Having been in the industry since the around 1990, I can tell | you that in the first half of my career we had no code reviews, | no scrum, no story points, no unit tests. | | How on earth, you might wonder, did we ship software that | worked? | | I then saw all these things come down the pike one after | another during the last half of my career. | | Clearly to me every one of these benefit management who found | themselves apparently unable to function without numbers, | graphs, data of some sort. It has been a very obvious (to me) | power struggle: management trying to get the upper hand and | wrest any and all power (and autonomy, and decision making) | from engineering. | | It has been sad to me to have heard some new engineers come on | board who like these things. It's just as well I retired when I | did: it's probably me that is the odd man out now. | notpachet wrote: | Scrum and story points I agree with, but unit tests? You'll | have to pry those out of my cold, dead hands! | JKCalhoun wrote: | That's fine. Myself I have little use for them, I prefer | functional testing. (Also, before unit tests we leaned on | parameter checking in the live code -- a kind of always-on | unit test I guess). | | Management though use the "percent coverage by unit tests" | as some sort of safe/buggy software metric. | | Management at one team I worked on was pushing for minimal | 95% coverage with unit tests. I thought it was odd that | they were so singularly focused on this issue. The | impression I had was a that they felt that if you have full | code coverage with unit tests, and the test pass -- you can | lay off the QA team because you are assured that you are | shipping perfect software. | throwaway92837 wrote: | I would be interested to know your career history in more | depth. | | To my understanding even IBM in the 70s had stupid ways of | measuring productivity (KLOCs?). | JKCalhoun wrote: | I wrote games until 1995, then started at Apple. I worked | at Apple until 2021 when I retired. | | Apple very much was engineer-driven when I began. That | changed when Steve Jobs returned. | whstl wrote: | I'm pretty sure there were companies doing stupid things in | the old days but in my experience, back then managers were | supposed to know what developers were doing, and if they | were delivering value or not. | | They did all that by walking around, chatting with | everyone, helping devs, assigning tasks depending on the | expertise level, sometimes doing boring work (like manual | testing) to help devs, etc. | | Of course, if a manager that has to handle Jira and Scrum | meetings all day, then it gets difficult to do that. | datavirtue wrote: | Definitely cultural. I have been watching engine teardown | videos. The difference between the Japanese motors and | American motors is stark if you know what to look for. | Engineers were clearly in charge of designing every aspect of | the Japanese motors. American engines have so many | compromises and they flip-flop on internal parts and designs, | that look whilly-nilly in comparison. | | It's obviously cost cutting niggling and get-it-out-the-door | histrionics causing this chaos. There is significant impact | to longevity and durability, and required maintenance. Very | wasteful from a global warming perspective. | | Watch out for these late model ICE engines...do your | research. If it's "newly redesigned!" step back and dig in. | throwaway92837 wrote: | Management doesn't always know what they are building is | correct. | | They are going to manage risk of low quality with risk of wrong | product. | nine_zeros wrote: | If management doesn't understand what is being built, maybe | they are not fit to be a manager? | Philip-J-Fry wrote: | I wish I could pair program more. I have so much knowledge to | give other members of my team. Domain knowledge, programming | knowledge, common pitfalls, etc. You get a code review pass at | the time of writing the code, and it means you have more | opportunity to change things for the better. Once it's written | there's not much appetite for drastically changing working code | during code review unless there's a really good reason. | | But it's usually contained to someone like a junior calling me up | and saying "can you help me?". The answer is always "yes of | course!" and I share as much as I possibly can. But it ends | there. | | I just want to sit down and show them things. Teach them in a way | that makes things "click" the way I found they clicked with me. | But I don't think management really values this approach. We get | siloes of knowledge and then when someone leaves it's all hands | on deck to transfer that knowledge. | | I'm often brought onto projects as a firefighter because I'm seen | as productive. But I think the more important thing for the team | would be to have me upskill everyone else below me. But for | whatever reason, it's hard to get that point across to | management. I can see myself in a few people and that they have | potential, they just need encouragement. | sodapopcan wrote: | Pairing gets a lot of hate and is very misunderstood. It can be | terrible, though, if the org doesn't encourage and teach it. | There are also lots of things about pairing that are | misunderstood, especially that things take more time. | | I was on a team that paired all the time and it's sort of | ruined me for anything else. We switched pairs daily and | everyone would pair with everyone else (on the team). When a | junior joined the team they would very quickly lose their | junior status. | rjbwork wrote: | Apparently I am pretty lucky. My managers are explicitly asking | me to help rescue a project AND get the dev who did most of the | work upskilled and following some of our patterns from some | other successful projects. It is hard to know whether they are | actually taking my advice and changes to heart and integrating | them into their knowledge base and mindset, or just accepting | that they're being asked to make changes by me and doing them. | | Mentorship is hard, regardless of management buy in :/ | foolfoolz wrote: | this post is really strange because it actually describes a | good environment | | - code isn't changing in code review except for really good | reasons | | - people who need help are reaching out | | - projects that need help get additional help brought in | | what else are you looking for? this example is about as pair | programming as it gets at most places. they're called silos | when people don't like them and layers of abstraction otherwise | but they're the same thing: no team will have 100% shared info | on all parts and knowledge transfers on exits are a decent step | to bridge this | | if you want to teach the team more, teach them more. usually | the best way to do this is in code review. it's direct comments | on code. write a good review you want more people to see? post | it in the chat. set up additional time to share ideas with the | team. all of these things you can do as an IC while producing | code | | sorry but this post comes off as "i'm smarter than everyone." | i'm guessing the reason management hasn't gotten your message | is the message isn't clear. what exactly do you want to do? and | what do you need their help for? | Philip-J-Fry wrote: | I don't think code reviews are the _best_ way to teach. | Because for a start, you're usually working with a complete | task. Someone can have a perfectly fine pull request that | implements the feature or solves the bug, but it might not be | the best way of going about it. | | Now, as a reviewer your spidey sense tingles and you get the | feeling there's a better way. But now it's significantly more | effort to pull that change apart or start from scratch and | experiment with a new approach, then write this all up on the | pull request with the caveat "but what you've written works, | so in the interest of time we can merge this". | | Pair programming would get you on the right track from the | start. You are able to assist an inexperienced dev and guide | them through the process step by step. Imbuing your | knowledge, raising questions, suggesting fixes. This is | exactly what the blog post describes. The developer was seen | as unproductive because their time was spend pair programming | rather than directly doing the work themselves. | | I don't see how my post comes across as "I'm smarter than | everyone". I know things that less experienced developers | don't know, and that's a fact I know from talking to them and | reviewing their code. But the culture just isn't there to be | able to spend significant portions of my day effectively | being their teacher (which I would love to do!). Instead it's | often "the blind leading the blind" while the more senior | members of the team are off delivering important projects and | not having the capacity to imbue their knowledge onto the | less experienced members of the team. | | It's a culture thing and I wouldn't say it's a good | environment for nurturing new staff. Spending 2 hours in a | Teams call or at someone's desk is uncomfortable for both | parties in a company that doesn't encourage this sort of | collaboration. And so there's a sense to not "waste someone's | time". The person you're helping sees themselves as a burden | rather than seeing themselves as a student. And as a teacher, | you're conscious of the other work you're supposed to deliver | because it's not expected for you to be spending significant | parts of your day pair programming. | liquidpele wrote: | Have juniors plan out work first in design doc form and broken | up into small deliverables. Helps to catch things early when | they start down a rabbit hole. | raincom wrote: | In almost all companies, even seeking help is frowned upon. One | ex-Microsoft manager, now a senior Manager at Atlassian, called | that 'hand holding'. Some actively don't want to help out | others, due to PIP/bonus culture. At Amazon, some team members | explicitly give bad advice when asked for help. That's why we | have this culture of "lone rockstars", who spend a lot of time | to learn without being mentored. | BirdieNZ wrote: | > One ex-Microsoft manager, now a senior Manager at | Atlassian, called that 'hand holding'. | | Which senior manager is this, out of interest? | jonhohle wrote: | If someone is intentionally giving bad advice, that sounds | like they deserve some anytime feedback. (is that still a | thing?) That is definitely not thinking like an owner. | rawgabbit wrote: | Seeking help isn't the problem. It is priorities. Usually the | best developers are tasked with the more impactful tasks | whose deadlines must be met at all costs. As a manager, I | would view my task is to shield said developer from | distractions so he can save my butt because my job is also on | the line. | segfaltnh wrote: | Frankly it sounds like you need to make this happen. I don't | know your company culture but at places I've worked Staff+ | engineers aren't meant to wait around for permission to be | catalysts and mentor other engineers. | Philip-J-Fry wrote: | I'm usually the catalyst for change, but that's usually | around tech and process. It's more effort for me to try and | change my managers mind on what our development culture | should be. The company I work for has a reputation for being | a bit of a grinder and I've managed to help reduce that | reputation in my team gradually at least. | | But at the moment I have work to do and deadlines to meet, so | it's a hard sell to suggest stepping back from active | development and focusing more on incubating our less | experienced devs. Even though it's better in the long term, | and my manager would even agree on that, important short term | projects just take priority. | nevertoolate wrote: | Optimizing team efficiency is a team effort. It is a false | dichotomy that you either work on "important project with | deadline" or do mentoring. There are deeper structural | problems that you need to solve first imo. | politelemon wrote: | Yes very similar. It makes me very happy when I'm called over | by a junior proactively. Not mainly because I'm able to help | them, the real reason is that they sensed something about the | problem that needed a second pair of eyes, and they didn't | waste time. That's them gaining intuition and experience and I | get really happy for them. | | I don't actually say it though because I don't know how to | express it. | jimmaswell wrote: | Pair programming sounds so stressful and unproductive to me. | You can't read someone's mind. Any interjections while someone | is in the middle of coding can't be more than distracting noise | most of the time. And I would constantly feel self conscious | that I'm taking too long to write something, googling or asking | Copilot stupid questions, etc. Reviewing _after_ the programmer | believes it 's ready to review makes much more sense to me. | Though Copilot can be very helpful as an artificial pair | programmer. | teirce wrote: | The point of pair programming isn't really to be talking to | someone while they are coding a known solution. It's to work | through and discover a solution together to an unknown. In | this sense, you're kind of both in the same headspace | together, and can have a conversation without necessarily | breaking focus. And I would venture that almost any question | that comes up in pair programming would either come up later | in code review, or could be hand-waved with "yeah, I plan to | fix that with X" and move on. | | The important part of pair programming isn't really the | programming per se, it's the discussion. | | It also requires some amount of conversational art. As for | being self conscious about things, you would have poor | coworkers who make you think that or some unfounded worry. A | good pair programmer can have a discussion without making you | feel like an idiot - much the same as a good code review. | psychphysic wrote: | [flagged] | yjftsjthsd-h wrote: | Yes, that is what was written. Would you like to say | something about it? | psychphysic wrote: | [flagged] | awithrow wrote: | Just say whatever point it is you are trying to make | instead of making people guess | psychphysic wrote: | I'm actually quite enjoying how divisive a simple quote | can be. | | I wonder how often I've made a comment and gotten no | engagement. This quote seems to have gotten more | engagement than the original comment. And quite emotive | engagement. | | Makes me wonder what that means. Is it genuine curiosity? | Or is the quote saying something that the original | commenter couldn't see themselves? It's interesting they | suggested if I was insinuating something negative about | them. | | Importantly, they did not ask me. They told me. That too | tells us something about what pairing experience with | them would be. | yjftsjthsd-h wrote: | > I'm actually quite enjoying how divisive a simple quote | can be | | The word for that is "trolling". | | > Importantly, they did not ask me. They told me. That | too tells us something about what pairing experience with | them would be. | | I asked and you avoided answering. What does that tell | us? | psychphysic wrote: | > The word for that is "trolling". | | Oh that is fascinating, so highlighting a verbatim quote, | in context can be trolling? | | What that makes me think of is that people are in denial | about what the quote tells us and have displaced those | feelings on to me! Amazing stuff. | | > I asked and you avoided answering. What does that tell | us? | | This is interesting because no you didn't ask me what it | tells us. You asked if I wanted to say something and I | answered that the quote stands alone. | | Really interesting stuff in this thread! | johnnyanmac wrote: | >I think the quote stands alone. | | I disagree. | | >People are free to draw inferences about how it would be | to pair with this programmer and why they are rarely | paired. | | you could. but there's not much to work with. could be | helpful but "too valuable" to be a mentor compared to a | director or pitching sales or doing conferences. Could be | overly pompous and makes things worse. Could simply be | office culture and pair programming for more than 15 | minutes isn't a thing (like all my previous jobs). | | All are extreme assumptions that aren't productive to | talk about. Personally: I don't know if I'd want to be in | those cultures that enforced pair programming X times a | week, but I wouldn't mind , say, a day a month where I | could shadow a lead or vice versa and get some intimite | knowledge, be it in correcting some pitfalls in my coding | or seeing how a more experienced mind ticks. But the | chance hasn't come up yet. | Philip-J-Fry wrote: | I'm rarely paired because pair programming just isn't | something we do in the company outside of just helping | people with their little issues. It's not an encouraged | practice. There's nothing deep about it. It sounds like | you're trying to insinuate something negative about me. | sodapopcan wrote: | I assume they are insinuating that you are coming off as | arrogant and only interested in teaching. They should | definitely just say so, though. | | In a good pairing environment everyone is learning from | everyone. You didn't explicitly say you were looking to | learn for others though you also didn't explicitly say | you weren't. As far as I'm concerned, in the best pairing | environments everyone is always pairing with everyone | else, not just seniors with juniors. There is the idea | that seniors can actually learn from juniors too since | juniors will question things seniors haven't thought | about in a long time and are living with "I do it like | this because it's the way I've always done it" syndrome. | | PS, love the username :) | Philip-J-Fry wrote: | >In a good pairing environment everyone is learning from | everyone. You didn't explicitly say you were looking to | learn for others though you also didn't explicitly say | you weren't. | | Well that's the thing. The only reason I'm in a senior | position at this company is because I never stopped | asking questions and I still don't stop asking questions | and learning from people more knowledgeable than me. I | used to spend hours sitting at one guys desk just asking | questions and listening to rants and just gathering | knowledge. | | I learned that this was the fastest way to progress and | get better at the job, but I'm not finding that juniors | and other less experienced devs are doing the same thing | because they're worried about wasting people's time. And | people are less likely to encourage this behaviour | because they have high priority work. I got away with it | when I joined the company because the rate of change was | so much lower and so things generally just took longer. | sodapopcan wrote: | Yep, I feel this is a general broken thing about our | industry. I'm very against the whole, "let juniors do | easier stuff," mentality. I'm also very against the "you | must make big disruptive changes in order to get ahead," | as well. The latter often results in people just looking | in the wrong places to try and improve things, often by | introducing complexity instead of removing it. | | I'm pretty jaded by it all. These days I work for a | company whose primary business isn't technology and I'm | much happier. | Stratoscope wrote: | Some 20 years ago, I worked at a moderately large software | company that sold a desktop application for Mac and Windows. The | team had mostly Mac experience and they were just getting their | feet wet with Windows. So naturally the Windows version had some | problems. | | At the time, I was known as a "Windows expert", so they hired me | to help improve that version and help the team get more familiar | with Windows programming. | | I would often spend the first part of the day on what I called | "house calls": visiting other developers' offices to either pair | program or troubleshoot bugs or just talk about Windows API best | practices and the like. (Yes, we all had private offices!) | | After a while, one of my colleagues asked a question that stuck | in my mind: "How can you afford to be so generous with your | time?" | | Sure enough, a few months later I got a review with a mediocre | rating and a comment: "Your productivity hasn't been quite we | hoped, especially considering that the rest of the team has | gotten more productive lately." | | Which was exactly what I thought they had hired me for! | fabianholzer wrote: | What happened after the mediocre performance review? Did leave | for greener pastures asap? Did you start to optimize for their | performance metrics, and stop being generous with your time? Or | could you manage to convince somebody high enough above you in | the org-chart that they actually hired you for what you thought | they did? | kvirani wrote: | I hope that feedback didn't discourage you from continuing with | your approach to software development and teamwork. | shortrounddev2 wrote: | I am the same way with my coworkers. I spend a lot of time | helping juniors with their code and doing code review. My | boss talked to me and told me to stop helping out so much and | focus on my own tickets. | elliotec wrote: | It's a balance. Sometimes it is worth spending a ton of | time leveling up your team (teaching them to fish), and | sometimes it's much more helpful to have you do the work | yourself (we ran out of food and you're our best | fisherman). | uxp8u61q wrote: | It's easy to say that until it affects your paycheck. | bullen wrote: | "ideally as tangible business impact expressed in dollars saved, | generated, or protected" | | Then exclude non-export numbers and divide that by the number of | KWh used to generate that revenue. | | Edit: Please comment on down vote, otherwise we learn NOTHING! | Octokiddie wrote: | What's the metric for programmers who prevent the team from | building the wrong product? | mlhpdx wrote: | Wonderful. In rowing there is a practice called "seat racing" | where different combinations of people are rotated in and out of | the eight positions to determine the combination that is the | fastest. Individual strength is an indicator but it's the team | speed that determines who is in the boat for races. The | inevitable result is that the fastest combination rarely includes | the eight strongest rowers. There is very often one or two | "magical" people who don't look better "on paper" but make almost | any boat faster when added to the mix. They have subtle ways of | improving the set, rhythm and power of others. Not all coaches | take this happily and resist it, with the obvious result of fewer | wins. | | This is very, very analogous to software teams. It's the mix and | results that matter most. | gerdesj wrote: | "This was cascaded through the organisation, and landed in our | team in terms of story points delivered." | | Bingo. | | If I ever hear anyone in my company attempt to deliver a sentence | like that then I will go postal. | gumby wrote: | One really good developer I worked with wrote excellent code and | also terrible code that had to be replaced immediately -- and | both made him great to work with. | | The value of writing good code is self explanatory. You probably | use some of his code today. | | But he was also great in a firefight: customer is dead in the | water and it might be our fault. He'd show up cold and "jam his | fingers in the holes in the dam": quickly figure out what was | wrong and then rapidly write and install the most hideous | spaghetti code that cot the customer up and running. Code that | could not be checked in, or be refactored. Eye-bleeding stuff. | Someone would have to take the time to engineer a proper fix, but | the immediate crisis was averted. | | I was actually much more impressed by the latter skill -- among | other reasons it's simply rare. Also he was just a nice guy and | everybody loved him. | | (Won't name him since I described some of his code as hideous) | johnnyanmac wrote: | >I was actually much more impressed by the latter skill -- | among other reasons it's simply rare | | Not exactly something to encourage, but it sounds like he has | experience in competitive competitions, where generating code | to a problem on the fly is necessary. It's not something you | can't learn yourself, but rote memorization of common problems | and solutions (to the point where you can mechanically type | down some algorithm from memory) is the bane of my existence | prerok wrote: | The only 10x coder I knew was the one that managed to deliver | stuff (almost) on time but also took the time to explain things | to other (junior, me at the time) programmers. Such Tims are | sadly rare and I think I should start working towards becoming | like one. | ironman1478 wrote: | It's interesting reading this because this has been my role for a | few years. I've also had similar problems with management wanting | to pip me and things like that. Luckily, my company does peer | review in addition to top down review and that has shown that I | provide value even if it's not always coding. | | I think the managers who don't understand this type of role are | the ones who were largely mediocre engineers, but were able to | get to that position regardless. They just don't understand the | process of engineering and that's it's not just churning out | tickets or doing the bare minimum if you're working on something | non-trivial. | roenxi wrote: | I dislike the just-so aspect of these sort of stories. I'd expect | exceptional programmers to do unusually well on most metrics. | | But that is balanced by the threat of people trying to use | metrics to measure developer productivity. It doesn't seem to be | possible, any metric falls apart. If people are focusing on a | metric, the greats aren't going to be leading any more. It'll be | some junior who has misunderstood the system and has accidentally | trained themselves to game metrics. | | Metrics do not drive good software. Repeatable processes love | metrics. Repeatable software suggests bad development practices | because that is a big hint of a library or bigger opportunity | that nobody on the ground properly identified. | kstrauser wrote: | > I'd expect exceptional programmers to do unusually well on | most metrics. | | ...when they're actually hands-on-keyboard writing software. | The best programmers I know write as little code as possible. | | Product team: Hmm, we need to do a thing that looks very | complex and difficult. | | Senior dev: I'll start making a project plan and story | breakdown. | | Very senior dev: That sounds like a special case of a thing we | already have. That should take about an hour. | | Of course that's a generalization, but I think the trend holds. | The most illustrative metric for the best engineers wouldn't be | "lines written" but "lines avoided". | OnlyMortal wrote: | In my experience, the best programmers write the least amount | of code they can get away with. | | I don't mean they use the latest fashion library, I mean the | amount of code they type is less simply because they | understand the problem and know how to write a minimal | solution. | | This makes their code easy to read and therefore easier to | debug. | | It's worth noting that the less you type, the fewer bugs | you'll create. | | To be fair, this is often due to the coder having significant | experience. | Fluorescence wrote: | > Very senior dev: ... that should take about an hour. | | Red flag! | nevertoolate wrote: | Why do you say red flag? It is an exaggeration, of course, | nothing is purely 1 hour. Rather it is 1 hour work in flow | state, which is about 2 pomodoros, which is about 6 | bulletpoints, which is about 1/4 of a day's programming | effort. Just about right for a 1 point card by a senior who | only sit down to code when they kinda exactly know what to | write | ChoHag wrote: | [dead] | Fluorescence wrote: | Talking about flow state and estimates? The red flag just | gets bigger. You are asking me to show you that Santa is | not real. | | A "very senior dev" will not be handing out "1 hour" | estimates to a product team. An hour of what? Billable | hours? Wall-clock time? It's just not the right framing. | You will notice a good senior dev will be incredibly | cautious about any commitment and not hand out "ego | estimates" like one hour. They will make commitments that | they can keep and it will be terms of releases. | | They will have experienced a decade of "one hour jobs" | that have exploded so they know that even the error bars | on a slam dunk 1 hour of butt-in-seat time means it's not | a 1 hour estimate. An hour of butt-in-seat coding time is | not a 1 hour of employee time - they've got that training | course, those interviews, they need to support that | thing, oh the presentation, the intern to look after. | That feature you are copying? What is it copy-paste or | some refactor generalisation? Measure that shit in weeks. | Oh and there are 6 feature branches overlapping that area | already. You also have a policy to improve the tech debt | of this crusty code. There is also the documentation, | training material, translations, the test suite, code | review, the issue tracker... But hey, you can do it, you | are x10, you boot up your machine and... your IDE is | crashing because of some security update. Doesn't count | in that one hour eh?! | | That's not even the main issue, odds are the first over | the shoulder demo of this new feature will be just the | start of eliciting the real requirements. | kstrauser wrote: | That sounds nightmarish. | | If I say 1 hour, I mean that I know exactly which knob | needs to be twiddled, perhaps because I wrote it in the | first place, and that there'll be a pull request ready | for review an hour from now. | | That's clearly not always possible. Sometimes it is. If I | say that it is, then I can deliver it. | Fluorescence wrote: | Scale ruins everything but that's where you will find | "very senior devs". | | > Sometimes it is. | | What's the worst case of the other times? These "one | hour" estimates are the golden path, nothing goes wrong, | minimum. It's not the average of horror shows or an | amortisation all the related support work required to | sustain efficient development over time. They are often | too coding-focused and ignore the level of interpersonal | work to agree and sign off features or to change code in | collaboration with others. Talking through a demo can | take more time than the code. | nevertoolate wrote: | You are both right and need to take a break :) | eesmith wrote: | > I'd expect exceptional programmers to do unusually well on | most metrics. | | Not if they game the metrics, as a way to force change. | | A classic example of an exceptional programmer doing worse on a | (bad) metric is at | https://www.folklore.org/StoryView.py?story=Negative_2000_Li... | , titled "-2000 Lines Of Code". | | "Some of the managers decided that it would be a good idea to | track the progress of each individual engineer in terms of the | amount of code that they wrote from week to week. ... Bill | Atkinson ... thought that lines of code was a silly measure of | software productivity. ... [He] made region operations almost | six times faster. As a by-product, the rewrite also saved | around 2,000 lines of code. ... when it was time to fill out | the management form ... he thought about it for a second, and | then wrote in the number: -2000. ... after a couple more weeks, | they stopped asking Bill to fill out the form, and he gladly | complied." | erickf1 wrote: | All I had to do was read the title of this article and the first | sentence to understand that this is an example of what's wrong | with the software development industry. I would rather work with | people that act like good people and are human, than to work for | the idiots measuring your every breath looking for a reason to | fire you. | [deleted] | bighoki2885000 wrote: | [dead] | vikramkr wrote: | So basically he just had the wrong title? Sounds like a great | engineering manager or lead (in a company where that involves | less code writing) or something. But his title is an IC role. But | if he's spending all day pairing and not writing code then yeah - | that manager seems to be correct, that's not his job? Why isn't | he taking on any stories? | orpheansodality wrote: | pairing is taking stories, it's two people working on one task | together. | vikramkr wrote: | So then he hasn't been taking zero, "literally zero" stories | like the article says. | sodapopcan wrote: | The article said zero stories according to Jira. | | This is, of course, rectifiable in Jira by allowing a | ticket to have multiple people assigned to it. | | ...unless they aren't using Jira and some tool that doesn't | allow this. | tetha wrote: | The thing is: Different levels of experience need different | measures of success, up to the point of leeway from the normal | measurements of success. | | Like, for someone in tier 1 / tier 2 helpdesk, or the regular | developer pushing relatively normal tickets through, simple | ticket or story throughput is one indicator of productivity. As | long as you pair it with some success measurement, like re- | reports from people within a short time, or work caused by the | implementation. Or just feedback from the rest. Someone has to | put down code to make the feature work in the end. | | But this changes when you get more specialized and overall more | experienced. If we bring a new technology into the team, my | productivity based on the first metric will drop to zero. I'll be | busy supporting other people. Or, the incidents on my desk will | be far more weird ones. Other people get clear click paths and an | exception. I had to debug JVM crashes due to faulty hardware. | That took a bit longer than an afternoon in a debugger and adding | an if-statement, if I may embellish a bit. | | But that's why soft skills become important. It's concerning how | little that manager knows about his team. But it's also | concerning how Tim didn't make sure his manager knows what's | going on. For example if we're bringing in new tech, I'm | informing superiors first that I'll prioritize support of team- | members with the new tech just below business critical incidents | and I most likely won't do any regular work for some time. | chasing wrote: | Alternate lesson: If your manager is telling you to complete | tickets, don't go months and months _not doing that thing_ until | you're on the verge of being fired because -- despite being a | valuable member of the team -- your manager is all confused. | | Communication skills. Week 1 Tim could've brought up the issue of | overall developer productivity with his manager and his manager | would've at least been aware that Tim wasn't just playing | Minecraft all day. | _boffin_ wrote: | Maybe Tim could have also added his name to the tickets as he | was pairing and helping the others complete them... | gardenhedge wrote: | Certain tools (Ahem MS) don't allow more than one person to | be added to a ticket | chasing wrote: | Yup. This idea that a developer can work his or her genius in | a dark corner is flawed. | | If you aren't communicating what you're working on, it's hard | to get credit or recognition. And it's not an ego or bragging | thing: It's just fundamental team communication. | | For example, there may have been constraints that the manager | knew about that sheer velocity was key for some reason. Or | maybe the manager disagreed that Tim was adding enough value | floating around all day. Who knows. But if Tim and his | manager were in open communication, at a minimum there | wouldn't be confusion _so great_ that a good engineer almost | got shit-canned. | sjtgraham wrote: | This is not an argument on the merits of story points or metrics | but Tim could have just put his name on the stories alongside the | folks he helped. Problem solved. | wonderwonder wrote: | I worked at a company for a couple years where you had to produce | 10 points a week or you got pipped. Didn't matter if you were a | jr or sr. I worked on a few teams there and you could immediately | tell how the teams measured points by the stress level of the | developers. | | Teams that attempted to measure the points in good faith were | stessed and most of them showed signs of burn out. They regularly | worked 60 hours a week. | | Teams that gamed the system and understood the impossible task | they were assigned always gave the highest points total to a | ticket they could or broke it down into smaller achievable | tickets that continuously added to their points totals. These | teams were filled with happy stress free developers. | | In an environment like that playing by the rules is a suckers | game. | | When I eventually quit, every sr engineer at the company; 7 | total, followed me within 4 months. | throwawaysleep wrote: | We called that Scrumflation at a past company. Didn't finish | everything for the week? Claim the ticket was done and open a | bug for the uncompleted work. | vegetablepotpie wrote: | The ironic thing is that may have generated exactly the | outcomes management wanted. | | I've worked at places where it was more important for | management to know what to expect than to achieve raw | productivity towards a goal. | | The people who were estimating in good faith may have assumed | that management was acting in good faith. Whereas a lot of | projects are created aspirationally or have artificially short | deadlines to "motivate" people. The stress they incurred may | have just been for the emotional satisfaction of a manager and | not have provided any more value than that. | [deleted] | snarf21 wrote: | Goodhart's Law - "When a measure becomes a target, it ceases to | be a good measure" | crazygringo wrote: | > _...or broke it down into smaller achievable tickets that | continuously added to their points totals. These teams were | filled with happy stress free developers._ | | But that is part of the _point_ of scrum. To break down stories | into consistently stress-free achievable stories, rather than | big risky ones filled with unknowns. | | I'm not saying this was a good workplace, it doesn't sound like | it at all. But to me, it sounds like the devs who you think | gamed the system, were mostly behaving the way scrum is _meant_ | to incentivize. Happy, stress-free development that delivers | _consistently_ improving software. | | (Minimum point totals per week leading to inflated point values | is terrible management, though.) | liquidpele wrote: | You're missing the point, it's not about scrum it's about | making the work look like it's way more than it is to pad the | metric. | epanchin wrote: | The point of scrum is to provide employment for consultants | and non-engineers. | | I left engineering for an engineering job in finance. No | scrums, no POs, just trader driven development and I haven't | looked back once. Glorious. | wonderwonder wrote: | OP here. You are right, but the minimum point totals | eliminates any benefits that can be achieved from scrum, it | forces engineers to incentivize survival over project | momentum. If a story is really a 3 pointer but I know that if | I close 2 3 point stories in a week then I am pipped, | suddenly those 3 point stories are 5 point stories. | | On the teams that played fair, it was a mix of sr. and jr. | and the sr. measuring that story at a 3 meant the jr. was | working the weekend. Over and over again. | | Note: On the happy team, we had almost no supervision, not | even a scrum master. We just looked out for each other. That | 3 point story often suddenly became an 8 as the end of the | week approached and no one blinked. That team incidentally | was the only one that consistently got good reviews from | management. | [deleted] | [deleted] | backendanon wrote: | When there's a good, engaged PO then Scrum can work. | vegetablepotpie wrote: | I think what the GP means by "gaming" the system is that the | teams did all the technical activities of scrum without | providing much or any business value. | | The issue with scrum or any process that involves estimating | is that every software project will inevitably have some | risky element or difficult to estimate task that is essential | to the execution of the project. Scrum will incentivize teams | to avoid the essential work and guide them towards work that | is easier to estimate. | | Certainly having a good product owner can mitigate this | because she can do the work of identifying and breaking down | the intractable to something more actionable. | | But in that case you're depending on the people on the team | to make good choices. Smart people can do that regardless of | the development process they're using. It's unclear what | value scrum brings to teams at all. It doesn't make bad teams | work any better and it restricts how smart teams can operate. | | One thing that scrum does give is it provides management | _metrics_ they can use to measure performance. | wonderwonder wrote: | "every software project will inevitably have some risky | element or difficult to estimate task" | | You are exactly right here. At this company though, that | risk on a personal level could mean a pip. So the happy | teams inflated the story points massively to ensure that | any or no risk was accounted for and they survived to code | another day. | Consultant32452 wrote: | >Teams that attempted to measure the points in good faith were | stessed and most of them showed signs of burn out. They | regularly worked 60 hours a week. | | I read this as the teams that attempted to measure in good | faith did a poor job at estimating. If management tells you | that you are required to deliver 10 points per week, then 10 | points should take you 40 hours with rare exception. Whatever | other idea you had in your head of what 10 points "should" mean | is simply incorrect. | fnimick wrote: | > Teams that attempted to measure the points in good faith were | stessed and most of them showed signs of burn out. They | regularly worked 60 hours a week. | | So in the short term, the company benefited, yeah? They got | more work out of the same people than they would have if they | didn't apply the pressure. | | Reminds me of an old boss I had who would flat-out say that to | get a project done we would "hire someone and burn them out" - | he planned to only get six months of useful work out of | someone, and if they were stupid enough to stick around for | high stress and low pay, that's just a benefit to the company. | | (I didn't last very long there either) | johnnyanmac wrote: | Sure, if they were going to do layoffs in 6 months anyway, I | guess this anti-pattern was coporate's wet dream. them | quitting means they don't even have to bother with severance | packages. | | But it sure is a shame we're past the days where you actually | want to retain and nurture tribal knowledge. imagine if other | engineering disciplines simply hopped companies every 2 | years, or if they cut half their civil engineers for a better | earnings call (thankfully, he government doesn't have | "shareholders". just taxpayers to disappoint). | ResearchCode wrote: | I don't think they did. If churning out low-quality code for | 6 months was good project management, the Linux Foundation | would be doing it. | wonderwonder wrote: | "So in the short term, the company benefited, yeah" In hind | sight, they did not. The company is publicly traded and | recently sold itself for parts to avoid bankruptcy. They are | in a very niche industry and are notorious for their | production environment going down, and massive data | corruption in their clients data set. There are worse things | as well but I am trying to be at least a little anonymous | here. | acdha wrote: | The question is whether you get more volume but lower | quality: a team doing 60 hour weeks on a regular basis tends | to be a team baking in lots of technical debt and skipping | "slow" things like "do we really understand what our users | really need?" or "did we correctly architect this?" | Everywhere I've seen this there's been a lot more rework and | things like high infrastructure bills because people have | [correctly] learned that the business doesn't care about | quality. | icambron wrote: | The horrifying part of this is | | > Instead we would measure stories delivered, or it may have been | story points (it turns out it doesn't matter), because these | represented business value. We were using something like Jira, | and people would put their name against stories, which made it | super easy to generate these productivity metrics. | | I have never worked anywhere where middle management measured | individual engineers via issue-tracker metrics. That seems almost | implausibility dysfunctional. It's not just measuring a | hilariously wrong thing at the wrong level of granularity, it's | also disempowering the line manager from evaluating their own | people. Is this a real thing companies do? | wetpaws wrote: | [dead] | 3pt14159 wrote: | Well, I like the story here, but it's kinda against a bit of a | strawman. Don't get me wrong, I'm not losing the overall point of | the piece, a point I agree with, but that said a metrics focussed | manager could have simply added an "adjunct" label to the stories | and had this "worst programmer" add themselves to stories as the | non-lead developer. | | Ultimately the best way of measuring programmer productivity is | by the assessments of the programmers on the team. This isn't as | easy as it seems. For example, I once worked on a team where the | best Heroku guy just had the absolute wrong idea about "easily | understandable python code" since he would prefer to raise and | catch an exception instead of rely on a built-in to test | attribute existence or type compatibility. But nobody could get | around large scale Heroku deployments like this guy. The juniors | understand this nuance less well than seniors do, but even so, it | does sorta come out in the wash. Your team does know its best | people and they're usually happy to say it in a private one on | one. | jmull wrote: | > a metrics focussed manager could have simply added an | "adjunct" label to the stories and had this "worst programmer" | add themselves to stories as the non-lead developer. | | The story includes a part where they dropped the crappy metric | and changed to a better one. | lcuff wrote: | <Ultimately the best way of measuring programmer productivity | is by the assessments of the programmers on the team. > | | Maybe ... Productivity itself is difficult to define. Different | people will value aspects of the work differently | | At one Internet Advertising company I worked for, the founder | had written most of the original code. Written in the late | 1990s, it was Perl, JavaScript, HTML, and SQL jumbled together. | Completely ignoring the notion of 'separation of concerns'. | Huge amount of code duplication. Source code control? Phhht! | Nary a test in sight. Ran programs as root to work around | permission problems. Self modifying code ... you betcha. He | worked right on the production servers. He could and would push | out a feature the same day a customer asked for it. VERY quick | to make the customers happy. The company was being bought out | at the time I came on board. Pocketed his millions, headed down | the road, yay for him. | | My own take is that the company would never have 'made it', if | a software team had been hired to 'do it properly'. | | After his departure, as we rewrote our code base to | 'professional' standards, much time was spent refactoring that | produced few or no new features. How productive was that? A | very complex question. | | As a digression, I sometimes found his original code easier to | maintain that the stuff done 'the right way' because there WAS | no 'separation of concerns'. I didn't have to hunt in a | different part of the source tree for where something was done. | It was all 'right there'. YMMV. | | In the end, 'productivity' is way more subjective that we'd | like. | rightbyte wrote: | > I didn't have to hunt in a different part of the source | tree for where something was done. It was all 'right there'. | YMMV. | | This is my take too as I have gained experience. The way I | did code from the get go, was the overall best way. Long | function that did the stuff one thing at a time. Like no | functions called from different parts of the call tree. I | breeze to debug and understand or modify. | bee_rider wrote: | I believe that's the conventional approach in Python, though? | It is a duck-typing language, try-except is a legitimate way of | seen if an operator works on an object, and objects should do | sensible things with operators. | | The funny example is that the hasattr built-in just tries to | getattr, and then catches the exception to tell if it has the | attribute. | 3pt14159 wrote: | If you are calling something immediately, a try-except is ok. | If you are calling with a try-except just to simulate hasattr | or getattr then why do we have the built-ins in the first | place? | bee_rider wrote: | "Just try and then handle the exception" is a pretty weird | paradigm for this sort of thing, to those of us who come | from more typical languages. So I suspect they just | included hasattr to make us more comfortable. | corethree wrote: | Conventions are changing. Modern python is shifting to type | checking with external type checkers. | [deleted] | nickserv wrote: | The two are not incompatible. I'll type all class | properties and functions, but still use try/except on dict | access or function calls. | corethree wrote: | It's not about incompatibility it's about safety. You | drive with air bags or you don't, those two concepts are | NOT about incompatibility. It doesn't even make sense. | | If there are situations where you have no choice but to | drive without airbags, those are holes in safety. | | Essentially if you have to have runtime checks to prevent | the program from full on crashing those are holes. Not | everything is checkable with static checks but the way to | go is to move as much of your code away from runtime | checks as much as possible. | eesmith wrote: | I agree. In Python terms "Easier to Ask for Forgiveness than | Permission" (EAFP) is preferred over "Look Before You Leap" | (LBYL). | | https://docs.python.org/3/glossary.html#term-EAFP comments: | | > Easier to ask for forgiveness than permission. This common | Python coding style assumes the existence of valid keys or | attributes and catches exceptions if the assumption proves | false. This clean and fast style is characterized by the | presence of many try and except statements. The technique | contrasts with the LBYL style common to many other languages | such as C. | | and there are any number of essays on the topic, like (random | DDG search) https://programmingduck.com/articles/lbyl-eafp . | sdfgioafnui wrote: | Exceptions are for exceptional circumstances. An object being | a certain type is not an exceptional circumstance, not even | in a dynamic language. You should never be surprised by the | type of an object unless your program has serious design | flaws. | | The fact that the language doesn't have your back means you | need to be _more_ careful about types, not less. The type of | the arguments is a function precondition. It 's the callee's | responsibility to document preconditions and ideally recover | cleanly from a violation, but the caller's responsibility to | ensure preconditions are met. Illegal states should be caught | early, not allowed to percolate until an exception is thrown. | | I don't much care if what I just wrote is "Pythonic" or not. | I don't think too much careful design up front is responsible | for every Python codebase I've ever seen reading like | Finnegan's Wake. | bee_rider wrote: | You aren't required to like the conventional way they do | things in Python. | | I dunno. I don't love Python for big projects either. If we | want to go around and tell all the people using this very | popular language to stop shipping their successful products | because they look messy to us, I'll happily take the second | shift (after you), haha. | zug_zug wrote: | So I used to kind of think like you, but I think that's just | not a practical approach. Yes, you could alter the system in | this 1 exact situation if you know exactly what to change, but | there will be dozens of other failure modes too (engineer | releases code that breaks in 2 months, engineer deliberately | mis-estimates story points, engineer doesn't comment their code | so that nobody else on team can do certain work, etc) | | So if you have a manager who is a dialed-in coder who's going | to keep updating the jira-point formula based on spending more | than 1 hour a day reading code, and keep tuning it around the | ever-more creative loopholes engineers employ, then yes, you | may end up with a workable system. But never yet in my long | career have I seen that. | 3pt14159 wrote: | No, no, you misunderstand. I _agree_ with the point. I just | think it was made against a strawman and could have been made | even stronger. I 'm not for metrics on stories to award | productivity points. I'm for one-on-ones and success-as-a- | team evaluations. | ww520 wrote: | Stories like this happened is because managers want to treat | software development as a manufacturing process. | TuringNYC wrote: | I heard stories from past employers where they wanted bi- | monthly increases in scrum velocity. | | "OK, last sprint the team did 150 points, so we should do 160 | points this sprint." | | The funny thing is that point estimates just went up to | compensate for productivity gain demands. "More productivity" | yay! | ozim wrote: | Well I think that is the worst that can be. | | Maybe best as well because you quickly know to pack things up | and look for a new job. | yabbs wrote: | Stories like this happened is because managers | convolvatron wrote: | ok. most managers suck. but ultimately you have to have at | least one adult in the room. | olddustytrail wrote: | Indeed. To keep the manager in check, right? | solarmist wrote: | And usually it isn't the manager, even if they want to be. | They're managers because they're good at projecting to | their boss's wants and needs. | ryeguy_24 wrote: | If you don't own your company, you are always measured on optics. | If the person who employs you does not optically see your value, | you don't stand a chance working there. If employment is the | measurement, optics will always be important. For those who | disagree, I would argue they are arguing on what would be ideal. | Sure, it would be ideal to have a fully meritocratic performance | system but if someone else is in charge of your employment or | performance evaluation, your success is 100% based on their | opinion of you. How do they get that opinion? It's the optics | whether valuable for the company or not. | | Just to be clear, I'm not talking about programming skill or | value. I'm talking about employment and evaluations which I think | most people are commenting on. | | And also, it's not mutually exclusive. I know many people who are | very productive and also manage their optics well. | tastysandwich wrote: | When I joined my company, I was introduced to this dev who'd been | there since the start. | | His English wasn't great. His Javascript wasn't "modern" - he | kept using callbacks etc. He often poo-poohed ideas the younger | wizz-bang devs had. And so I was warned - basically he's an old | curmudgeon, set in his ways, he can't take any criticism but | he'll dole it out, a pain to deal with. | | I quickly learnt how untrue that all was. OK, his code isn't | great. BUT he's 100% committed to delivering customer value. He | understands the ins-and-outs like no one else. He thinks through | every scenario from the customer's perspective, and absolutely | NAILS it every time. The young devs didn't like him because he | didn't give a shit about "GraphQL versus REST" or "Hapi.js vs | Express vs Koa vs whatever". | | Where the other teams would avoid involving him in design | conversations, I'd pull him in straight away. And our team reaped | the rewards of integration projects that delivered right out of | the starting gate, rather than customers kicking them right back | with complaints. | m3kw9 wrote: | Had this same issue, new young devs adding the latest | programming tricks and saying yes to every fking thing as if a | no will get hurt their "I can do anything" mentality. Others | were not pushing back as it may make them look stupid or | something, they treat the project like a social event. | | A lot of these little things came back to bite hard | obiefernandez wrote: | I was a colleague of these guys at Thoughtworks and my favorite | most relatable tidbit was telling client managers "no". | | High performance teams at Thoughtworks really had almost full | autonomy over how they worked. At a particular credit card bank | in Delaware circa 2006, Jay Fields and I demanded (and got) flat | screen monitors, our own conference room to use as a dedicated | bullpen and most importantly, unfettered access to the open | internet via custom holes in their firewall. Crazy times. | andy_ppp wrote: | I worked with a copywriter who did similar stuff and made the | team tick. It was great to watch him effortlessly get everyone | doing the right thing for the project and it worked both ways, | he'd communicate effectively with the dev why we needed to hack | things and with the business about getting us extra time for | certain things. It lead to a better project with a manageable | amount of technical debt. | | He was let go and the project became a lot less successful and | enjoyable, once he was gone a large group left soon afterwards... ___________________________________________________________________ (page generated 2023-09-02 23:00 UTC)