5 ms·
Pair programming means writing code during a meeting. If you want to avoid wasting effort on coding up an inadequate design, the solution is design docs, not sy
by legerdemain 5y ago
Pair programming means writing code during a meeting. If you want to avoid wasting effort on coding up an inadequate design, the solution is design docs, not synchronous meetings.
- rixed 5y agoMy thoughts exactly, but I'm surprised how hard it is to change the usual code review based routine where the design is only revealed with the actual code and tests when everything is done and it's too late to discuss the premises. My best guess is that developers just love code reviews. But now that I think of it, maybe they rather loathe writing plain English. Maybe there exist some simple yet more or less formal language that could be used to write design docs?
- legerdemain 5y agoEverywhere I have worked, code "review" was a cargo cult of people mechanically rubber-stamping each other's changes with zero context or consideration. And these weren't particularly dysfunctional companies!
- watwut 5y agoI worked in a place where it was not like that. And it was dysfunctional. Instead, people nitpicked to death and tried to one-up each other with findings. There are loooong arguments over completely irrelevant details. There were multiple rounds of review, sometimes changing the code there and back again. People attempted to code into review comments. And the expectations changed every week, there was no stable standard. It was more about taking control and showing yourself more caring by finding increasingly insignificant things and then insisting on them.
- legerdemain 5y agoCode reviews are a smell.
- TameAntelope 5y agoNot wanting someone to review your code is a bigger smell, IMO.
- pferde 5y ago"Only children and fools speak in absolutes." -someone, somewhere, I don't remember. Code reviews can be a good thing or bad thing, depending on what each party brings in and intends to get out of them. Painting them unequivocally as bad is rather silly.
- regularfry 5y agoCode reviews are one of the very few software practices that there's good evidence in favour of. This is not necessarily in conflict with your statement.
- ryohkyo 5y agoOops, and I thought civil engineering was messy. Time to switch back to civil engineering, at least it is, more civil than this.
- nicoburns 5y agoI reckon if you have all senior developers, and design considerations are being dealt with / communicated about in other places (e.g. ahead of time, before the code is written). Then this is largely how things should go: a quick once over to try and spot obvious mistakes. I've worked in companies where code review was like this and it worked pretty well.
- TameAntelope 5y agoPair programming is a way of transferring tacit knowledge that's literally an order of magnitude more effective than trying to document that tacit knowledge, mostly because documenting tacit knowledge is extremely difficult. But ultimately it's a culture thing -- if you're hired into a culture that values pair programming, you're hurting your team by not also valuing pair programming, and vice versa (you can't make a bunch of introverts enjoy spending hours with someone giving them guidance over their shoulder). Honestly, being an introvert here is a hinderance to growth; it's vastly superior to run through a problem as a pair when someone has better knowledge about that problem than you do.
- corpMaverick 5y agoI had to google this one. "Tacit knowledge is the intelligence we have that is gained through the personal and professional experience you've learned both in your current role and previous jobs. It's the knowledge that's difficult to explain and challenging to document"
- erik_seaberg 5y agoPairing for knowledge raises the bus number from one to two, which doesn’t help for that long in the current market for devs. Documentation is what endures.
- TameAntelope 5y agoI worry you missed the "documenting tacit knowledge is extremely difficult" part. Tacit knowledge is notoriously hard to document in a way that successfully transfers the knowledge from one person to another. Pair programming is at least an order of magnitude more effective, if not more.
- erik_seaberg 5y agoIf two people build a feature, two people are slowly forgetting how and why until they move on, and nobody else gets it at all. It is easier than documentation (which I agree is hard enough to more than double the dev time), but it only postponed the problem a little without solving it.