如何找到并打造一个值得自豪的项目:价值判断与行动清单
Hacker News 上每隔一段时间就会出现一次“Ask HN你最自豪的项目是什么”这类提问。这类帖子之所以好看不是因为它能列出多少惊艳作品而是因为在答案里你能看到技术人最真实的成就感来源。有人骄傲地讲一个已经运行十年的脚本有人得意于自己给社区写的教程比源码还长也有人分享一个用户量不大、但帮一群人解决了实际问题的小工具。翻完回答你会发现真正被反复提及的往往不是最有技术难度、也不是最赚钱的项目而是那些“真的被用起来、真的有始有终、真的改变了一点日常”的东西。我写这篇文章不是要介绍某个具体工具而是想借这个题目把“判断项目价值”和“建立个人成就感”的方法拆开说清楚。内容包括三部分怎么重新理解“最自豪”这三个字怎么给手里积压的旧项目做一次价值盘点怎么从零动手做一个半年后回看仍然觉得值得的项目。最后会附上一份可执行的行动清单适合正处于项目空窗期、想启动新作品或是对自己做过的事总缺乏把握的人。1. “Ask HN”这类提问暴露了技术人什么样的成就感误区1.1 为什么大多数回答讲的都不是代码本身如果你认真翻过“Ask HN你最自豪的项目是什么”这类帖子会发现一个规律回答者很少用“用了多少门技术”“代码量多大”来证明一个项目厉害。更多时候他们讲的是场景。比如一个人说他给家里的老人写了一个极简的天气播报页面老人每天早上打开电脑就会看到今天该穿多厚的衣服。这个页面可能只用了几百行代码连数据库都没有。但它解决了真实问题老人不会看手机 App也不会在复杂界面上找到天气信息。类似的回答还有很多有人写了个命令把每周工作报表自动整理成固定格式有人给社区的志愿者组织做了个报名表有人把自己多年收集的菜谱做成了可全文搜索的静态网站。这些项目有一个共同点它们从一句模糊的“要是能有个东西……”开始最后变成一件别人离不了的东西。代码在这里只是载体真正的价值是问题被解决是日复一日被使用是作者能清楚说出“它改变了什么”。所以当你也在琢磨自己最自豪的项目是什么时先别急着下结论。你会想起的可能不是那些写了很久但从未上线的系统而是一些很小的、但每次打开都很顺手的工具。这不是错觉。成就感往往来自“有用”而不是“复杂”。1.2 “最自豪”的三个判断维度有用、走通、被看见如果你不想只是凭感觉评判自己的项目可以把“最自豪”拆成三个可验证的维度。第一个维度是“有用”。项目是否给某个人、某个群体或者至少给你自己解决了明确的痛点这里的“有用”不需要宏大。能让我每天少做三分钟重复操作就是一种有用。判断标准很简单如果这个项目停止使用会有人发现吗哪怕只有你自己一个人发现也算。第二个维度是“走通”。项目是否完成了从问题定义到实际交付的整个闭环很多人都有过这种经历写完了核心算法但没做错误处理做完了前端页面但没接后端接好了后端但没部署部署了但没有写使用说明。这些半成品不能说没价值但它们很难带来真正的自豪感因为“走通”才能证明你对项目有完整掌控。第三个维度是“被看见”。这里的“被看见”不一定指公开知名度而是指你的付出有没有留下可感知的痕迹。可以是别人用你工具后的反馈可以是你自己写的一篇使用笔记也可以是代码仓库里清晰的提交记录。一个项目哪怕只有你自己使用只要它的产物、文档、输出的结果都能够被再次访问它就有了“被看见”的基础。三个维度不必同时拉满但至少要让其中两个成立。如果一个项目既没有人用又没走通只有你自己知道它存在那它带给你更多是负担而不是自豪。2. 真正让人自豪的项目通常长什么样2.1 解决真实痛点的“小工具”比“大系统”更容易收获认同在那些让人自豪的回答里高频出现的是小工具而不是大系统。原因是小工具往往诞生于“我自己正在被它折磨”的瞬间。比如我自己就经历过类似的事每天在多个项目目录里切换找不到上次运行到哪一步于是花半小时写了个脚本来记录每个项目的进度并自动生成一个简单的状态页。脚本很简陋但它运行了将近一年每次打开终端都看到昨天的进度立刻就知道今天该从哪里继续。这种项目没有架构图没有微服务却比很多“设计精美但没人用”的系统更有生命力。小工具被人记住是因为它足够贴近问题本身。它不需要教育用户不需要写一大堆引导文档用户打开就能用。如果你正在计划一个新项目不妨先问问自己我周围有什么样的小麻烦是每天都会遇到但一直没人好好处理的那往往是最好的起点。2.2 长期跑在自己手里的项目比一次性演示更有说服力一次性项目和长期维护项目给人带来的自豪感完全不一样。一次性演示通常做到“看起来可以跑”就结束了真正的问题——错误处理、边界情况、环境差异、使用体验——都在演示结束之后冒出来。能被称为“最自豪”的项目几乎都经过了一段持续的维护期。这个维护期会让你看到自己当初设计的缺陷逼着你做取舍也让你有机会把粗糙的第一版慢慢打磨到稳定。时间在这里是一个非常重要的过滤器。一个运行了六个月的定时任务哪怕功能很简单它说明你考虑了重启、日志、失败通知、输出目录这些细节一个只在周六下午演示过的小程序只能说明你能在理想条件下写通主流程。我建议你在评估项目时把“持续使用时间”当作一个明确指标。如果某个项目你已经连续用了一个月以上或者有用户连续依赖它一个月以上它已经值得被写进你的作品清单。相反如果项目做了三个星期就再也没有打开过那它此刻还只是一次练习不是作品。2.3 教过别人、留下文档、公开复盘是项目增值最快的方式另一个高赞回答的常见类型是“我写了一套教程”或“我把踩坑过程整理成了文档”。这类项目的技术代码可能不多但它们做到了“被看见”和“走通”。你把自己的经验讲清楚别人照着做成功它带来的成就感是很实在的。给已有项目补齐文档比从零写一个项目更划算。一个项目如果已经有代码、有运行效果你只需要多写一份 README、加两个运行示例、记录几个典型问题它的传播能力和复用价值就会立刻上升。这也是我建议每个想做“自豪项目”的人都反复做的事不要只写代码把代码之外的经验也留下来。公开复盘也很有用。项目结束或阶段性完成后写下“当初为什么做它”“最后做成了什么”“中间有哪些弯路”“如果再让我做一次我会怎么做”。哪怕只是一千字也会让你对项目的理解深一层。这些东西不需要写得像论文只要让六个月后的自己能看懂就已经很有价值。3. 给你的项目做一次“自豪盘点”3.1 先列出所有你做过半年以上的东西很多人对“自己做过什么”的回答往往是模糊的“好像写过一些脚本以前搞过一个网站后来弃了。”如果你也想找到那个值得自豪的项目第一步不是做新项目而是先把旧项目翻出来给它们建一份清单。具体操作可以很简单打开你的代码目录、笔记目录、网盘、GitHub 仓库把能找到的所有与“做东西”相关的条目都列出来。不需要按价值排序先按时间罗列。你会发现有些项目你很久没想起它了但它当年确实花掉了你不少周末有些项目哪怕只写了一百行但你每年都会用到它。列清单的时候建议顺便记下三个信息这个项目大概什么时候开始最后活跃时间是什么时候它解决过什么问题。这三个信息能帮你快速判断一个项目的生命周期和真实价值。很多被遗忘的项目其实只是缺少一次重新唤醒。3.2 用五个问题过滤出真正值得写进简历的项目清单列出来之后用下面五个问题挨个过滤。不用问得太复杂每个项目逐条回答即可这个问题现在还存在吗如果问题已经不存在项目更接近“练习”如果问题还在项目就有继续维护的必要。有没有人实际使用过包括你自己。如果连自己都没有持续用过说明它没有真正解决你的痛点。我能不能随手把它跑起来如果没人看得懂安装方式没有启动说明那它的完成度就要打折。有没有明确的结束点项目是拖了很久的“进行时”还是走完了某个阶段哪怕是一份结果报告也能充当结束点。如果明天要介绍给别人我能五分钟内说清楚它做了什么以及为什么重要吗五个问题的答案不需要全部为“是”但“是”的数量越多越值得被放在你的作品集首页。反之如果五个全是“否”那它暂时不该进入你的自豪列表最多作为一个技术实验记录。3.3 老项目不值得毁掉可以靠“重构、补齐、重启”盘活盘点旧项目时你可能会发现很多“封存”已久的东西。先别急着把整个目录删掉。老项目未必需要推倒重来它真正缺的往往只有三样能跑起来的环境、能看懂入口的文档、一个重新上线的最小版本。你可以按这个顺序处理先把项目在当前电脑上跑起来记下遇到的所有报错然后根据报错和记忆补一份最简单的 README说明安装步骤、启动命令、输入输出最后把项目放到一个固定的、可以回看的场所比如代码托管平台或自己的服务器上。这样做不是为了给所有旧项目强行续命而是为了把“没头没尾的代码”变成“可以被再次评估的东西”。盘活几次之后你会慢慢发现真正值得你花精力继续投入的永远是那些经过前两步之后仍然让你觉得“它有用”的项目。4. 从零做一个能让未来自己骄傲的项目4.1 第一步选一个你会连续用三周的真实问题看完别人的项目心动之后大多数人的问题不是“不会做”而是“不知道该做什么”。我有一个很笨但很有效的方法不要去找高大上的创意只找你生活中那些会连续持续三周以上的小麻烦。这个小麻烦可以是每天花太多时间整理工作照片需要频繁把一份数据转成不同格式发给不同的人家里的文件散落在三个设备上总找不到最新版本想记录自己的阅读进度但现有的笔记工具太重。要注意这个麻烦必须满足两个条件一它是你亲身经历的不是想象出来的二它至少会持续三周不是一次性问题。只有持续时间够长你才可能在项目做完前真的用到它而不是做完了就搁置。选定问题之后不要急着写代码。先用一句话写下“我要解决的问题是什么”再写下“做出来之后使用者每天会怎么打开它”。这一步能帮你把模糊的兴奋感变成清晰的需求边界。4.2 第二步设置硬性边界时间、范围、发布标准很多人做项目做不完成是因为没有给项目设置边界。你以为自己只需要做一个工具结果做到一半想加提醒功能、又想加统计报表、还想做手机适配项目立刻失控。我建议在动工前把三件事写死时间边界给自己四周时间最多不超过六周。时间到了不管做成什么样先停下来复盘。范围边界只做“让问题消失的最小功能”。你可以列一个核心功能、两个辅助功能其他想法全部放到“未来清单”不进版本。发布标准必须有可运行的产物、有几步操作说明、有至少一张运行截图。这三样缺一不可。发布标准不是“功能做完”而是“别人能看懂并运行”。比如说你想做一个会议记录整理工具核心功能可以是“粘贴会议录音转写文本自动按发言人分段”辅助功能可以是“按标签导出”。至于多人协作、自动识别时长、生成周报都应该先放一边。这样做你才能在一个月内得到完整闭环而不是永远在开发过程中。4.3 第三步把“完成”而不是“完美”当成目标小项目最难的一点不是启动而是在“还能继续加功能”的时候果断停止。这里的判断标准不是“我心里觉得它完美了”而是“它已经能解决当初定义的问题”。只要做到这一点就可以宣布这个阶段完成。我给自己的常用做法是在项目开始时先写下一个“完成清单”。清单里只有三条能运行能处理一个真实样例有输出结果且我能看懂结果对不对。当这三条全部打钩我就不再纠结代码是否漂亮、架构是否合理。我可以先把它放到真实环境里用起来等真用到不舒服的时候再根据实际反馈去改。“完成”之后有一个重要动作写使用记录。记录你第一次用它解决真实问题的过程包括用了什么输入、等到什么结果、哪里还觉得别扭。这份记录是后续改进的起点也是你日后分析项目价值的一手材料。5. 提升项目成就感的具体习惯5.1 每次改动都写清楚动机而不是只写“fix bug”写博客也好做开源项目也好真正让你在未来感到“这项目值得”的不是你写了多少行代码而是你能不能快速理解当初为什么这样做。很多人看到自己的旧代码就头疼原因不是代码丑而是没有任何上下文。所以我建议从下一个项目开始给提交信息加上“Why”。不要只写“fix bug”至少写成“修复导出文件名重复的问题加上日期前缀避免覆盖昨天的报表”。也不要把“更新样式”写成“改 CSS”写成“调整表格在手机端不换行的问题改用横向滚动”。这些句子看起来占时间但它们是在给你的决策留下证据。三个月后你回看提交记录本来模糊的记忆会立刻清晰起来。5.2 收集使用证据聊天记录、截图、指标、感谢邮件成就感很容易被低估因为大脑会忘掉大多数“当时挺开心”的瞬间。对抗遗忘的方法是刻意收集证据。我会在项目目录里放一个叫做evidence的文件夹里面只放三类东西第一类是截图包括界面截图、运行结果截图、使用前后的对比截图第二类是数据比如处理耗时、文件大小变化、用户数量、运行次数第三类是反馈不管是一句“这个工具帮了大忙”还是邮件里提的一个改进建议都存下来。这些证据不是为了给别人看而是为了在未来某个信心不足的时刻让自己有据可查。你翻到一张“这是我第一次成功导出结果的截图”时那种真实感远胜于任何自我鼓励。5.3 定期写“项目阶段总结”让成长可见项目做久了会有一个错觉感觉每天都在忙但又好像没做什么。破解这个错觉的方法是定期写阶段总结最好每周或每两周一次每次不超过半小时。总结的格式可以很简单这几周做了什么改动这些改动解决了什么问题有没有发现新的坑下一步打算怎么走。写完之后把总结放到项目的 docs 目录里。当你把时间线拉长到半年再回看这些总结就能清楚看到项目是怎样从一个粗糙原型变成一个稳定工具的。这种“成长可视化”带来的自豪感比任何外部评价都更牢固。6. 容易让你误判的四个坑6.1 把“技术上很难”当成“有价值”技术难度高不等于项目有价值。你研究了一周如何把某个算法调通可能只是因为这个算法本身资料太少你做了一个 React Native 应用可能只是为了体验新技术并不是因为用户真的需要。真正衡量价值的从来都是“有多少人因为这个项目减少了多少麻烦”。技术难可以让你学到东西但学到东西和做出有价值的东西是两件事。6.2 把“花了很多时间”当成“完成度高”一个项目拖了三个月不代表它完成了 90%。很多时候这三个月里有大量时间是在等思路、绕弯路、反复推倒重来。完成与否要看输出物而不是投入时间。与其说“我已经做了三个月”不如问自己“做出来的东西现在能打开吗能解决最初的问题吗”如果答案是不能那它就是未完成哪怕它消耗了你很多时间。6.3 把“收藏了很多资料”当成“开始过项目”收藏夹里全是教程、代码仓库里是空的这种状态很容易让你误以为自己正在积累。实际上资料只有跑进项目里才会变成能力。一个能运行两百行的项目比二十个只存了链接的收藏页更有分量。如果你发现自己总是在看资料却迟迟没有新建项目那就强制自己停掉输入去根据已有的一点点资料先写出最小版本。6.4 把“别人点赞”当成唯一成就感来源信息公开后获得点赞和评论当然很爽。但点赞并不等于长期价值也不等于用户真的在使用。有些项目发布当天热闹一阵之后就没有人再打开有些项目没人点赞但作者自己每天都在用还持续维护了两年。后者对你的帮助更大。你可以把点赞当作反馈但不能把它当作项目是否骄傲的唯一标准。7. 动手清单两个月后我也要能回答一个令人自豪的项目7.1 本周要做的三件事如果你读完前面部分心里已经有了想启动的项目那么本周不要想太多先把下面三件事做完把电脑里所有旧项目的目录列出来按时间整理到一个清单里。用五个过滤问题给每个项目打勾或打叉。从“打勾最多”的旧项目里挑一个能在本周重新跑起来的给它补一份 README。这三件事做完你已经不是在“想”自己有什么自豪项目而是开始主动收拾自己的作品集。7.2 两周内要拿到的可验证结果如果决定从零做新项目那么两周内要拿到三个可验证结果否则项目很容易变成“计划中的项目”项目已经能在本机运行一次并生成真实结果。项目目录里有 README说明启动步骤和使用方式。你已经在某个能公开访问的地方看见了它的截图或输出。这三个结果不能省略任何一个。“能在本机运行”证明走通了主流程“有 README”证明你考虑了别人接手“能公开访问”证明你敢于让它被看见。当这三样都具备时不管功能多简单你已经拿到了一个真实的项目节点。7.3 两个月后回看时的判断标准两个月后你会知道自己是不是真的做出了一个值得自豪的项目。判断标准只有下面几条在这两个月里你有没有至少三次主动打开它而不是因为“必须完成任务”才去碰它项目是不是解决了一个你仍然会遇到的真实问题你能否在五分钟内向别人说清楚它做了什么以及为什么对你很重要最重要的一条如果有人再发起一次“Ask HN你最自豪的项目是什么”你愿不愿意把这个项目写进回答里最后一条很能说明问题。你不需要觉得自己项目有多大型、多惊艳只要你愿意大大方方把它写出来并且能讲清楚它的来龙去脉它的价值就已经被你亲手确认过了。很多人的遗憾不是没有做成过什么而是做成了之后却没有把它整理、命名、公开发布最后它埋在旧目录里连自己都忘记了。希望这篇内容能帮你把自己手里的“半成品”“旧代码”“未公开的成果”变成真正敢拿出来讲的、属于自己的作品。