Comments by "Daniel Sandberg" (@ddanielsandberg) on "Why Pull Requests Are A BAD IDEA" video.

  1. 14
  2. 6
  3. 4
  4. 3
  5. 3
  6. 3
  7. 3
  8. 2
  9. 2
  10. 2
  11. 2
  12. ​ @appuser  Not sure how to answer that directly... I can say this: Pair programming is not - two - people - programming. Pair programming is "two people programming". It's collaborative, not cooperative. It's the difference between having fun with your friends and having fun with your spouse. That doesn't mean everyone spend all their time pairing. It's like a relationship, we spend a lot of time "collaborating", but it's occasionally punctuated with times of alone time and deep focus. You'll probably end up divorced if you insist that your spouse spend all their time with you and vice-versa. It's like everything, it takes time to learn and get comfortable with. If you have never pair programmed and spent your career "sitting alone in your corner, with your headphones on, typing code" it's not easy, and quite frankly you've been mismanaging your job. Deep collaboration and high bandwidth social interaction is a very important part of SWE. Unfortunately too many of us thought that working in software would be the same as when we got into it as a hobby. We were either lied to, or lied to ourselves. We are not getting paid to do our hobby of just writing code and it's easy to be disenfranchised when it turns our to be different than we thought. And thus we tend to invent all these handoffs and roles where we push the uncomfortable things away... we add layer after layer and build walls and "specialist groups", all so that we won't have to change and do that scary thing we don't really want to do... And that is what I reacted to; I interpreted it as if you wanted to add yet another specialist group to avoid changing/keep the status quo. I may have overreacted... 😕
    2
  13. 2
  14. 2
  15. Open Source is a different context. Linus created Git to slow down changes *because* he's the author of the biggest open source project there is - The Linux OS kernel. FB/PR was built *for* open source, where you have 1000's of unknown contributors all over the world and a few trusted committers. Pretty sure Dave said [paraphrased] "async, pre-merge, blocking review using pull requests in your *team and organization* is where the problem lies." And I don't buy the "introvert" argument for one damn second. There are two sides to that argument. 1. It's used as an excuse so that developers can sit alone in their corner, with their headphones on, writing code in isolation, getting paid to do their hobby. Probably why FB/PR has become so popular... It avoids interactions. It defers integration. 2. For 50 years the industry has been built on the notion of "the lonely geek" and the "superhero programmer"; attracting a certain kind of personality. If the situation is that "people can't collaborate with other humans" we probably did that to ourselves and it's time to stop digging the hole deeper. Programming is fundamentally a social activity and too many of us thought that choosing it as career would mean to continue what we did when we learned on late evenings in our rooms when we grew up. It's still a job and we have to do things that's uncomfortable. We need to become much better of getting out of our comfort zones. That doesn't mean we need to sit in each others laps all the time. Most of the time we should pair and collaborate in small groups, punctuated with moments of deep focus work alone or pair. It's not all or nothing. PS: I'm an outgoing introvert.
    2
  16. 2
  17. 2
  18. I have no answer shorter than an entire book on this... The problem is if team members are working on multiple projects at the same time then you don't actually have a team. That's like having a football team playing 5 different matches at the same time. This is a symptom of something being wrong with how things are prioritized and/or how the organization is structured... The job of a senior/lead is not to gatekeep, to check everyone's work and approve of it. A senior can't behave like a curling/helicopter parent and protect juniors from themselves all the time. That tends to hold back peoples learning and growth, and also teaching people to not trust themselves. You need to find a way of working where everyone can contribute, learn and make mistakes, without a senior handholding them or taking the company down in the process. I don't care what that is, as long as it's a minimal measure and not someone gatekeeping everything (the seniors might as well do all the work by themself in that case). You should be able to find a way of working where in the end "everyone" would make similar (or better) decisions, even when the seniors aren't in the room. After all, the job of a senior engineer is to create more senior engineers. There are no "do this"-answer except "get good at pair and group programming" and build "defenses" into the system of work so that the blast radius of mistakes is as small as possible. Dave has another video here "A Guide To Managing Technical Teams" and Dan North has a video from "Goto conference" called "Beyond developer", check them out and show them to your team next time you have a "tech friday" get-together.
    2
  19. 2
  20. 2
  21. 1
  22. 1
  23. 1
  24. 1
  25. 1
  26. 1
  27. 1
  28. 1
  29. 1
  30. 1
  31. 1
  32. 1
  33. 1
  34. 1
  35. 1
  36. 1
  37. 1
  38. 1
  39. 1
  40. 1
  41. 1
  42. ​ @prdoyle  Wall of text incoming - duck and cover! 1. Sure, but it is not integrated until it's ON main. 2. Even if you rebase your branch, you still only check integration with what has made it into main this far. Everything else that is not on main is an unknown. As an example: If everyone "merge into main" at the end of the day or end of sprint, you won't know if everything actually integrates until that time. That is way to intermittent and is similar to old school waterfall "integrate and test at the end", although at least it's a more frequent than once per year. If everyone merges their code into main several times per day - fine - but what do you need FB/PR for in the first place if it only lasts a couple of hours anyway? Seems like a lot of ceremony. I have actually been there, twice, kind of - in a highly compliant industry. We had armies of testers, reviewers, configuration management people, merge bosses, process and branches, and yet we had very expensive production issues all the time. Then I took over as tech lead for the most certification-critical components. The only changes we made was that we skipped all the ceremony/merges/handoffs and started doing proper XP/CI/TBD and our response time became 10x better and our production issues went down by 2 orders of magnitude. That alone saved the company $2M per year. A few years later a bunch of managers decided that "everyone must do FB/PR because we have to be compliant (BS, yadda, blah) and we read on the internet that that is everyone else is doing so we should too" and it became dogma and enforced by people not doing the actual work. After that we had slowed down and were right back in the tank and half of us had left within a year. *We didn't need FB/PR - we were doing better without them already!* Because so many are used to treat version control as a kind of personal junk-drawer where we throw things into a branch, fiddling around for a while, have it being broken for hours/days, flaky and unstable and then pick up the pieces into a whole at the end, then squash merge and PR; they get stuck in that cycle. 1. This is often a sign of bad design or issues with the culture. 2. There is a world of difference between "half baked", "incomplete" and "messy crap" - in XP/CI the software should still always work properly. 3. Code reviews are primarily there for learning and feedback. Async blocking reviews actually slows the organization down and have questionable effect on the quality. And even so not all changes requires review and not all reviews have to be blocking - see Martin Fowlers 3 types of reviews "ship-show-ask". FB/PR proponents are stuck 100% on "ask". You can always refactor and improve things after the fact, after it's on main, and even after it's gone live. Something people seem terrified of.
    1
  43. 1
  44. 1
  45. 1
  46. 1
  47. 1
  48. 1
  49. 1
  50. 1
  51. 1
  52. 1
  53. 1
  54. 1
  55. 1
  56. 1
  57. 1
  58. 1
  59. 1
  60. 1
  61. 1
  62. 1
  63. 1
  64. 1
  65. 1