@baldur Thank you! This was well written and puts a coherent shape on the dissonance that has utterly confused me for a while now.
For some, shit work with no purpose is what they believe the work is. By accepting that, I can understand how they feel genuinely excited about LLM coding.
@baldur Great essay! I largely agree with it.
It's a throw-away line, but you say that "code review is the norm even though it’s largely useless as practised".
Why do you think it's useless/how could it be practiced better?
For my two cents:
I feel like code review is a bad way to catch bugs (yet another reason that "humans check all the AI output" is doomed to failure).
But I do think of it as a good way to keep a codebase consistent and to share knowledge between team members.
@GuillaumeL @baldur Interesting! The blame game bit rings true, at least in the more toxic environments I've been in. Though I'd say I've more often seen indifference than blame -- code review as a tedious chore, not as a part of a collaboration between you and the other developer.
Re pair programming, my first dev job was at a place that did mandatory pair programming, and I don't think it was good for me.
It worked when it was two people with similar skills/context, but...
(1/2)
@GuillaumeL @baldur it fell apart when it was two people with a big power/knowledge differential.
If the more experienced person was really deliberate it could become a learning experience for me as the junior, but that was rare.
When it works, it works, but I do think there's something for banging your head against the code individually too.
(2/2)
I don’t think this is true. It comes from software engineering studies done in the eighties, particularly at IBM. Admittedly few places do rigorous reviews the way IBM documented.
@lain_7 So, me and @GuillaumeL are specifically talking about the pull request style of code review, the one that was popularised by GitHub and is quite popular these days in tech and software dev, especially web.
Quite a few modern software dev practices have diverged considerably from the original methods while still keeping the names. TDD doesn't look like original TDD. Code review doesn't look like original code review. Agile isn't agile. Etc.
The two worlds you describe are utterly alien to me.
This article made me realize that i’ve always been in a third world of software development, one which depends on software quality, with colleagues who actively explore and evaluate new techniques, adopt the ones that work, and know how to explore and adopt best practices.
Perhaps it helps that most of my colleagues have worked in software for decades — and are the kinds of senior people who studies show do see productivity gains from adopting AI tools.