[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-third-party-api-change-en":3,"blog-adjacent-third-party-api-change-en":30,"blog-related-third-party-api-change-en":65},{"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},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.","\u003Cp>Our system depends on a logistics provider&#39;s tracking API. One day some orders stopped updating. The provider had changed a field from a string to an object without updating the documentation.\u003C\u002Fp>\n\u003Ch2>Why it took two weeks\u003C\u002Fh2>\n\u003Cp>The exception was swallowed: parse failures were caught, logged once and never alerted.\u003C\u002Fp>\n\u003Cp>No contract tests. We validated the integration once at build time and never again.\u003C\u002Fp>\n\u003Cp>The feedback path was long: the client told support, support told engineering, days had passed.\u003C\u002Fp>\n\u003Ch2>Improvements\u003C\u002Fh2>\n\u003Cp>A daily contract check now validates third-party responses and alerts on structural change.\u003C\u002Fp>\n\u003Cp>Parse failures report to monitoring instead of disappearing.\u003C\u002Fp>\n\u003Cp>Key providers are contractually required to announce version changes in advance.\u003C\u002Fp>\n\u003Cp>Depend on a third party and change is certain. All you can do is find it early instead of assuming stability.\u003C\u002Fp>","","cyan","佳益方圆团队","2026-06-03T12:23:00+08:00",1,false,[16,17,18],"Retrospective","Third Party","Stability",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},3,0,"project-retrospective","Project Retrospectives","Real project records from zero to one, covering problems, solutions, lessons learned and final outcomes.","clipboard-check","blue","article",40,{},{"previous":31,"next":49},{"id":32,"slug":33,"title":34,"excerpt":35,"content":9,"cover":9,"tone":36,"author":11,"publishedAt":37,"updatedAt":37,"readingMinutes":13,"featured":14,"tags":38,"category":42},61,"requirement-priority","Prioritisation: The Loudest Voice Is Not the Most Important","Priority should follow reach and criticality, not the seniority of whoever asks.","indigo","2026-06-05T12:23:00+08:00",[39,40,41],"Requirements","Prioritisation","Delivery",{"id":43,"parentId":21,"slug":44,"name":45,"description":46,"icon":47,"cover":9,"tone":26,"kind":27,"sortOrder":48,"count":21},2,"product-thinking","Product Thinking","Requirement analysis, user experience and product design methods, plus the thinking from business problems to product solutions.","lightbulb",50,{"id":50,"slug":51,"title":52,"excerpt":53,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":54,"updatedAt":54,"readingMinutes":13,"featured":14,"tags":55,"category":58},100,"facilitating-retrospectives","Facilitating a Retrospective","A good facilitator talks little and asks precisely.","2026-06-01T12:23:00+08:00",[56,16,57],"Team Culture","Meetings",{"id":59,"parentId":21,"slug":60,"name":61,"description":62,"icon":63,"cover":9,"tone":26,"kind":27,"sortOrder":64,"count":21},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",30,[66,76,86],{"id":67,"slug":68,"title":69,"excerpt":70,"content":9,"cover":9,"tone":36,"author":11,"publishedAt":71,"updatedAt":71,"readingMinutes":13,"featured":14,"tags":72,"category":75},70,"gov-project-acceptance","Retrospective: Why Acceptance Took Half a Year","The system was live for months while acceptance stalled. The causes were documents, process and communication, not software.","2026-10-13T09:00:00+08:00",[16,73,74],"Government","Acceptance",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":77,"slug":78,"title":79,"excerpt":80,"content":9,"cover":9,"tone":10,"author":11,"publishedAt":81,"updatedAt":81,"readingMinutes":13,"featured":14,"tags":82,"category":85},71,"mes-integration-retro","Retrospective: Integrating ERP With MES","The hard part of integration is not the interface, but getting two departments to agree on what a field means.","2026-10-01T10:13:00+08:00",[16,83,84],"Manufacturing","Integration",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":87,"slug":88,"title":89,"excerpt":90,"content":9,"cover":9,"tone":91,"author":11,"publishedAt":92,"updatedAt":92,"readingMinutes":13,"featured":14,"tags":93,"category":96},72,"cross-border-site-retro","Retrospective: Traffic Arrived, Enquiries Did Not","Ads ran normally after launch but enquiries stayed low. The review found trust and form friction were the blockers.","teal","2026-09-19T11:26:00+08:00",[16,94,95],"Cross-border","Conversion",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21}]