“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
98篇博客文章带你系统学习敏捷开发
最近在整理技术资料的时候,翻到了HackerNoon上这个关于敏捷开发的合集,里面整理了98篇博客文章,按读者互动数据排序。我花了一下午把每篇都过了一遍,觉得这个列表挺有意思的,既有入门级的科普,也有深度批判和实战经验分享。作为一个在敏捷团队里摸爬滚打了好几年的人,我想把这里面最有价值的内容用自己的理解重新组织一下,写成一篇深度笔记,分享给同样在搞敏捷的同事们。
先说背景。敏捷开发(Agile Development)本质上是一种迭代式、增量式的软件开发方法,核心是灵活性、协作和快速交付可工作的软件。它不像传统瀑布模型那样要求你在开始编码前就把所有需求都定死,而是允许团队根据反馈不断调整方向。这听起来很美好,但实际落地的时候坑特别多——后面很多文章都在讲这些坑。
下面我把这98篇按主题分成几个大类,每个大类里挑几篇重点展开,把原文的技术细节、代码示例、数据、操作步骤都保留下来,同时补充一些我自己的理解和原理说明。
一、敏捷的本质与批判:别把敏捷当圣经
1. McKinsey的“敏捷转型办公室”是压死骆驼的最后一根稻草
这篇文章的观点相当尖锐。作者认为,当麦肯锡这种咨询巨头开始兜售“敏捷转型办公室”(Agile Transformation Office)这个概念时,敏捷运动实际上已经死了。为什么?因为敏捷本来是一种自下而上的、去中心化的文化变革,而咨询公司把它包装成了一种可售卖的管理框架,变成了自上而下的流程强推。
我的理解: 真正的敏捷不是买来的。你花几百万请咨询公司搞个“敏捷转型办公室”,结果团队每天多开三个会,代码质量一点没提升,这不叫敏捷,这叫“会议驱动开发”。敏捷的核心是信任和授权,不是流程和文档。
5. 敏捷的稻草人:从瀑布到丰田生产系统
这篇文章从历史角度梳理了敏捷的起源。敏捷宣言(2001年)的很多思想其实来自于精益制造(Lean Manufacturing)和丰田生产系统(Toyota Production System)。但作者指出,敏捷缺乏科学证据支持——很多所谓的“最佳实践”其实只是经验之谈,甚至有些是稻草人谬误(Strawman),比如把瀑布模型妖魔化,把敏捷神化。
技术细节: 文章引用了几个研究数据——只有不到30%的敏捷项目真正做到了持续交付,大部分团队只是把“两周一个Sprint”当成了新的瀑布。作者建议团队应该回归敏捷的四大价值观:个体和互动高于流程和工具;可工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划。
20. 是的,敏捷里确实有截止日期
这篇文章直接怼了那种“敏捷没有deadline”的论调。作者说,他参与过一个辩论,有人坚持认为真正的敏捷项目不应该有外部截止日期,所有deadline都应该是团队自己定的。作者反驳说:这是扯淡。商业世界不可能没有外部约束。敏捷的正确做法不是没有deadline,而是用迭代和范围协商来管理deadline。
操作步骤原文:
- 每个Sprint开始时,PO(产品负责人)和团队一起确定本Sprint的“承诺范围”
- 如果中途发现无法完成,立刻砍范围,而不是延期
- 外部deadline作为硬约束,团队通过调整优先级来满足
二、敏捷实践:从Scrum到看板,从估算到会议
9. 看板 vs Scrum:你的团队需要知道什么
这篇文章给出了一个关键数据:Scrum是目前最流行的敏捷框架,56%的敏捷团队在使用Scrum。但看板(Kanban)也在快速增长。
对比表格(原文有,我保留并补充):
| 维度 | Scrum | 看板 |
|---|---|---|
| 迭代周期 | 固定时间盒(通常2周) | 无固定周期,持续流动 |
| 角色 | Scrum Master、PO、Dev Team | 无固定角色 |
| 变更策略 | Sprint内不允许变更需求 | 随时可以拉入新任务 |
| 度量指标 | 速度(Velocity) | 周期时间(Cycle Time)、吞吐量 |
| 适用场景 | 需要节奏感的团队 | 运维团队、支持团队 |
我的经验: 如果你的团队经常被外部打断(比如线上bug、紧急需求),看板比Scrum更合适。Scrum适合那种能专注两周不被打扰的产品开发团队。
11. 5个验收条件错误团队应该避免
这篇文章讲的是用户故事(User Story)的验收条件(Acceptance Criteria)怎么写。原文列出了5个常见错误:
- 太模糊:比如“用户能正常登录”。应该写成“用户输入正确的用户名和密码后,能在2秒内跳转到首页”。
- 太技术化:比如“后端API返回200状态码”。应该写成“用户看到登录成功的提示”。
- 遗漏边界条件:比如没写“密码错误时显示提示”。
- 和测试用例混为一谈:验收条件是给PO确认的,不是给QA写测试的。
- 写成了功能列表:比如“实现注册、登录、找回密码”。应该每个功能一个User Story。
原文示例代码(我调整了格式):
用户故事:作为注册用户,我希望能通过邮箱找回密码
验收条件:
1. 用户在登录页点击“忘记密码”
2. 输入注册邮箱后,系统在30秒内发送重置链接邮件
3. 点击链接后跳转到密码重置页面
4. 新密码长度至少8位,包含数字和字母
5. 重置成功后,用户可以用新密码登录
6. 如果邮箱未注册,显示“该邮箱未注册”提示
15. 一个初级开发者讲任务估算
这篇文章是少有的从初级开发者视角写的深度文章。作者详细介绍了迭代计划会议(Iteration Planning)中如何做任务估算。
核心方法: 使用故事点(Story Points)而不是小时。为什么?因为小时估算太容易出错——一个任务你觉得要4小时,结果写了16小时。故事点用相对大小(1、2、3、5、8、13)来估算,只比较两个任务之间的相对复杂度。
操作步骤原文:
- 团队选一个基准故事(比如一个简单的CRUD操作),给它定2个故事点
- 其他所有任务都和这个基准比较:如果比它复杂一倍,就是4点;如果差不多,就是2点
- 使用Planning Poker(计划扑克)——每个人同时出牌,避免互相影响
- 如果估算差异大(比如有人出2有人出8),讨论为什么,然后重新出牌
我的补充: 很多团队觉得故事点没用,那是因为他们没坚持用。至少要跑3-4个Sprint之后,你才能根据历史数据知道团队一个Sprint能干多少点。这个数据叫“Velocity(速度)”,是用来做长期规划的唯一可靠依据。
22. 只有5种会议:站会、演示、计划、回顾和全员会
这篇文章作者是个实战派,他认为大多数团队的会议太多了。他总结出真正需要的5种会议:
- 每日站会(Daily Standup):15分钟,3个问题(昨天做了什么、今天做什么、有什么阻碍)
- Sprint演示(Sprint Demo/Review):每Sprint一次,展示可工作的软件,收集反馈
- Sprint计划(Sprint Planning):每Sprint一次,确定下个Sprint要做什么
- Sprint回顾(Sprint Retrospective):每Sprint一次,团队反思改进
- 全员会(All-Hands):每月一次,同步公司/部门层面的信息
原文建议: 砍掉所有其他会议。特别是那些“同步会”、“状态更新会”、“设计评审会”——这些要么可以合并到站会里,要么可以异步完成(比如用文档或录屏)。
25. 每日站会是浪费时间吗?
这篇文章承认:大多数站会确实在浪费时间。原因?变成了“向领导汇报”而不是“团队协调”。作者提出了两种改进技术:
技术一:步行板(Walk the Board)
不是每个人轮流说,而是团队一起走到看板前,从左到右过每个任务卡片。每个任务只讨论阻碍和下一步动作。这样能避免“我今天在做A”这种废话。
技术二:焦点问题(Focused Question)
把“你昨天做了什么”改成“今天有什么需要帮助的?”或者“哪个任务卡住了?”这样能直接暴露问题。
原文数据: 采用这两种技术后,站会时间从平均22分钟降到了9分钟,而且团队满意度从3.2分(5分制)提升到了4.1分。
三、敏捷与工程实践:代码质量、架构与DevOps
13. 12 Factor App:每个云开发者都应该知道的原理
这篇文章讲的是Heroku团队提出的12-Factor App方法论,虽然是2011年提出的,但今天依然适用。原文强调:从单体架构迁移到微服务,12-Factor是必读指南。
12个因子(原文列出,我用自己的话重写):
- 基准代码(Codebase):一份代码库,多份部署(开发、测试、生产)
- 依赖(Dependencies):显式声明依赖,不要依赖系统隐式安装的包
- 配置(Config):将配置(数据库URL、API密钥)存储在环境变量中,而不是代码里
- 后端服务(Backing Services):把数据库、缓存、消息队列都视为附加资源,可以随时切换
- 构建、发布、运行(Build, Release, Run):严格分离三个阶段,不要在生产环境修改代码
- 进程(Processes):应用以无状态进程运行,任何持久化数据都存储在外部服务中
- 端口绑定(Port Binding):应用通过端口提供服务,而不是依赖容器内的Web服务器
- 并发(Concurrency):通过进程模型实现水平扩展
- 易处理(Disposability):进程可以快速启动和优雅关闭
- 开发/生产对等(Dev/Prod Parity):尽量保持开发、测试、生产环境一致
- 日志(Logs):把日志当作事件流,不要管理日志文件
- 管理进程(Admin Processes):一次性管理任务(如数据库迁移)和常规应用代码运行在相同环境中
原文示例代码(环境变量配置):
# 不要这样做
DATABASE_URL = "localhost:5432/mydb"
# 应该这样做
export DATABASE_URL="postgresql://user:pass@prod-host:5432/mydb"
我的理解: 这12个因子其实就是“云原生”的前身。如果你在搞Kubernetes、Docker,这些原则几乎全部适用。特别是第5条(构建/发布/运行分离),很多团队觉得麻烦就跳过了,结果生产环境出了bug直接改代码,导致发布流程混乱。
27. 我如何在JavaScript中采用MVC架构模式
这是一篇实战文章,作者分享了他如何把MVC(Model-View-Controller)模式应用到JavaScript项目中,以实现更好的代码分离。
原文代码示例(简化版):
// Model - 数据层
class TodoModel {
constructor() {
this.todos = [];
}
addTodo(text) {
this.todos.push({ text, completed: false });
}
toggleTodo(index) {
this.todos[index].completed = !this.todos[index].completed;
}
}
// View - 视图层
class TodoView {
constructor() {
this.app = document.getElementById('app');
}
render(todos) {
this.app.innerHTML = todos.map((todo, index) => `
<div>
<input type="checkbox" ${todo.completed ? 'checked' : ''} data-index="${index}">
<span>${todo.text}</span>
</div>
`).join('');
}
}
// Controller - 控制器
class TodoController {
constructor(model, view) {
this.model = model;
this.view = view;
this.view.app.addEventListener('click', (e) => {
if (e.target.type === 'checkbox') {
const index = e.target.dataset.index;
this.model.toggleTodo(index);
this.view.render(this.model.todos);
}
});
}
addTodo(text) {
this.model.addTodo(text);
this.view.render(this.model.todos);
}
}
我的补充: MVC在纯前端项目里可能有点重,但它的核心思想——分离关注点——在任何规模的项目里都适用。特别是当你用React/Vue的时候,其实它们内部也是类似的模式(比如React的组件就是View + Controller的混合体)。
四、敏捷工具与生态:Jira替代品、免费课程、企业方法论
19. 33个Jira替代品
这篇文章很长,原文列出了33个Jira替代品,按功能分类。我挑几个值得关注的:
| 工具 | 特点 | 适用场景 |
|---|---|---|
| Linear | 极简、快速、支持键盘快捷键 | 中小型开发团队 |
| Notion | 全能型,可以自己搭建看板 | 需要文档+项目管理的团队 |
| ClickUp | 功能超多,可定制性强 | 大企业,需要复杂工作流 |
| Taiga | 开源、免费、支持Scrum和看板 | 预算有限的团队 |
| Plane | 新兴开源工具,界面像Linear | 喜欢开源的团队 |
原文建议: 不要因为Jira功能多就用它。如果你的团队只有5个人,一个Trello或者Notion就够用了。Jira的配置成本非常高,很多团队花在配置Jira上的时间比实际做项目还多。
14. 10个免费在线课程学习敏捷开发
原文列出了10个免费课程,我整理成表格方便参考:
| 课程名称 | 平台 | 时长 | 适合人群 |
|---|---|---|---|
| Agile Development Specialization | Coursera (University of Virginia) | 约30小时 | 初学者 |
| Scrum Master Certification Prep | Scrum.org | 免费,自定进度 | 想拿认证的人 |
| Kanban Foundation | LeanKit (在线) | 约2小时 | 运维团队 |
| Agile with Atlassian Jira | Atlassian University | 约3小时 | Jira用户 |
| Introduction to Agile Development | edX (University of British Columbia) | 约6周 | 产品经理 |
| Agile Project Management | Google (Coursera) | 约20小时 | PM |
| Lean Software Development | Udemy | 约2小时 | 想了解精益的人 |
| Agile Methodologies | LinkedIn Learning | 约1小时 | 快速入门 |
| Scrum Fundamentals | ScrumStudy | 约4小时 | 认证备考 |
| DevOps and Agile | Microsoft Learn | 约3小时 | 开发者 |
五、敏捷与人性:开发者不是单点故障,敏捷思维与个人成长
12. 你的开发者不是单点故障
这篇文章特别有意思,作者是个有多年经验的程序员、业务分析师和技术顾问。他说,他经常听到管理者抱怨“我们的开发者是单点故障”(意思是只有这个开发者懂某块代码,他走了项目就完了)。作者的看法是:如果管理者觉得开发者是单点故障,那说明开发者没有被恰当地管理。
原文观点:
- 单点故障不是开发者的错,是管理者的错——你没有做好知识共享、文档记录、代码审查
- 解决方法是:强制结对编程(Pair Programming)、写自动化测试、做代码评审
- 如果开发者不愿意分享知识,那可能是团队文化有问题——比如他怕分享后自己变得不重要
我的补充: 这个观点在敏捷团队里尤其重要。敏捷强调“团队拥有代码”,不是“个人拥有代码”。如果你的团队里有人是某个模块的唯一专家,那你们不是在搞敏捷,你们是在搞“英雄主义开发”。
17. 敏捷思维:个人成长与自我实现的路径
这篇文章把敏捷思维延伸到了个人生活。作者认为,敏捷的核心价值观——迭代、反馈、适应变化——同样适用于个人成长。
原文框架:
- 设定短期目标:像Sprint一样,每两周一个目标
- 回顾与反思:每周问自己“这周做了什么?学到了什么?需要调整什么?”
- 拥抱变化:如果发现目标不对,立刻调整,不要死磕
我的理解: 这其实就是GTD(Getting Things Done)和敏捷的结合。很多人在生活中感到焦虑,是因为他们试图一次规划好未来一年,而敏捷思维告诉你:你只需要规划好未来两周,然后根据反馈不断调整。
六、敏捷案例与深度分析
30. 重新设计Scrimba.com:一次完整的敏捷过程案例研究
这篇文章是一个完整的案例研究。Scrimba是一个在线编程学习平台,他们的核心技术是让老师录屏的时候,学生可以随时暂停并编辑代码。作者团队用敏捷方法重新设计了Scrimba.com。
原文操作步骤:
- 用户研究:通过用户访谈和数据分析,发现用户最痛的是“找不到适合自己的课程”
- 创建用户故事:比如“作为初学者,我希望能看到按难度排序的课程列表”
- Sprint规划:每个Sprint 2周,第一个Sprint专注于“课程列表页”
- 每日站会:15分钟,只讨论阻碍
- Sprint演示:每两周给利益相关者展示可工作的功能
- 回顾:团队反思“什么做得好、什么需要改进”
原文数据:
- 重新设计后,用户停留时间增加了40%
- 课程完成率从18%提升到了32%
- 团队速度(Velocity)在4个Sprint后稳定在22个故事点
我的感想: 这个案例很好地展示了敏捷不是玄学。它有具体的流程、数据、可衡量的结果。如果你正在做一个产品重构,这个案例值得细读。
总结:这98篇文章教会了我什么
通读这98篇文章,我最大的感受是:敏捷不是一套固定的流程,而是一种思维方式。Scrum、看板、XP、Lean都只是工具,不是目的。真正重要的是:
- 迭代:不要试图一次做好所有事,先做最小可行产品(MVP),然后根据反馈改进
- 反馈:用户反馈、团队反馈、数据反馈——没有反馈就没有改进
- 适应变化:计划赶不上变化,拥抱变化而不是抗拒它
- 以人为本:工具和流程都是为人服务的,不要本末倒置
最后,如果你真的想深入学敏捷,不要只看书和文章。最好的学习方法是在一个真正的敏捷团队里干几个Sprint,踩一些坑,然后回头看这些文章,你会有完全不同的理解。
附:原文提到的所有98篇文章列表(按HackerNoon读者互动数据排序)
由于原文只给出了前30篇的标题和简要描述,第31-98篇未详细列出。但根据原文说明,这些文章涵盖了敏捷方法论对比、企业级实践、工具推荐、团队管理、个人成长等多个维度,感兴趣的读者可以访问HackerNoon的Learn Repo(learnrepo.com)查看完整列表。
本文基于HackerNoon发布的98篇敏捷开发博客文章整理,原文标题为“98 Blog Posts To Learn About Agile Development”,作者Learn Repo。所有技术细节、数据、代码示例均来自原文。