[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-who-joins-client-visits-en":3,"blog-related-who-joins-client-visits-en":30,"blog-adjacent-who-joins-client-visits-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":29},101,"who-joins-client-visits","Who Should Visit the Client","Client visits are not only for sales and project managers. Developers' presence is undervalued.","\u003Cp>We compared: the same requirement described by the client and relayed through two layers arrives distorted far too often. So we started having developers join key client conversations directly, and rework dropped visibly.\u003C\u002Fp>\n\u003Ch2>Three moments developers should attend\u003C\u002Fh2>\n\u003Cp>Requirement discovery. Hearing the business firsthand, developers can tell courtesy from real pain.\u003C\u002Fp>\n\u003Cp>Solution demos. The first reaction to an interface or flow is something developers need to witness themselves.\u003C\u002Fp>\n\u003Cp>Post-launch follow-ups. Real complaints and unexpected praise calibrate judgement better than reports.\u003C\u002Fp>\n\u003Ch2>What to do there\u003C\u002Fh2>\n\u003Cp>Staying silent is fine; observe and record. The order in which clients click often differs from design assumptions.\u003C\u002Fp>\n\u003Cp>Ask about boundary conditions on site: data volume, network environment, who uses it, what happens on error.\u003C\u002Fp>\n\u003Cp>Write notes within half a day, while memory is fresh, and send them to the project group.\u003C\u002Fp>\n\u003Cp>People who write code should hear problems themselves; no relayed requirement document is as accurate. Visits cost far less than misunderstanding.\u003C\u002Fp>","","teal","佳益方圆团队","2026-05-20T13:36:00+08:00",1,false,[16,17,18],"Team Culture","Client Communication","Requirements",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"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","blue","article",30,{},[31,41,52],{"id":32,"slug":33,"title":34,"excerpt":35,"content":9,"cover":9,"tone":26,"author":11,"publishedAt":36,"updatedAt":36,"readingMinutes":13,"featured":14,"tags":37,"category":40},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,38,39],"Knowledge Sharing","Growth",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":42,"slug":43,"title":44,"excerpt":45,"content":9,"cover":9,"tone":46,"author":11,"publishedAt":47,"updatedAt":47,"readingMinutes":13,"featured":14,"tags":48,"category":51},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,49,50],"Code Review","Engineering Practice",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":53,"slug":54,"title":55,"excerpt":56,"content":9,"cover":9,"tone":10,"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.","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":26,"kind":27,"sortOrder":28,"count":21},{"previous":63,"next":80},{"id":64,"slug":65,"title":66,"excerpt":67,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":68,"updatedAt":68,"readingMinutes":13,"featured":14,"tags":69,"category":73},82,"migration-three-runs","Retrospective: Three Reruns for a Hundred Thousand Rows","The first run errored, the second disagreed on totals, the third passed. Each failure exposed a different problem.","2026-05-22T13:36:00+08:00",[70,71,72],"Retrospective","Migration","Legacy",{"id":74,"parentId":21,"slug":75,"name":76,"description":77,"icon":78,"cover":9,"tone":26,"kind":27,"sortOrder":79,"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":81,"slug":82,"title":83,"excerpt":84,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":85,"updatedAt":85,"readingMinutes":13,"featured":14,"tags":86,"category":89},120,"domestic-database-migration","Observations on Domestic Database Migration","Migration is the easy part; the next three years of stable operation is the hard part.","2026-05-18T13:36:00+08:00",[87,88,71],"Industry Watch","Database",{"id":90,"parentId":21,"slug":91,"name":87,"description":92,"icon":93,"cover":9,"tone":26,"kind":27,"sortOrder":94,"count":21},5,"industry-watch","In-depth analysis of internet, software and digital industry trends with our own point of view.","globe",20]