[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-when-to-pair-en":3,"blog-related-when-to-pair-en":29,"blog-adjacent-when-to-pair-en":62},{"id":4,"slug":5,"title":6,"excerpt":7,"content":8,"cover":9,"tone":10,"author":11,"publishedAt":12,"updatedAt":12,"readingMinutes":13,"featured":14,"tags":15,"category":19,"seoSettings":28},99,"when-to-pair","When Pairing Is Worth It","Pairing is expensive: two people, one job. So we only use it in specific situations.","\u003Cp>Pair programming gets a lot of discussion. In practice, full-time pairing is unrealistic for a small team. But in defined scenarios it saves enormous rework and communication cost, and deserves deliberate scheduling.\u003C\u002Fp>\n\u003Ch2>Where it pays\u003C\u002Fh2>\n\u003Cp>The first version of a core path. Modules like payment, permissions and data sync are costly to get wrong, so two people design and build them together.\u003C\u002Fp>\n\u003Cp>Diagnosing tricky defects. One drives while the other researches, running two threads in parallel beats one person context-switching.\u003C\u002Fp>\n\u003Cp>A newcomer&#39;s first unknown module. Working the first two stories together is far faster than alone-plus-Q and A.\u003C\u002Fp>\n\u003Ch2>How we pair\u003C\u002Fh2>\n\u003Cp>Roles are explicit: one writes, one reviews and searches, swapping every half hour so nobody idles.\u003C\u002Fp>\n\u003Cp>Timebox to two or three hours; efficiency falls after that, so we stop.\u003C\u002Fp>\n\u003Cp>Write down what happened: what blocked, what worked, captured in the task or a document.\u003C\u002Fp>\n\u003Cp>The test is simple: is the cost of getting this code wrong higher than two people&#39;s shared time?\u003C\u002Fp>","","blue","佳益方圆团队","2026-06-13T11:10:00+08:00",1,false,[16,17,18],"Team Culture","Pair Programming","Collaboration",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":10,"kind":26,"sortOrder":27,"count":21},4,0,"team-culture","Team and Culture","Company events, tech sharing, team building and hiring culture that show the daily life of the Jiayifangyuan team.","users","article",30,{},[30,40,51],{"id":31,"slug":32,"title":33,"excerpt":34,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":35,"updatedAt":35,"readingMinutes":13,"featured":14,"tags":36,"category":39},89,"thirty-minute-weekly","The Thirty-Minute Weekly Share","No new technology, no industry trends. Just the pitfalls of the week and how they were solved.","2026-10-11T09:00:00+08:00",[16,37,38],"Knowledge Sharing","Growth",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":10,"kind":26,"sortOrder":27,"count":21},{"id":41,"slug":42,"title":43,"excerpt":44,"content":9,"cover":9,"tone":45,"author":11,"publishedAt":46,"updatedAt":46,"readingMinutes":13,"featured":14,"tags":47,"category":50},90,"what-code-review-is-for","What Code Review Is Really For","Review is not fault-finding. It is letting another mind walk through your code.","cyan","2026-09-29T10:13:00+08:00",[16,48,49],"Code Review","Engineering Practice",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":10,"kind":26,"sortOrder":27,"count":21},{"id":52,"slug":53,"title":54,"excerpt":55,"content":9,"cover":9,"tone":56,"author":11,"publishedAt":57,"updatedAt":57,"readingMinutes":13,"featured":14,"tags":58,"category":61},91,"docs-start-with-templates","Documents Start With Templates","People avoid writing docs mostly because they do not know where to start. A template solves most of it.","teal","2026-09-17T11:26:00+08:00",[16,59,60],"Documentation","Knowledge Management",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":10,"kind":26,"sortOrder":27,"count":21},{"previous":63,"next":81},{"id":64,"slug":65,"title":66,"excerpt":67,"content":9,"cover":9,"tone":68,"author":11,"publishedAt":69,"updatedAt":69,"readingMinutes":13,"featured":14,"tags":70,"category":74},80,"database-pool-outage","Incident Review: Running Out of Database Connections","The system went down at nine on a Monday morning because one connection was never closed.","slate","2026-06-15T11:10:00+08:00",[71,72,73],"Retrospective","Incident","Database",{"id":75,"parentId":21,"slug":76,"name":77,"description":78,"icon":79,"cover":9,"tone":10,"kind":26,"sortOrder":80,"count":21},3,"project-retrospective","Project Retrospectives","Real project records from zero to one, covering problems, solutions, lessons learned and final outcomes.","clipboard-check",40,{"id":82,"slug":83,"title":84,"excerpt":85,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":86,"updatedAt":86,"readingMinutes":13,"featured":14,"tags":87,"category":91},118,"after-saas-retreat","Choosing Software After the SaaS Spring","Subscription enthusiasm cooled; procurement logic returned to pragmatism: total cost and data ownership.","2026-06-11T11:10:00+08:00",[88,89,90],"Industry Watch","SaaS","Procurement",{"id":92,"parentId":21,"slug":93,"name":88,"description":94,"icon":95,"cover":9,"tone":10,"kind":26,"sortOrder":96,"count":21},5,"industry-watch","In-depth analysis of internet, software and digital industry trends with our own point of view.","globe",20]