[
  {
    "id": "/2025/12/30/on-year-2025",
    "title": "2025年纪 一切重新出发",
    "summary": "今年当了女儿奴，从/thoughtworks毕业，终于听了深深的线下。新的一年，重新认识自己，重新出发开始。",
    "category": "",
    "tags": "",
    "url": "/2025/12/30/on-year-2025.html",
    "path": "_posts/2025-12-30-on-year-2025.md",
    "date": "2025-12-30 00:00:00 +0000",
    "createdDate": "2025/12/30"
  },
  {
    "id": "/learning/deliberate-practice/2025/12/18/my-learning-methodology",
    "title": "我的学习方法论——知与行、天赋与刻意练习",
    "summary": "实践是一切认识活动的基础。脱离了社会实践、不接受社会实践检验的认识和思想没有意义。而作为有效的获取直接经验的实践方法，就是刻意练习。",
    "category": "learningdeliberate-practice",
    "tags": "",
    "url": "/learning/deliberate-practice/2025/12/18/my-learning-methodology.html",
    "path": "_posts/2025-12-18-my-learning-methodology.md",
    "date": "2025-12-18 00:00:00 +0000",
    "createdDate": "2025/12/18"
  },
  {
    "id": "/2025/04/10/scrum-team-efficiency-in-ai-era",
    "title": "AI时代提效指南",
    "summary": "结构化的AI软件开发方法论 + 缩小Scrum团队规模 + 全栈工程师。",
    "category": "",
    "tags": "ai-generation, efficiency, scrum",
    "url": "/2025/04/10/scrum-team-efficiency-in-ai-era.html",
    "path": "_posts/2025-04-10-scrum-team-efficiency-in-ai-era.md",
    "date": "2025-04-10 00:00:00 +0000",
    "createdDate": "2025/04/10"
  },
  {
    "id": "/2025/01/01/organization-efficiency-and-platform-team",
    "title": "技术公司遇到产能瓶颈，怎么破局？",
    "summary": "生意太火爆却不敢继续接单、技术团队拼尽全力仍面临产能瓶颈，如何破局？",
    "category": "",
    "tags": "team-topology, agile, cto",
    "url": "/2025/01/01/organization-efficiency-and-platform-team.html",
    "path": "_posts/2025-01-01-organization-efficiency-and-platform-team.md",
    "date": "2025-01-01 00:00:00 +0000",
    "createdDate": "2025/01/01"
  },
  {
    "id": "/2024/12/30/on-year-2024",
    "title": "2024年纪 去乌托邦元年",
    "summary": "“宇宙就是一座黑暗森林，每个文明都是带枪的猎人。”",
    "category": "",
    "tags": "",
    "url": "/2024/12/30/on-year-2024.html",
    "path": "_posts/2024-12-30-on-year-2024.md",
    "date": "2024-12-30 00:00:00 +0000",
    "createdDate": "2024/12/30"
  },
  {
    "id": "/2023/12/30/on-year-2023",
    "title": "2023年纪 永远年轻，永远热泪盈眶",
    "summary": "这是2013年我刚玩贴吧时候的贴吧宣言。可耻，都十年过去了，我还在盗这个slogan。",
    "category": "",
    "tags": "",
    "url": "/2023/12/30/on-year-2023.html",
    "path": "_posts/2023-12-30-on-year-2023.md",
    "date": "2023-12-30 00:00:00 +0000",
    "createdDate": "2023/12/30"
  },
  {
    "id": "/2023/12/10/react-unit-testing-best-practices-v2",
    "title": "React系列（二）：单元测试最佳实践与前端TDD",
    "summary": "实践证明，在前端以细粒度的UI组件为单元做测试不能很好地支撑重构和需求变化。本文将介绍一种能更好地支撑重构和开发、更能支撑前端TDD的单元测试方案。 ",
    "category": "",
    "tags": "react, unit-test, tdd, frontend-tdd, rtl, react-testing-library, jest, design-system",
    "url": "/2023/12/10/react-unit-testing-best-practices-v2.html",
    "path": "_posts/2023-12-10-react-unit-testing-best-practices-v2.md",
    "date": "2023-12-10 00:00:00 +0000",
    "createdDate": "2023/12/10"
  },
  {
    "id": "/translation,%20clean-code/2023/11/25/how-to-write-unmaintainable-code",
    "title": "如何写出无法维护的代码（译）",
    "summary": "争做市面最佳译作。",
    "category": "translation, clean-code",
    "tags": "",
    "url": "/translation,%20clean-code/2023/11/25/how-to-write-unmaintainable-code.html",
    "path": "_posts/2023-11-25-how-to-write-unmaintainable-code.md",
    "date": "2023-11-25 00:00:00 +0000",
    "createdDate": "2023/11/25"
  },
  {
    "id": "/career,%20tech-lead/2023/09/13/my-tech-lead-journey-v",
    "title": "Tech Lead日记（五）：高效沟通",
    "summary": "不要以为沟通不重要。",
    "category": "career, tech-lead",
    "tags": "",
    "url": "/career,%20tech-lead/2023/09/13/my-tech-lead-journey-v.html",
    "path": "_posts/2023-09-13-my-tech-lead-journey-v.md",
    "date": "2023-09-13 00:00:00 +0000",
    "createdDate": "2023/09/13"
  },
  {
    "id": "/career,%20tech-lead/2023/08/05/my-tech-lead-journey-iv",
    "title": "Tech Lead日记（四）：浅谈时间管理",
    "summary": "本文从“重要-紧急三象限”、会议管理、PDCA等几个方面，给出了一些详细且可落地的时间管理建议，可操作性很强。",
    "category": "career, tech-lead",
    "tags": "",
    "url": "/career,%20tech-lead/2023/08/05/my-tech-lead-journey-iv.html",
    "path": "_posts/2023-08-05-my-tech-lead-journey-iv.md",
    "date": "2023-08-05 00:00:00 +0000",
    "createdDate": "2023/08/05"
  },
  {
    "id": "/career,%20tech-lead/2023/08/04/my-tech-lead-journey-iii",
    "title": "Tech Lead日记（三）：Feature Owner是反模式吗？",
    "summary": "有的人认为Feature Owner是个反模式，违背敏捷的团队知识所有原则；有的人则表示FO真香。本篇我们就来聊聊Feature Owner以及团队管理的那些事。",
    "category": "career, tech-lead",
    "tags": "",
    "url": "/career,%20tech-lead/2023/08/04/my-tech-lead-journey-iii.html",
    "path": "_posts/2023-08-04-my-tech-lead-journey-iii.md",
    "date": "2023-08-04 00:00:00 +0000",
    "createdDate": "2023/08/04"
  },
  {
    "id": "/career,%20tech-lead/2023/08/03/my-tech-lead-journey-ii",
    "title": "Tech Lead日记（二）：TL的KPI是什么？",
    "summary": "对于Developer来说，他的工作产出衡量是每个迭代的贡献点数。那么对于TL来说，他的工作产出（即KPI）是什么？尤其是管理的部分？KPI，即非KPI，是名KPI。",
    "category": "career, tech-lead",
    "tags": "",
    "url": "/career,%20tech-lead/2023/08/03/my-tech-lead-journey-ii.html",
    "path": "_posts/2023-08-03-my-tech-lead-journey-ii.md",
    "date": "2023-08-03 00:00:00 +0000",
    "createdDate": "2023/08/03"
  },
  {
    "id": "/career,%20tech-lead/2023/08/01/my-tech-lead-journey-i",
    "title": "Tech Lead日记（一）：TL真有50%时间写代码？",
    "summary": "家人们，数据证明，有些TL真的只有10%的时间碰代码！这个系列，我会分享一些新晋TL们常常会面对的困惑和解决方案，快来看看有没有你曾经/正在经受的困扰吧。",
    "category": "career, tech-lead",
    "tags": "",
    "url": "/career,%20tech-lead/2023/08/01/my-tech-lead-journey-i.html",
    "path": "_posts/2023-08-01-my-tech-lead-journey-i.md",
    "date": "2023-08-01 00:00:00 +0000",
    "createdDate": "2023/08/01"
  },
  {
    "id": "/renju/2022/12/18/first-shenzhen-renju-tournament",
    "title": "2022年深圳市第一届五子棋锦标赛自战棋评",
    "summary": "参加了深圳市第一届五子棋锦标赛，拿了第7名，升中国棋院职业二级。",
    "category": "renju",
    "tags": "",
    "url": "/renju/2022/12/18/first-shenzhen-renju-tournament.html",
    "path": "_posts/2022-12-18-first-shenzhen-renju-tournament.md",
    "date": "2022-12-18 00:00:00 +0000",
    "createdDate": "2022/12/18"
  },
  {
    "id": "/industry/2022/05/24/programmers-are-the-most-expensive-investment",
    "title": "程序员才是最贵的",
    "summary": "在IT投资中，程序员的人力成本（或者广泛地说，组建团队的人力成本）是大头。因此，招聘好的程序员是提升IT效能的重要因素。",
    "category": "industry",
    "tags": "",
    "url": "/industry/2022/05/24/programmers-are-the-most-expensive-investment.html",
    "path": "_posts/2022-05-24-programmers-are-the-most-expensive-investment.md",
    "date": "2022-05-24 00:00:00 +0000",
    "createdDate": "2022/05/24"
  },
  {
    "id": "/TDD/2022/05/22/why-tdd-is-still-mandatory-in-current-era",
    "title": "TDD大法好",
    "summary": "这是我在TWI做的一期3分钟闪电演讲：在数字化时代，为什么TDD仍然是敏捷开发的正知正念。",
    "category": "TDD",
    "tags": "",
    "url": "/TDD/2022/05/22/why-tdd-is-still-mandatory-in-current-era.html",
    "path": "_posts/2022-05-22-why-tdd-is-still-mandatory-in-current-era.md",
    "date": "2022-05-22 00:00:00 +0000",
    "createdDate": "2022/05/22"
  },
  {
    "id": "/2021/12/31/on-year-2021",
    "title": "2021年纪 一半一半",
    "summary": "2021年许多的习惯都坚持了一半，2022年希望做到剩下的一半。到时有个新的起点。",
    "category": "",
    "tags": "",
    "url": "/2021/12/31/on-year-2021.html",
    "path": "_posts/2021-12-31-on-year-2021.md",
    "date": "2021-12-31 00:00:00 +0000",
    "createdDate": "2021/12/31"
  },
  {
    "id": "/读书笔记/2021/05/07/reading-clean-architecture",
    "title": "《架构整洁之道》导读",
    "summary": "架构整洁之道，实乃省钱之道。省钱，是读懂本书的一个核心视角。专业人士的价值，不仅在于交付满足当下需求、乃至未来变化的软件，更在于他们能够采用效率最高、成本最低的软件架构完成此事。这本书就是写给预备承担、或者正在承担架构责任的资深工程师们。",
    "category": "读书笔记",
    "tags": "",
    "url": "/读书笔记/2021/05/07/reading-clean-architecture.html",
    "path": "_posts/2021-05-07-reading-clean-architecture.md",
    "date": "2021-05-07 00:00:00 +0000",
    "createdDate": "2021/05/07"
  },
  {
    "id": "/2020/12/31/an-even-greater-year-2020",
    "title": "2020年纪 以斗争求团结",
    "summary": "今年结了婚，终究配了眼镜，买了台2019顶配的MacBook Pr~~因为买不起顶配垃圾桶~~，跟着顶级投行的IT团队一起~~TDD~~做事，开始坚持游泳健身读书，身体素质和自信心显著提升。2020觉得我的祖国🇨🇳真是伟大而可爱。",
    "category": "",
    "tags": "",
    "url": "/2020/12/31/an-even-greater-year-2020.html",
    "path": "_posts/2020-12-31-an-even-greater-year-2020.md",
    "date": "2020-12-31 00:00:00 +0000",
    "createdDate": "2020/12/31"
  },
  {
    "id": "/2020/11/08/get-onboarded-to-a-new-project-quickly",
    "title": "如何快速了解一个项目",
    "summary": "本文系从 [郑烨的“加入项目需要了解什么”系列](http://dreamhead.blogbus.com/logs/224229646.html) 演进而来。文章细化了各个层级需要了解的内容，并提供了具体而细致的了解次序。总的思路是：大面上从业务到技术；业务上从核心到边缘功能；技术上从架构到部署到具体模块。",
    "category": "",
    "tags": "",
    "url": "/2020/11/08/get-onboarded-to-a-new-project-quickly.html",
    "path": "_posts/2020-11-08-get-onboarded-to-a-new-project-quickly.md",
    "date": "2020-11-08 00:00:00 +0000",
    "createdDate": "2020/11/08"
  },
  {
    "id": "/2019/12/31/a-great-year-2019",
    "title": "2019年纪 喜迎建国70周年",
    "summary": "2019年视力下降厉害，养了狗，重获了对敏捷和TDD的信念，第一次做了对社区外部的演讲。2019年，我去首都北京看了升旗，爬了长城。2020年，希望走更多的地方，希望不再纠结，变得更加强力。",
    "category": "",
    "tags": "",
    "url": "/2019/12/31/a-great-year-2019.html",
    "path": "_posts/2019-12-31-a-great-year-2019.md",
    "date": "2019-12-31 00:00:00 +0000",
    "createdDate": "2019/12/31"
  },
  {
    "id": "/2019/07/24/elegant-mac-i-basic",
    "title": "程序员纯键盘指南（一）：十八般兵器",
    "summary": "很多程序员代码写的慢，不是思路不行，也不是能力不行，纯粹是因为工具不行，手速支撑不起思考的速度。而纯键盘快捷键的操作，恰恰是使你编码速度腾飞、摆脱低效的不二法宝。",
    "category": "",
    "tags": "",
    "url": "/2019/07/24/elegant-mac-i-basic.html",
    "path": "_posts/2019-07-24-elegant-mac-i-basic.md",
    "date": "2019-07-24 00:00:00 +0000",
    "createdDate": "2019/07/24"
  },
  {
    "id": "/读书笔记/2019/04/24/reading-implementation-patterns",
    "title": "《实现模式》导读",
    "summary": "“所谓专业和非专业的一个关键区别，就是外行人、票友认为需要灵感的很多东西，在专业人士这儿是可以穷举的。”实现模式就是这样一本定式集，它使用穷举的方式，回答了“编程元素能传达什么信息”的问题，使“编写好代码”走出少数人灵感的殿堂，走入寻常专业者可以学习并掌握的东西。它是所有入门者应当熟记、背诵、内化的基本功。",
    "category": "读书笔记",
    "tags": "",
    "url": "/读书笔记/2019/04/24/reading-implementation-patterns.html",
    "path": "_posts/2019-04-24-reading-implementation-patterns.md",
    "date": "2019-04-24 00:00:00 +0000",
    "createdDate": "2019/04/24"
  },
  {
    "id": "/2018/12/31/a-great-year-2018",
    "title": "2018年纪 喜迎改革开放40周年",
    "summary": "今年的进步我觉得又长又足。",
    "category": "",
    "tags": "",
    "url": "/2018/12/31/a-great-year-2018.html",
    "path": "_posts/2018-12-31-a-great-year-2018.md",
    "date": "2018-12-31 00:00:00 +0000",
    "createdDate": "2018/12/31"
  },
  {
    "id": "/2018/12/18/my-react-insights",
    "title": "我的 React 知识体系",
    "summary": "React 是一个声明式的 UI 库。与社区的数据流、路由、副作用管理，形成一个解决前端工程问题的优秀方案。这篇文章将体系化记录我的 React 学习路线、对其的认知。值得细讲的点将另辟文章来分析。",
    "category": "",
    "tags": "",
    "url": "/2018/12/18/my-react-insights.html",
    "path": "_posts/2018-12-18-my-react-insights.md",
    "date": "2018-12-18 00:00:00 +0000",
    "createdDate": "2018/12/18"
  },
  {
    "id": "/2018/11/11/javascript-generator",
    "title": "JavaScript 生成器之精髓",
    "summary": "迭代器/生成器是一组用以做自动化流程控制的语法对象。其核心价值点有二：可自动化的流程设计与控制、可暂停特性。其他所谓价值都是纸老虎。",
    "category": "",
    "tags": "",
    "url": "/2018/11/11/javascript-generator.html",
    "path": "_posts/2018-11-11-javascript-generator.md",
    "date": "2018-11-11 00:00:00 +0000",
    "createdDate": "2018/11/11"
  },
  {
    "id": "/project-review/2018/11/10/project-summary-app",
    "title": "项目总结——一个 7 万行代码、多种技术栈的 APP 项目",
    "summary": "这是一个令我成长许多，第一次跟项目成员 retro 到晚上 10 点的项目：多个代码库、多个技术栈交互、60 多个页面、接近 7 万行代码的项目…要不是其自身所决定的技术卓越之匮乏，或许我也不会早早离开。",
    "category": "project-review",
    "tags": "",
    "url": "/project-review/2018/11/10/project-summary-app.html",
    "path": "_posts/2018-11-10-project-summary-app.md",
    "date": "2018-11-10 00:00:00 +0000",
    "createdDate": "2018/11/10"
  },
  {
    "id": "/读书笔记/2018/10/25/reading-understand-ecmascript-6",
    "title": "《深入理解 ES6》导读",
    "summary": "本书拾遗部分的特性，要求 100% 熟练地应用到日常实践中；增广部分，除了讲道理，主要是开阔眼界。这部分知识可以预见是自己开发框架/库的强力武器，而不常见于日常业务代码中。",
    "category": "读书笔记",
    "tags": "",
    "url": "/读书笔记/2018/10/25/reading-understand-ecmascript-6.html",
    "path": "_posts/2018-10-25-reading-understand-ecmascript-6.md",
    "date": "2018-10-25 00:00:00 +0000",
    "createdDate": "2018/10/25"
  },
  {
    "id": "/2018/10/21/deep-dive-into-babel-inheritance",
    "title": "深入 JavaScript 原型继承原理——babel 编译码解读",
    "summary": "在[上一篇文章][]中，我们提到 ES6 的 `class` 语法糖是个近乎完美的方案，并且讲解了实现继承的许多内部机制，如 `prototype`/`__proto__`/`constructor` 等等。这篇，我们就以实际的 babel 代码为例子，来验证上节所言不虚。此外，本文还解释了 React 组件中你需要 `bind` 一下类方法的原理所在。",
    "category": "",
    "tags": "",
    "url": "/2018/10/21/deep-dive-into-babel-inheritance.html",
    "path": "_posts/2018-10-21-deep-dive-into-babel-inheritance.md",
    "date": "2018-10-21 00:00:00 +0000",
    "createdDate": "2018/10/21"
  },
  {
    "id": "/2018/10/18/javascript-prototypal-inheritance",
    "title": "JavaScript 原型继承之精髓",
    "summary": "一篇文章让你搞清楚 JavaScript 继承的本质、`prototype`、`__proto__`、`constructor` 都是什么。",
    "category": "",
    "tags": "",
    "url": "/2018/10/18/javascript-prototypal-inheritance.html",
    "path": "_posts/2018-10-18-javascript-prototypal-inheritance.md",
    "date": "2018-10-18 00:00:00 +0000",
    "createdDate": "2018/10/18"
  },
  {
    "id": "/读书笔记/2018/10/07/reading-javascript-the-good-parts",
    "title": "《JavaScript 语言精髓》导读",
    "summary": "重温经典。这本书告诉你，什么是不好的 JavaScript，这与知道什么是精华的 JavaScript 一样重要。正所谓非彼无我，非我无所取。",
    "category": "读书笔记",
    "tags": "",
    "url": "/读书笔记/2018/10/07/reading-javascript-the-good-parts.html",
    "path": "_posts/2018-10-07-reading-javascript-the-good-parts.md",
    "date": "2018-10-07 00:00:00 +0000",
    "createdDate": "2018/10/07"
  },
  {
    "id": "/2018/09/08/grad-step-up",
    "title": "以学习者为中心 —— 毕业生之 Tasking 和 TDD 培训",
    "summary": "讲真，这是我第一次真正觉得从 coaching 中学到了东西。短短一周培训，帮我丢掉了偶像包袱，脱离了低级趣味。好的培训，以学习者为中心，而非以教师为中心。这些天里各种技术讨论、质疑神教、session 分享，好像重温了我们毕业那届激(chui)扬(niu)文(bi)字的时光。要我说，这才是 TW 精神所在。",
    "category": "",
    "tags": "",
    "url": "/2018/09/08/grad-step-up.html",
    "path": "_posts/2018-09-08-grad-step-up.md",
    "date": "2018-09-08 00:00:00 +0000",
    "createdDate": "2018/09/08"
  },
  {
    "id": "/2018/08/20/agile-series-2-why-we-do-trunk-based-development",
    "title": "敏捷五问（二）：为什么我们要做主干开发",
    "summary": "敏捷正逐渐变成开发日常的空气和水，对实践日渐熟悉的我们，有时反而忘记一些实践背后的目的，为实践而实践，把敏捷变成了另一种流程，然后反过来骂敏捷。本文将结合作者几年来的一线经验，重温敏捷的核心精神：「沟通」和「反馈」，以期达到正本清源，温故知新的效果。",
    "category": "",
    "tags": "",
    "url": "/2018/08/20/agile-series-2-why-we-do-trunk-based-development.html",
    "path": "_posts/2018-08-20-agile-series-2-why-we-do-trunk-based-development.md",
    "date": "2018-08-20 00:00:00 +0000",
    "createdDate": "2018/08/20"
  },
  {
    "id": "/2018/07/31/agile-series-1-why-we-do-atomic-commit",
    "title": "敏捷五问（一）：为什么我们要做原子、小步提交",
    "summary": "「因为敏捷培训是这么讲的呀」~",
    "category": "",
    "tags": "",
    "url": "/2018/07/31/agile-series-1-why-we-do-atomic-commit.html",
    "path": "_posts/2018-07-31-agile-series-1-why-we-do-atomic-commit.md",
    "date": "2018-07-31 00:00:00 +0000",
    "createdDate": "2018/07/31"
  },
  {
    "id": "/2018/07/13/react-unit-testing-strategy",
    "title": "React 单元测试策略及落地",
    "summary": "单元测试是现代软件开发最基本，也普遍落地不力的实践。市面关于React单元测试的文章，普遍停留在“可以如何写”和介绍工具的层面，既未回答“为何必须做单元测试”，也未回答“单元测试的最佳实践”两个关键问题。本文正是要对这两个问题作出回答。",
    "category": "",
    "tags": "react, unit-test, tdd, enzyme, jest",
    "url": "/2018/07/13/react-unit-testing-strategy.html",
    "path": "_posts/2018-07-13-react-unit-testing-strategy.md",
    "date": "2018-07-13 00:00:00 +0000",
    "createdDate": "2018/07/13"
  },
  {
    "id": "/翻译/2018/06/11/developers-should-abandon-agile",
    "title": "「译」开发者是时候放弃敏捷了",
    "summary": "【改我】敏捷宣言创始人之一 Ron Jeffries 告诫开发者，是时候抛弃你认为的所谓「敏捷」了。",
    "category": "翻译",
    "tags": "agile,, tdd,, manifesto",
    "url": "/翻译/2018/06/11/developers-should-abandon-agile.html",
    "path": "_posts/2018-06-11-developers-should-abandon-agile.md",
    "date": "2018-06-11 00:00:00 +0000",
    "createdDate": "2018/06/11"
  },
  {
    "id": "/2018/06/04/tdd-series-end-the-big-picture",
    "title": "TDD 周报特刊：「完整的全景图」",
    "summary": "其实最近练习 TDD 并没感觉有重大突破，但跟多人交流沟通之后慢慢梳理出一些所以然来，对于一些问题在此尝试做简单的体系化归纳。真的有用，非常有用，感觉可以给烤鸭投稿了。",
    "category": "",
    "tags": "",
    "url": "/2018/06/04/tdd-series-end-the-big-picture.html",
    "path": "_posts/2018-06-04-tdd-series-end-the-big-picture.md",
    "date": "2018-06-04 00:00:00 +0000",
    "createdDate": "2018/06/04"
  },
  {
    "id": "/2017/07/21/tdd-series-6-why-we-donot-do-tdd",
    "title": "TDD 周报（六）：「结语 - 我们为什么不用 TDD」",
    "summary": "这些东西本来没有意义的。不过既然都记录了，就不带情绪地记录在这好了。上个项目带给我的成长是，用平和的心态面对阻力，同时加强个人能力修炼。不要在意微不足道的声音，进程的方向是对的。学习 TDD，一定就要看创始人的书、演讲，接下来的学习方向大概是：",
    "category": "",
    "tags": "",
    "url": "/2017/07/21/tdd-series-6-why-we-donot-do-tdd.html",
    "path": "_posts/2017-07-21-tdd-series-6-why-we-donot-do-tdd.md",
    "date": "2017-07-21 00:00:00 +0000",
    "createdDate": "2017/07/21"
  },
  {
    "id": "/2017/06/23/tdd-series-5-tdd-as-the-heart-of-all-agile-practices",
    "title": "TDD 周报（五）：「TDD 是敏捷实践的灵魂」",
    "summary": "TDD 是所有敏捷实践的灵魂。没有之一。以前我多少还有点保留，觉得不想挑起派别之争，但觉得有了加持，以及这段加班的经历以后，我坚定地认为 TDD 是所有项目必须采用的实践。它是对的事情，是一定要坚持的。",
    "category": "",
    "tags": "",
    "url": "/2017/06/23/tdd-series-5-tdd-as-the-heart-of-all-agile-practices.html",
    "path": "_posts/2017-06-23-tdd-series-5-tdd-as-the-heart-of-all-agile-practices.md",
    "date": "2017-06-23 00:00:00 +0000",
    "createdDate": "2017/06/23"
  },
  {
    "id": "/2017/06/18/tdd-series-4-tdd-is-an-art-not-scientific",
    "title": "TDD 周报（四）：「TDD 是一门艺术，不是科学」",
    "summary": "让我们来走近艺术。这篇的话题是接着上篇 ，其中提到了要做好 TDD，我们必须关注的两大方面，八大能力。这篇主要是围绕这其中的 TDD 和 tasking 能力建设展开的，主要精彩观点都来自仝校长，并感谢他支持我倒卖聊天记录…",
    "category": "",
    "tags": "",
    "url": "/2017/06/18/tdd-series-4-tdd-is-an-art-not-scientific.html",
    "path": "_posts/2017-06-18-tdd-series-4-tdd-is-an-art-not-scientific.md",
    "date": "2017-06-18 00:00:00 +0000",
    "createdDate": "2017/06/18"
  },
  {
    "id": "/2017/06/17/tdd-series-3-tdd-as-an-effective-tool",
    "title": "TDD 周报（三）：「作为个人工具和团队实践的 TDD」",
    "summary": "上回我们总结了 TDD 的 [四个优点](https://ethan.exthoughtworkers.tech/#/post/2017-06-10-tdd-series-2-rethink)。和肖劲交流过许多问题以后，我们再把 TDD 的主要优点归结到两个：",
    "category": "",
    "tags": "",
    "url": "/2017/06/17/tdd-series-3-tdd-as-an-effective-tool.html",
    "path": "_posts/2017-06-17-tdd-series-3-tdd-as-an-effective-tool.md",
    "date": "2017-06-17 00:00:00 +0000",
    "createdDate": "2017/06/17"
  },
  {
    "id": "/2017/06/10/tdd-series-2-rethink",
    "title": "TDD 周报（二）：回炉",
    "summary": "好久没有提交了，寂寞啊。",
    "category": "",
    "tags": "",
    "url": "/2017/06/10/tdd-series-2-rethink.html",
    "path": "_posts/2017-06-10-tdd-series-2-rethink.md",
    "date": "2017-06-10 00:00:00 +0000",
    "createdDate": "2017/06/10"
  },
  {
    "id": "/2017/06/08/tdd-series-1-rethink",
    "title": "TDD 周报（一）：回炉重造的想法",
    "summary": "验证 TDD 的有效性。不跟人争论 TDD 是否有用，不在意别人的看法，不在意尝试说服别人。放下一切争论和心念，平静开始，不要想去超越别人，只超越自己。节省了情绪、争论、徘徊的时间；",
    "category": "",
    "tags": "",
    "url": "/2017/06/08/tdd-series-1-rethink.html",
    "path": "_posts/2017-06-08-tdd-series-1-rethink.md",
    "date": "2017-06-08 00:00:00 +0000",
    "createdDate": "2017/06/08"
  },
  {
    "id": "/2016/12/18/faster-tdd",
    "title": "唯快不破的 TDD",
    "summary": "本文将辨述关于 TDD 的观点与论战，给出我认为的作为编码任务管理的 TDD 如何为个人开发提升效率，为读者减少分辨、纠结于各类 TDD 论战上的时间浪费，尽快投入实践；最后，我会给出一个 TDD 的工作流，以及作为个人效率工具的 TDD 实践如何落地，从而达到及时反馈，不断进步的目的。",
    "category": "",
    "tags": "",
    "url": "/2016/12/18/faster-tdd.html",
    "path": "_posts/2016-12-18-faster-tdd.md",
    "date": "2016-12-18 00:00:00 +0000",
    "createdDate": "2016/12/18"
  },
  {
    "id": "/翻译/2016/09/17/junit5-architecture",
    "title": "「译」JUnit 5 系列：架构体系",
    "summary": "现在，我们已经知道了 [如何配置 JUnit 5 环境][JUnit 5: Setup] 及 [如何写一些测试][JUnit 5: Basics]，接下来就来看一点封面下的内容吧。本篇我们将讨论 JUnit 5 的架构体系，以及它之成形如此的原因。",
    "category": "翻译",
    "tags": "JUnit, 5,, unit, test",
    "url": "/翻译/2016/09/17/junit5-architecture.html",
    "path": "_posts/2016-09-17-junit5-architecture.md",
    "date": "2016-09-17 00:00:00 +0000",
    "createdDate": "2016/09/17"
  },
  {
    "id": "/翻译/2016/09/17/junit5-basics",
    "title": "「译」JUnit 5 系列：基础入门",
    "summary": "上周我们刚刚[搭建好了 JUnit 5 的环境][JUnit 5: Setup]，现在我们可以写测试了。这节就让我们来写它几个吧！",
    "category": "翻译",
    "tags": "JUnit, 5,, unit, test",
    "url": "/翻译/2016/09/17/junit5-basics.html",
    "path": "_posts/2016-09-17-junit5-basics.md",
    "date": "2016-09-17 00:00:00 +0000",
    "createdDate": "2016/09/17"
  },
  {
    "id": "/翻译/2016/09/17/junit5-conditions",
    "title": "「译」JUnit 5 系列：条件测试",
    "summary": "上一节我们了解了 JUnit 新的[扩展模型][JUnit 5: Extension Model]，了解了它是如何支持我们向引擎定制一些行为的。然后我还预告会为大家讲解条件测试，这一节主题就是它了。",
    "category": "翻译",
    "tags": "JUnit, 5,, unit, test",
    "url": "/翻译/2016/09/17/junit5-conditions.html",
    "path": "_posts/2016-09-17-junit5-conditions.md",
    "date": "2016-09-17 00:00:00 +0000",
    "createdDate": "2016/09/17"
  },
  {
    "id": "/翻译/2016/09/17/junit5-extension-model",
    "title": "「译」JUnit 5 系列：扩展模型（Extension Model）",
    "summary": "「译」JUnit 5 系列：扩展模型（Extension Model）",
    "category": "翻译",
    "tags": "JUnit, 5,, unit, test",
    "url": "/翻译/2016/09/17/junit5-extension-model.html",
    "path": "_posts/2016-09-17-junit5-extension-model.md",
    "date": "2016-09-17 00:00:00 +0000",
    "createdDate": "2016/09/17"
  },
  {
    "id": "/翻译/2016/09/17/junit5-setup",
    "title": "「译」JUnit 5 系列：环境搭建",
    "summary": "2015年11月，[Junit Lambda](http://junit.org/junit4/junit-lambda.html) 团队发布了该项目的 [第一版原型](http://blog.codefx.org/libraries/junit-lambda-prototype/) 。此后，该项目把名称改成了 JUnit 5 并独立了出来，随后在2016年2月份的时候发布了一个 alpha 版本。本篇打算以一系列文章，简短地探索一下以下几个方面：",
    "category": "翻译",
    "tags": "JUnit, 5,, unit, test",
    "url": "/翻译/2016/09/17/junit5-setup.html",
    "path": "_posts/2016-09-17-junit5-setup.md",
    "date": "2016-09-17 00:00:00 +0000",
    "createdDate": "2016/09/17"
  },
  {
    "id": "/2016/08/26/tdd-series-2-why-and-when-using-tdd",
    "title": "TDD的迷思（二）：意义篇",
    "summary": "本文仅在Java上下文下讨论TDD。原因是Java具备适合TDD生存的一些语言特性：清晰的依赖引用import机制、完全的面向对象、不存在引用传递等。迁移讨论至其他语言上时请注意这些特性对TDD实践所带来的差异。",
    "category": "",
    "tags": "",
    "url": "/2016/08/26/tdd-series-2-why-and-when-using-tdd.html",
    "path": "_posts/2016-08-26-tdd-series-2-why-and-when-using-tdd.md",
    "date": "2016-08-26 00:00:00 +0000",
    "createdDate": "2016/08/26"
  },
  {
    "id": "/2016/08/25/tdd-series-1-techniques",
    "title": "TDD的迷思（一）：技艺篇",
    "summary": "本章简要讨论使用TDD对软件开发所能带来的益处，给出了TDD作为一门技艺的修习技巧和手法。如还有篇幅~~心情和精力~~，会再讨论各处可能遇到的疑惑和解决方案。关于为什么要使用TDD、TDD的使用场景，请见本系列第二篇：意义篇；关于TDD的一些其他声音，请见本系列第三篇：撕逼篇。本篇讨论TDD使用Java作为编程语言。",
    "category": "",
    "tags": "",
    "url": "/2016/08/25/tdd-series-1-techniques.html",
    "path": "_posts/2016-08-25-tdd-series-1-techniques.md",
    "date": "2016-08-25 00:00:00 +0000",
    "createdDate": "2016/08/25"
  },
  {
    "id": "/2016/08/07/tieba-final-summer-competition-review",
    "title": "2016年五子棋贴吧★拯救玛利亚杯★ 备战录与棋评",
    "summary": "报名比赛后有两周的时间，说起来因为每天要上班，因此实际的准备时间加进来其实不长，而且谱看多了有时还会恶心干呕。然后前段时间听了九指老师的高级班，对，我是顺便来安利一下九指的高级班的！听了高级班，讲到布局准备的一些东西，这次比赛里也有意识地去分析对手和准备开局。虽然针对个人的准备，最后都用在了别的人身上。",
    "category": "",
    "tags": "",
    "url": "/2016/08/07/tieba-final-summer-competition-review.html",
    "path": "_posts/2016-08-07-tieba-final-summer-competition-review.md",
    "date": "2016-08-07 00:00:00 +0000",
    "createdDate": "2016/08/07"
  },
  {
    "id": "/2016/07/20/elegant-mac-intellij-shortcuts",
    "title": "Mac优雅的工具集——Intellij快捷键",
    "summary": "本篇是我Mac优雅工具集系列下其中的一篇文章，[原文全文](https://linesh.gitbooks.io/gitbook-elegant-mac-tools-system-closure/content/index.html)托管在Gitbook上，分享了Mac系统下一些使工作变得更高效的工具。",
    "category": "",
    "tags": "",
    "url": "/2016/07/20/elegant-mac-intellij-shortcuts.html",
    "path": "_posts/2016-07-20-elegant-mac-intellij-shortcuts.md",
    "date": "2016-07-20 00:00:00 +0000",
    "createdDate": "2016/07/20"
  },
  {
    "id": "/翻译/2016/06/26/auto-deploy-translation-to-production-using-jenkins-and-qiniu",
    "title": "我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的",
    "summary": "感兴趣的同学可以关注这个[翻译项目](https://github.com/linesh-simplicity/translation-spring-mvc-4-documentation) 、 [我的博客原文](http://ethan.exthoughtworkers.tech/#/posts/2016-06-26-auto-deploy-translation-to-production-using-jenkins-and-qiniu) 和 [我的Github](https://github.com/linesh-simplicity)。",
    "category": "翻译",
    "tags": "github,, 七牛,, jekyll,, ci,, gitbook,, markdown",
    "url": "/翻译/2016/06/26/auto-deploy-translation-to-production-using-jenkins-and-qiniu.html",
    "path": "_posts/2016-06-26-auto-deploy-translation-to-production-using-jenkins-and-qiniu.md",
    "date": "2016-06-26 00:00:00 +0000",
    "createdDate": "2016/06/26"
  },
  {
    "id": "/2016/06/23/spring-mvc-documentation-reference",
    "title": "Spring MVC官方文档翻译稿发布",
    "summary": "这份翻译终于大概可以发布第一版可读的原型。几天在国内一些网站推广了一下，有点分散，于是决定在大本营这里放一份完整的发布稿，相当于是官方声明了，哈哈。既然是官方声明，那么官方这里倒是可以给点bouns，说说翻译过程的想法，以及最近一些情况。",
    "category": "",
    "tags": "",
    "url": "/2016/06/23/spring-mvc-documentation-reference.html",
    "path": "_posts/2016-06-23-spring-mvc-documentation-reference.md",
    "date": "2016-06-23 00:00:00 +0000",
    "createdDate": "2016/06/23"
  },
  {
    "id": "/2016/03/28/quick-coding-bibles",
    "title": "唯快不破——快速编码实践",
    "summary": "必先正名 —— 何谓快",
    "category": "",
    "tags": "",
    "url": "/2016/03/28/quick-coding-bibles.html",
    "path": "_posts/2016-03-28-quick-coding-bibles.md",
    "date": "2016-03-28 00:00:00 +0000",
    "createdDate": "2016/03/28"
  },
  {
    "id": "/2016/03/21/javascript-package-compress-template-and-reuse",
    "title": "说开去——项目的JavaScript模块化实践（下篇）",
    "summary": "为保护商业机密，本博客中出现的所有代码与文字均已隐去所有与客户相关的信息。若仍有泄露请第一时间联系博主我：linesh.simpcity@gmail.com。",
    "category": "",
    "tags": "",
    "url": "/2016/03/21/javascript-package-compress-template-and-reuse.html",
    "path": "_posts/2016-03-21-javascript-package-compress-template-and-reuse.md",
    "date": "2016-03-21 00:00:00 +0000",
    "createdDate": "2016/03/21"
  },
  {
    "id": "/2016/03/17/a-module-require-confusion",
    "title": "说开去——项目的JavaScript模块化实践（上篇）",
    "summary": "为保护商业机密，本博客中出现的所有代码与文字均已隐去所有与客户相关的信息。若仍有泄露请第一时间联系博主我：linesh.simpcity@gmail.com。",
    "category": "",
    "tags": "",
    "url": "/2016/03/17/a-module-require-confusion.html",
    "path": "_posts/2016-03-17-a-module-require-confusion.md",
    "date": "2016-03-17 00:00:00 +0000",
    "createdDate": "2016/03/17"
  },
  {
    "id": "/2016/03/13/elegant-mac-oh-my-zsh",
    "title": "Mac优雅的工具集——oh-my-zsh篇",
    "summary": "本篇是我Mac优雅工具集系列下其中的一篇文章，[原文全文](https://linesh.gitbooks.io/gitbook-elegant-mac-tools-system-closure/content/index.html)托管在Gitbook上，分享了Mac系统下一些使工作变得更高效的工具。",
    "category": "",
    "tags": "",
    "url": "/2016/03/13/elegant-mac-oh-my-zsh.html",
    "path": "_posts/2016-03-13-elegant-mac-oh-my-zsh.md",
    "date": "2016-03-13 00:00:00 +0000",
    "createdDate": "2016/03/13"
  },
  {
    "id": "/2016/03/11/elegant-mac-iterm2",
    "title": "Mac优雅的工具集——iTerm2篇",
    "summary": "本篇是我Mac优雅工具集系列下其中的一篇文章，[原文全文](https://linesh.gitbooks.io/gitbook-elegant-mac-tools-system-closure/content/index.html)托管在Gitbook上，分享了Mac系统下一些使工作变得更高效的工具。",
    "category": "",
    "tags": "",
    "url": "/2016/03/11/elegant-mac-iterm2.html",
    "path": "_posts/2016-03-11-elegant-mac-iterm2.md",
    "date": "2016-03-11 00:00:00 +0000",
    "createdDate": "2016/03/11"
  }
]