[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-categories-en":3,"blog-index-all-9-en":56,"blog-all-posts-en":153},[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":58,"pageSize":58,"total":59,"list":60},"en",9,126,[61,74,84,94,104,115,126,135,145],{"id":62,"slug":63,"title":64,"excerpt":65,"content":11,"cover":11,"tone":12,"author":66,"publishedAt":67,"updatedAt":67,"readingMinutes":49,"featured":68,"tags":69,"category":73},99,"when-to-pair","When Pairing Is Worth It","Pairing is expensive: two people, one job. So we only use it in specific situations.","佳益方圆团队","2026-06-13T11:10:00+08:00",false,[70,71,72],"Team Culture","Pair Programming","Collaboration",{"id":24,"parentId":6,"slug":25,"name":26,"description":27,"icon":28,"cover":11,"tone":37,"kind":13,"sortOrder":30,"count":6},{"id":75,"slug":76,"title":77,"excerpt":78,"content":11,"cover":11,"tone":12,"author":66,"publishedAt":79,"updatedAt":79,"readingMinutes":49,"featured":68,"tags":80,"category":83},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",[19,81,82],"SaaS","Procurement",{"id":17,"parentId":6,"slug":18,"name":19,"description":20,"icon":21,"cover":11,"tone":45,"kind":13,"sortOrder":15,"count":6},{"id":15,"slug":85,"title":86,"excerpt":87,"content":11,"cover":11,"tone":37,"author":66,"publishedAt":88,"updatedAt":88,"readingMinutes":49,"featured":68,"tags":89,"category":93},"after-learning-to-say-no","After We Learned to Say No","Declining the wrong work looks like a loss now and returns time to what matters later.","2026-06-09T11:10:00+08:00",[90,91,92],"Startup","Decisions","Boundaries",{"id":5,"parentId":6,"slug":7,"name":8,"description":9,"icon":10,"cover":11,"tone":12,"kind":13,"sortOrder":14,"count":6},{"id":95,"slug":96,"title":97,"excerpt":98,"content":11,"cover":11,"tone":12,"author":66,"publishedAt":99,"updatedAt":99,"readingMinutes":49,"featured":68,"tags":100,"category":103},41,"lightweight-code-review","Making Code Review Work in a Small Team","Review is not fault-finding. It is making sure a second person understands a change before it merges.","2026-06-07T12:23:00+08:00",[101,102,51],"Code Review","Team",{"id":49,"parentId":6,"slug":50,"name":51,"description":52,"icon":53,"cover":11,"tone":12,"kind":13,"sortOrder":54,"count":6},{"id":105,"slug":106,"title":107,"excerpt":108,"content":11,"cover":11,"tone":29,"author":66,"publishedAt":109,"updatedAt":109,"readingMinutes":49,"featured":68,"tags":110,"category":114},61,"requirement-priority","Prioritisation: The Loudest Voice Is Not the Most Important","Priority should follow reach and criticality, not the seniority of whoever asks.","2026-06-05T12:23:00+08:00",[111,112,113],"Requirements","Prioritisation","Delivery",{"id":40,"parentId":6,"slug":41,"name":42,"description":43,"icon":44,"cover":11,"tone":22,"kind":13,"sortOrder":46,"count":6},{"id":116,"slug":117,"title":118,"excerpt":119,"content":11,"cover":11,"tone":22,"author":66,"publishedAt":120,"updatedAt":120,"readingMinutes":49,"featured":68,"tags":121,"category":125},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",[122,123,124],"Retrospective","Third Party","Stability",{"id":32,"parentId":6,"slug":33,"name":34,"description":35,"icon":36,"cover":11,"tone":29,"kind":13,"sortOrder":38,"count":6},{"id":127,"slug":128,"title":129,"excerpt":130,"content":11,"cover":11,"tone":22,"author":66,"publishedAt":131,"updatedAt":131,"readingMinutes":49,"featured":68,"tags":132,"category":134},100,"facilitating-retrospectives","Facilitating a Retrospective","A good facilitator talks little and asks precisely.","2026-06-01T12:23:00+08:00",[70,122,133],"Meetings",{"id":24,"parentId":6,"slug":25,"name":26,"description":27,"icon":28,"cover":11,"tone":37,"kind":13,"sortOrder":30,"count":6},{"id":136,"slug":137,"title":138,"excerpt":139,"content":11,"cover":11,"tone":22,"author":66,"publishedAt":140,"updatedAt":140,"readingMinutes":49,"featured":68,"tags":141,"category":144},119,"open-source-license-risk","Open Source Licence Risk: Used, Not Understood","Nearly every project uses open source, yet few can explain its obligations.","2026-05-30T12:23:00+08:00",[19,142,143],"Open Source","Compliance",{"id":17,"parentId":6,"slug":18,"name":19,"description":20,"icon":21,"cover":11,"tone":45,"kind":13,"sortOrder":15,"count":6},{"id":146,"slug":147,"title":148,"excerpt":149,"content":11,"cover":11,"tone":22,"author":66,"publishedAt":150,"updatedAt":150,"readingMinutes":49,"featured":68,"tags":151,"category":152},21,"seven-years-what-changed","Seven Years: What Actually Changed","From three people to twenty, from taking any work to knowing what we are good at. Slower than expected, and more solid.","2026-05-28T12:23:00+08:00",[],{"id":5,"parentId":6,"slug":7,"name":8,"description":9,"icon":10,"cover":11,"tone":12,"kind":13,"sortOrder":14,"count":6},{"language":57,"page":49,"pageSize":49,"total":59,"list":154},[155],{"id":30,"slug":156,"title":157,"excerpt":158,"content":11,"cover":11,"tone":22,"author":66,"publishedAt":159,"updatedAt":159,"readingMinutes":49,"featured":68,"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}]