编程王道,唯“慢”不破

我爸常跟我说的一句话是,慢一点码,才能快点把程序写完。

我在旧金山很多家互联网公司工作过,现在已经 52 岁了,对于程序猿这个职业来说,我的年龄算偏大的。我写代码的速度近乎龟速,事实上,我更像是一个会写代码的设计师。

以前有一次,我和一些比较年轻的程序猿一起工作,他们信奉的编程宗旨是“速度快、更迭少”。我们在同一个 codebase 里合作,就像在共同煮一大锅汤一样。如果我们每个人都持续不间断的贡献代码的话,未来这个工程应该就会很美很壮观的呈现出来。

但是并没有。

问题在于,这些年轻的程序猿们在心里其实有这么一种思想,他们觉得:1、每个人都是可替代的;2、没人应该对某一部分的具体代码负责;3、所有人应该都可以任意修改整个工程的代码。

他们觉得,现在已经有了github这种神器用来管理异步时间内的代码贡献,只要每个人都持之以恒的贡献代码,工程和产品就会顺理成章的出炉了。

事实不是这样的。编程从来就不应该是拿工具来减少软件开发的时间的。

编程应该是一项有节奏感有韵律的运动。我倾向于把工程依照不同的规模和时间度量分成不同的涂层,每一个涂层再从探索、实验、error、临时变量这 些细小的东西开始做起。有点像建设脚手架的形式。每一个涂层最终完成的时候是一段可以部署和扩展的 implementation-ready 代码。这种开发过程有点像是从策略到设计方案最后到完成一栋真正的建筑。

有时候当这栋建筑完成之后,我还会推倒重来一遍,因为我觉得我有更好的建筑方法。这种新的方法有时候是对的,有时候是错的,事实上除非真正去再做一遍,不然你永远无法知道究竟哪一种方法更好。

回到最初那锅汤的问题:在软件开发生态圈里,关于对整个设计流程产生推动与支持的混合思考是很重要的,没有这一部分的工作,再快的程序猿又能做出多 好的设计?很多神经系统科学家相信神经元信息的流动在大脑的传导过程中会有一个短暂的堵塞和混响,这对思维和感知会有很重要的作用。编程的设计也应该是这 样,需要时间。

慢速编程运动

慢速编程运动在维基百科里的解释是这样的:慢速编程运动是慢速运动的一部分,这是一种强调谨慎设计、高质量代码、软件测试和思考的软件开发哲学,反对混杂组装、布满 bug 的代码,以及过于快速的发布周期。

世界上的软件开发团队都在寻找更具预测性的工程项目,希望能促成更多的程序员拥有可持续性的职业生涯。他们提议了一些可以切身操作的实践方法,比如结对编程代码审查代码重构,以开发更可靠更健壮的软件应用。

在旧金山海湾地区,风险投资支持的软件开发正呈现出一种高烧般的热度。利益正驱动着软件开发以一种完全不自然的不对拍的节奏感在运动,它打乱了设计进化(design evolution)原本应有的周期节律和生物钟。关于这一点,RushkoffPresent Shock里说得很明白了。

另一个问题在于,人们对科技越来越诡异的迷恋,以及开发人员对工具异常的狂热。大家总在说,为什么有的软件和应用做得这么烂?没错,确实很烂。烂的原因在于,太多一味求快的程序猿在忙着建设工具,然后用这个工具去支持和适配另一个他们建好的工具,然后再用这个工具去支持和适配另另一个他们建好的工具,然后再用这个工具帮他们写出更快的代码。

这就是我为什么觉得软件开发需要更多的“人”,而不是“工具”的原因。并且,这些人不仅仅只是帮忙做做外面的 UI 艺术之类的而已,应该要有更多的人深入软件开发的内部——确保软件更多的与人文产生共鸣和回响。

当我们谈论编程时,我们在谈论什么?

编程不是打字。

所有的程序猿都明白这一点,但是大部分人都容易忘记这一点

在电脑前噼里啪啦、弹指挥间的感觉确实很爽,这种键盘上啪啪啪的快感却很容易让人忘记编程是一项脑力活动,而不是体力劳动。编程的真正奥义在于,把人类的思维、设计、语言、逻辑和精神创造以一种计算机可以识别和储存的方式记录下来。

我妻子有时会跑到院子里问我,你在编程吗?我说,对,我在编程。事实上我可能正拿着钳子修剪花盆里的花草,或者做做施化肥之类的事情。

植物、土壤、钳子,这些都是编程的好工具,正如键盘、鼠标和双屏幕一样。

目前,我们正在经历一个经济产业的转型期,从新兴到可持续发展之间的一次过渡。新的软件产品和商业模式是需要发展,但为了互联网行业发展的可持续 性,这种速度应该降下来一些了。撸代码不仅仅只是在撸当下用户的需求,撸的更是未来某个行业领域的架构基础。代码应该在程序员的关爱下慢慢的、茁壮的成 长。Like good wine。Like a baby。

[本文参考以下来源:ventrellathing.wordpress.com]

时间: 2024-07-30 10:17:15

编程王道,唯“慢”不破的相关文章

天下性能 唯池不破

文章名字是我杜撰的,之前一直在做服务器开发,上周有机会接触了客户端,发现很多资源没有有效管理起来,甚至有资源泄露的发生,我就先针对特效做了pool,结果在一定程度上纠正之前一直很难解决的位置同步问题. 总结上来客户端的资源有:模型.特效.音频.动画等. 音频怎么管理起来呢,http://answers.unity3d.com/questions/482218/best-practices-for-playing-a-lot-of-audio.html这个链接的撸主也提出同样问题:大概是项目有大量

手游推广:天下武功唯快不破

手机游戏的推广一直都是个难题,移动互联网每天都在更新,玩家的思维也在不断的被影响着.手游传统的推广模式变得有些鸡肋,食之无味弃之可惜.在快节奏的工作.学习及生活中,人们可能现在更能接受的就是快速,便捷.正所谓天下武功唯快不破,其实是一个道理,化繁琐为简单,不断追求少而精的思想理念,放弃华而不实的推广方式,让玩家快速的接受游戏或是勾起玩家对游戏的兴趣. 1.减掉对非核心.泛大众用户的考虑 所有的游戏推广,都想影响更多,更大量的用户.但其实最大的问题就是,很难真正影响到这些用户.比如做用户分析的时候

【转】唯快不破:创业公司如何高效的进行产品研发管理

天下武功无坚不破,唯快不破.在瞬息万变的移动互联网领域,创业公司要想在巨头的夹缝中求生存,仅靠一款出色的产品是不够的,高效敏捷的研发能力才是公司生存与发展的关键.高效的研发模式包括如何确定开发项目,如何把控项目进度,如何驱动产品一代代完善以及如何调动员工的积极性等.通过对豌豆荚的访谈,让我们来看看这家被称为中国最具硅谷范的移动互联网公司在做产品研发的过程中是如何进行高效管理的. 一.高效研发的5个关键步骤 第一步:立项——定方向 在豌豆荚的整个研发过程中,立项称为Product Brief或者P

【Linux探索之旅】第三部分第五课:延时执行,唯慢不破

内容简介 1.第三部分第五课:延时执行,唯慢不破 2.第三部分测验题 延时执行,唯慢不破 上一课(<[Linux探索之旅]第三部分第四课:后台运行及合并多个终端>)中,我们学习了后台进程以及如何在一个终端里打开多个虚拟终端. 到目前为止,我们所运行的命令都是立即执行,也就是我们按下回车键的那一刻,命令就开始执行了. 其实Linux中命令还可以延时执行.这一课我们就来学习几个命令,可以帮助我们<稍后>执行程序.比如我们即将学习到的crontab命令. 所有这一课新学的命令都涉及到时间

“云中论道”之——华山论剑 ,唯快不破:秘笈分享

"云中论道"技术课堂第二课开讲时间到~ 这次我们邀请到的是来自微软开源技术中心的高级产品经理,人称"蓦然汐来".她将为我们介绍,近一年来微软开源技术中心在Linux上的进一步努力下,运行于Hyper-V之上的Linux的性能有了哪些新的重大提升:在云的论剑中,如何保持快速度.高性能.全新秘笈,马上为大家揭晓! 本文作者介绍: 花名"蓦然汐来",现任微软中国云计算与企业产品工程部开源技术中心高级产品经理,负责微软虚拟化平台 Hyper-v 和公有云

曾经收藏过的好文,唯快不破

我在互联网混了那么多年,有一个"七字诀".我用这一整套方法论自己创办了小米,也帮助朋友创办了20多家公司. 七字诀第一是专注.比如现在像很多微博站每天没有很多更新,但是文章质量好很多,在少就是多的时代里面,我们是信息过多,怎么样把东西做得精致,有价值,才是问题关键. 我们整个时代都在谈苹果,都在谈乔布斯,大家有没有想过其实苹果这家公司到今天为止都只出过5款手机而已.我们深圳的三个厂一天就能出100款,出一款难在什么地方呢?当我自己做手机的时候真的觉得大到至简,越简单的东西越容易传播,越

实验吧--web--天下武功唯快不破

---恢复内容开始--- 英文翻译过来嘛,就是:天下武功无快不破嘛.(出题者还是挺切题的) 看看前端源码: 注意这里 please post what you find with parameter:key 请提交你的参数key 这里我们回头看看这个题目提示说,,让我看看响应头.(ps.天枢战队才是亮点...) 那咱们就抓个包看看呗: 哦我们这里看见了这个头文件!!!!! FLAG: UDBTVF9USElTX1QwX0NINE5HRV9GTDRHOmhBbnlpRHU1dA== base64无

唯快不破:Web 应用的 13 个优化步骤

时过境迁,Web 应用比以往任何时候都更具交互性.搞定性能可以帮助你极大地改善终端用户的体验.阅读以下的技巧并学以致用,看看哪些可以用来改善延迟,渲染时间以及整体性能吧! 更快的 Web 应用 优化 Web 应用是一项费劲的工作.Web 应用不仅处于客户端和服务器端的两部分组件当中,通常来说也是由多种多样的技术栈构建而成:数据库,后端组件(一般也是搭建在不同技术架构之上的),以及前端(HTML + JavaScript + CSS + 转译器).运行时也是变化多端的:iOS,Android,Ch

唯快不破:提升Web 应用的 13 个优化

时过境迁,Web 应用比以往任何时候都更具交互性.搞定性能可以帮助你极大地改善终端用户的体验.阅读以下的技巧并学以致用,看看哪些可以用来改善延迟,渲染时间以及整体性能吧! 更快的 Web 应用 优化 Web 应用是一项费劲的工作.Web 应用不仅处于客户端和服务器端的两部分组件当中,通常来说也是由多种多样的技术栈构建而成:数据库,后端组件(一般也是搭建在不同技术架构之上的),以及前端(HTML + JavaScript + CSS + 转译器).运行时也是变化多端的:iOS,Android,Ch