职业与工作方法250bpm.com
把手头的东西做完
Finish your stuff
2015 — 2021,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
ZeroMQ 作者 Martin Sustrik 的短文,主张开发者应该把手头的项目做完、收尾,而不是留下永远“未完成”的半成品。文章引发了对软件能否真正“完成”的长期讨论。
为什么经久不衰:“完成你的项目”是每个开发者都会反复面对的诱惑与挣扎,这篇短文多年后仍能引发共鸣与争论。
HN 评论精选
没有新提交不等于项目被放弃——软件可以“完成”
看到别人把我 GitHub 上的项目称为“被放弃”,仅仅因为一两年没有提交,我就很恼火。它们不是被放弃了,而是已经完成了:它们做到了设计目标,我也一直在用。未解决的 issue 可能只是我不需要的功能请求,或只在极端边缘场景才出现的小 bug。我欢迎高质量的补丁,但除此之外没兴趣继续跟进。
rlpb查看英文原文
I find it irritating when people look at some of my projects on Github and consider then "abandoned" because they haven't had any commits in a year or two. They're not abandoned: they're finished. They do what they're designed to do, and I use them regularly. Outstanding issues may exist for feature requests that I don't need, or for minor bugs that won't occur in anything but obscure edge cases that don't apply to the primary use case. I welcome high quality patches but otherwise have no interest in pursuing them.
软件难以“完成”的根源是外部世界不断变化
想象你写了个定时提醒的小 web 应用。它算完成了吗?哦,你想要日历集成,加上。现在算完成了吗?哦,还要出移动版?好,现在呢?抱歉 iOS 版需要更新以保持兼容。现在呢?出现了一个大家都在用的新日历应用,要不要适配?问题不在于软件不完整,而在于世界一直在变。只有当环境不变(如 Unix)时,工具才可能被“完成”。
projectramo查看英文原文
What would that look like? Consider an example: You have made a little web app that beeps at certain times of the day to remind me to do something. Is it complete? Oh, you want a calendar integration. That makes sense. You add it. Is it complete? Oh, you say you want to release mobile versions? Okay, now is it complete? Sorry, but the iOS version needs to be updated to remain compatible. Now is it complete? There is a new popular cal app that everyone uses. Should you update it to work with that? The problem isn't that the software is incomplete. The "problem" is that the world keeps changing. To the extent that the environment doesn't change (unix), you can "complete" your tool.
木匠/家具类比不适用于软件开发
我是唯一讨厌木匠类比的人吗?作为一个业余做木工的程序员,我认为用它来思考软件开发有一百万个不合适:椅子不需要支持的平台、没有新的安全问题、不需要更新来留住客户;也不会有别人接手维护这把椅子,还得熟悉制作它用的工具。
netcraft查看英文原文
Am I the only one that really hates the carpenter analogy? As someone who does woodworking on the side of my programming, there's a million reasons why it's a terrible way to think about software development. The chair doesn't have supported platforms, new security issues, or the need to be updated so that people keep buying the same chair. Someone else isn't going to have to come along later to maintain the chair and have to be knowledgeable about the specific tools that the chair was built with.
分享“完成它!周末”活动经验,呼应完成项目的理念
我以为 Unix 哲学推崇的是“小而精、只做一件事”的工具。我和朋友曾办过一次“完成它!周末”(对标创业周末),想法是让大家聚一个周末,把项目最后那 10% 收掉。可惜只有我们俩到场(不过我们都完成了项目,说明这种黑客马拉松也许值得每半年办一次)。
wainstead查看英文原文
I thought the Unix philosophy embraced the idea of "small tools that do one thing really well." > Please join me in my effort and do finish your projects. Hear, hear. A friend and I hosted a "Finish it! Weekend" once (as opposed to a "Startup Weekend"). The idea was to get people together for one weekend and finish that last 10% or whatever of a project. Sadly we were the only two to show up. (And we both finished our projects, which suggests this might be a good kind of hackathon to host every six months or so).
历次讨论
同类还值得读
用十年时间自学编程(1998)
Teach Yourself Programming in Ten Years (1998)
Peter Norvig 1998 年的经典文章,回应“21天/24小时学会编程”一类速成书,主张真正精通编程需要约十年持续、有意识的练习。
职业与工作方法上首页 11 次 · 2007–2025norvig.com编辑精选如何成为一名程序员:简短、全面而个人的总结
How to be a Programmer: A Short, Comprehensive, and Personal Summary
一篇广为流传的程序员成长指南,作者以个人经验系统总结了成为优秀程序员所需的各项技能——从调试、测试、沟通到团队协作与身心健康。
职业与工作方法上首页 6 次 · 2008–2015samizdat.mines.edu编辑精选不要自称程序员
Don't Call Yourself a Programmer
经典职业建议文章劝软件工程师不要把自己局限在“程序员”这个标签上,而要从公司业务角度说明自己创造的价值;文中讨论了成本中心与利润中心、头衔、求职与职业选择,也顺带批评了学术界的价…
职业与工作方法上首页 5 次 · 2011–2021kalzumeus.com编辑精选创作者的日程与经理的日程
Maker's Schedule, Manager's Schedule (2009)
Paul Graham 在这篇文章里把时间表分成两类:管理者的日程以小时为单位,会议可以填满一天;创作者(程序员、写作者等)的日程则以半天为单位,需要长时间不被打断的连续块。
职业与工作方法上首页 5 次 · 2009–2021paulgraham.com编辑精选为什么程序员的薪酬不与生产力成正比
Why programmers are not paid in proportion to their productivity
讨论为什么程序员的薪酬往往不随其生产力成比例增长:生产力难以客观量化,薪酬更多受组织预算、岗位定价和个人议价能力影响。
职业与工作方法上首页 5 次 · 2009–2022johndcook.com