
上周和一位即将毕业的大学生聊天。他很厉害,学了很多东西,却感叹道:“很多人学了好多编程语言,但最后也只停留在能写一个 ‘Hello World’1 的程度。” 我笑了笑,说:“那是因为他们大多一直在准备学习,往往刚刚开始,就放弃了。”
——题记
我叫雨帆。所有汉字中,我最喜欢、也最擅长写的就是“雨”和“帆”这两个字。并不是因为我字写得好,而是因为我专门练过。
这句话,其实可以套在很多事情上。无论是技能还是兴趣,想要掌握,都不是一蹴而就的,而是反复练习、持续积累的结果。没有人能一开始就成长为参天大树,即使是天才,也有常人难以想象的汗水与努力。
所以一直以来,我都很认同一句话:信念永远不能达到目的地。每个人都有自己的梦想,但如果只是停留在“梦想”,不去行动,那么它也仅仅是一个梦。
记得三年前,有一位叫 谢钦 的网友给我发邮件,问了很多关于独立博客的问题。那一刻我就像在茫茫大海中看见了一束光。因为长期以来,我总以为只有我一个人在做这件事,身边无人理解。而突然有人懂你、与你共鸣的感觉,真的让人感动。
然而三年过去,他的博客主页上依然写着那句话:“未命名博客更新中……”
我并不是要刻意嘲讽这位朋友,而是觉得有些遗憾。因为,建立一个独立博客的准备过程真的很麻烦——尤其是在国内,还得经历繁琐的备案流程。若不是出于热爱,很多人一开始就会选择放弃。可惜的是,即便准备好了域名、服务器、系统、模板,却在最关键的一步——“开始写作”——上放弃了。
写代码的时候,老大会经常提醒我们一句话:**不要过度设计。**所谓过度设计,就是和业务无关的东西写了一大堆,但真正关键的业务逻辑却很少。
说到这儿,不得不提知乎上那个很火的问题:为什么有些大公司技术弱爆了?看到这个问题时,我就想起前老大常说的一句话——“满足业务需求的代码,就是好代码。”
对于很多还没毕业的计算机专业学生来说,这句话可能难以理解。毕竟当他们看到一些外表光鲜的项目,却发现底层代码简直糟糕透顶,甚至数据库设计都违反教科书级规范时,往往会感到震惊。但事实是,这些项目之所以存在、盈利,正是因为它们最起码做对了一件事:满足了业务需求。
当然,我并不是在为“烂代码”洗地。对于互联网公司而言,快速上线、持续迭代,才是维持竞争力的关键。尤其是智能手机用户可能最有体会——许多 APP 一周能更新好几次。那为什么不一开始就把设计定好呢?
从产品角度来看,**需求是不断变化的。**以输入法为例:最初用户只想打字时少选字,于是有了词库;后来又有了按词频排序的候选词;再后来,因网络聊天的普及,出现了 Emoji、字符画等功能……这些需求的出现,谁也无法在最初设计阶段预料到。如果你一开始就想面面俱到,潜心打磨几个月甚至几年,结果很可能是:要么市场早被别人抢走,要么你自己被耗死在设计阶段。
所以,很多事情一开始不可能就做到完美。如果只是一味思考“怎么做好”,而迟迟不动手,那永远也做不出来。你必须先动手——哪怕只是写个 demo,先跑通主流程,再一点点打磨细节。如果一开始就追求完美,要么累到想放弃,要么根本等不到成果。
上周参加 OpenResty Meetup 时,我和一位架构师聊到“架构设计”。在他看来,架构的存在,是公司业务达到一定规模后的自然产物。对初创公司来说,架构往往不是必需品,因为业务量还没到那个程度。套用安迪·比尔定律,当你的业务规模还很小,再精致的架构设计都不如一个能跑的主流程。按照业内的常见标准,只有当业务量上升到百万级,才真正需要系统性的架构与设计。
当然,这种观点或许有些偏激,我保留意见。但如果回到“写代码”这件事上,我觉得成长路径大概是这样的:
能写出代码→能写出满足业务需求的代码→能优化满足业务需求的代码→能为未来的需求变化预留接口→能将可变行为参数化→能在现有语言体系中持续演进→不再为设计模式而设计模式→理解并践行 Clean Code 准则→拥抱 TDD,不断重构与测试驱动。
换句话说: 不要为了设计模式而设计模式,不要提前优化,不要过度封装,不要一味追新技术。
很多经验丰富的程序员写的代码,往往小而精,恰到好处。当年我在写公司开放平台时,整整半个月几乎毫无进展。后来带我的师兄对我说了一句让我醍醐灌顶的话:
“先理解需求,构建抽象实体,打通主流程。”
如果我一直纠结“用什么框架”“怎么写才优雅”,那今天可能还没写出任何成果。
完美主义是很多人的通病。我们希望一开始就把事情做到最好,于是花大量时间准备、思考、权衡。等真正动手时,却发现别人早已领先几步。
当然,准备是必要的,但行动才是关键。只准备、不实践,再好的计划也只是纸上谈兵。
我的话说完了。

Footnotes
-
Hello World,基本上任何编程语言的教科书,一开始都是教大家如何写一个Hello World,久而久之成为一个梗。 ↩
第一次来~~
西门群里看到你的博客还有原来王叨叨的,现在还在偶尔更新,你们是动力啊[good]
走在写的路上....独立博客也越来越小众了
我喊“准备减肥”都两年了,然而……
以前存在书签里的那些链接似乎都很有默契,主页写着相同的话:无法访问此网站,DNS_PROBE_FINISHED_NXDOMAIN。
该做什么,要速度,不强求,随意,进步更快。
图可真不错。
以前有人兴趣盎然地来问我独立博客的事情,以及自信满满地要写什么什么的,我还是会秉着同圈子交流的心态聊半天。现在见多了死的很快的,基本就不搭理了。
本科把当时学校最流行的几种语言都上课学过,最后熟悉的还是javascript,也仅仅停留在入门阶段。研究生想想痛下决心精通java去,最终除了写论文的算法外没敲几行代码。现在就是好像各种都会一点,各种都不太熟悉。
估计以后还是主要用java写吧,需要慢慢结合项目多熟悉熟悉,现在刚来实习就修点小bug,前后端都涉及到一些。
感觉我每次说去健身就是这么回事情
我几乎也是只能写个Hello World、、、、、