[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-categories-en":3,"blog-index-project-retrospective-2-en":56,"blog-all-posts-en":152},[4,16,23,31,39,48],{"id":5,"parentId":6,"slug":7,"name":8,"description":9,"icon":10,"cover":11,"tone":12,"kind":13,"sortOrder":14,"count":15},6,0,"founder-notes","Founder Notes","Reflections from the founding team on business, management and product, documenting the growth of a software company.","pen-tool","","blue","article",10,20,{"id":17,"parentId":6,"slug":18,"name":19,"description":20,"icon":21,"cover":11,"tone":22,"kind":13,"sortOrder":15,"count":15},5,"industry-watch","Industry Watch","In-depth analysis of internet, software and digital industry trends with our own point of view.","globe","cyan",{"id":24,"parentId":6,"slug":25,"name":26,"description":27,"icon":28,"cover":11,"tone":29,"kind":13,"sortOrder":30,"count":15},4,"team-culture","Team and Culture","Company events, tech sharing, team building and hiring culture that show the daily life of the Jiayifangyuan team.","users","indigo",30,{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":37,"kind":13,"sortOrder":38,"count":15},3,"project-retrospective","Project Retrospectives","Real project records from zero to one, covering problems, solutions, lessons learned and final outcomes.","clipboard-check","teal",40,{"id":40,"parentId":6,"slug":41,"name":42,"description":43,"icon":44,"cover":11,"tone":45,"kind":13,"sortOrder":46,"count":47},2,"product-thinking","Product Thinking","Requirement analysis, user experience and product design methods, plus the thinking from business problems to product solutions.","lightbulb","slate",50,22,{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":55},1,"engineering","Engineering","Hands-on engineering practices in architecture, performance optimization, AI integration and cross-platform delivery from our R and D team.","cpu",60,24,{"language":57,"page":40,"pageSize":58,"total":15,"list":59},"en",9,[60,73,83,93,103,113,123,132,142],{"id":61,"slug":62,"title":63,"excerpt":64,"content":11,"cover":11,"tone":22,"author":65,"publishedAt":66,"updatedAt":66,"readingMinutes":49,"featured":67,"tags":68,"category":72},78,"change-request-cascade","Retrospective: The Cascade Behind One Change","Splitting 'customer' into enterprise and individual looked like one field. It touched six modules.","佳益方圆团队","2026-07-09T09:44:00+08:00",false,[69,70,71],"Retrospective","Change","Delivery",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"id":74,"slug":75,"title":76,"excerpt":77,"content":11,"cover":11,"tone":29,"author":65,"publishedAt":78,"updatedAt":78,"readingMinutes":49,"featured":67,"tags":79,"category":82},79,"acceptance-dispute-retro","Retrospective: The Cost of Vague Acceptance Criteria","The system was finished and the client said it was not what they wanted. Every argument returned to one line: it was never specified.","2026-06-27T10:57:00+08:00",[69,80,81],"Acceptance","Requirements",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"id":84,"slug":85,"title":86,"excerpt":87,"content":11,"cover":11,"tone":45,"author":65,"publishedAt":88,"updatedAt":88,"readingMinutes":49,"featured":67,"tags":89,"category":92},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.","2026-06-15T11:10:00+08:00",[69,90,91],"Incident","Database",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"id":94,"slug":95,"title":96,"excerpt":97,"content":11,"cover":11,"tone":22,"author":65,"publishedAt":98,"updatedAt":98,"readingMinutes":49,"featured":67,"tags":99,"category":102},81,"third-party-api-change","Retrospective: A Third Party Changed a Field Silently","A partner upgraded their API, the response shape shifted quietly, and our system broke two weeks later.","2026-06-03T12:23:00+08:00",[69,100,101],"Third Party","Stability",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"id":104,"slug":105,"title":106,"excerpt":107,"content":11,"cover":11,"tone":37,"author":65,"publishedAt":108,"updatedAt":108,"readingMinutes":49,"featured":67,"tags":109,"category":112},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",[69,110,111],"Migration","Legacy",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"id":114,"slug":115,"title":116,"excerpt":117,"content":11,"cover":11,"tone":29,"author":65,"publishedAt":118,"updatedAt":118,"readingMinutes":49,"featured":67,"tags":119,"category":122},83,"handover-without-docs","Retrospective: A Month Lost to Missing Documentation","The core developer left and the successor spent a month before daring to change a line.","2026-05-10T14:49:00+08:00",[69,120,121],"Handover","Team",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"id":124,"slug":125,"title":126,"excerpt":127,"content":11,"cover":11,"tone":12,"author":65,"publishedAt":128,"updatedAt":128,"readingMinutes":49,"featured":67,"tags":129,"category":131},84,"outsourcing-visibility","Retrospective: Visibility Beats Promises in Outsourcing","The vendor said nearly done every week, until a week before delivery revealed half the work was missing.","2026-04-28T15:02:00+08:00",[69,130,71],"Outsourcing",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"id":133,"slug":134,"title":135,"excerpt":136,"content":11,"cover":11,"tone":22,"author":65,"publishedAt":137,"updatedAt":137,"readingMinutes":49,"featured":67,"tags":138,"category":141},85,"regression-escape","Retrospective: A Regression That Slipped Through","One unrelated change brought back a bug fixed three months earlier.","2026-04-16T16:15:00+08:00",[69,139,140],"Testing","Quality",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"id":143,"slug":144,"title":145,"excerpt":146,"content":11,"cover":11,"tone":37,"author":65,"publishedAt":147,"updatedAt":147,"readingMinutes":49,"featured":67,"tags":148,"category":151},86,"peak-traffic-preparation","Retrospective: Scaling Up the Night Before the Sale","The campaign page was load-tested, but login and coupons were what fell over.","2026-04-04T09:28:00+08:00",[69,149,150],"Peak Traffic","Performance",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":12,"kind":13,"sortOrder":38,"count":6},{"language":57,"page":49,"pageSize":49,"total":153,"list":154},126,[155],{"id":30,"slug":156,"title":157,"excerpt":158,"content":11,"cover":11,"tone":22,"author":65,"publishedAt":159,"updatedAt":159,"readingMinutes":49,"featured":67,"tags":160,"category":163},"integration-api-pitfalls","Five Traps in Enterprise System Integration","However complete the API documentation is, integration usually stalls on field semantics, timeouts and repeated pushes.","2026-10-17T09:00:00+08:00",[161,162,51],"Integration","APIs",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6}]