第313期 | 郑晔:人生目标是终身编程
池建强
讲述:池建强大小:10.89M时长:11:54
你好,这里是卖桃者说,今天和你聊聊我们的专栏作者郑晔老师。
郑晔老师曾担任火币网首席架构师、ThoughtWorks 首席咨询师,目前是推文科技技术 VP,也是极客时间上《软件设计之美》和《10x 程序员工作法》专栏的作者。作为一个沉浸在软件行业将近二十年的程序员,他贡献过开源项目,翻译过书,喜欢与人畅聊技术,也愿意分享自己的经验。
他说自己的人生目标是终身编程,可见他是十分热爱这项事业的,这很难得。我见过很多年轻的程序员,他们只是把编程当作一份高薪工作,骨子里少了热爱,写出来的代码自然缺少温度。
我前几天和郑晔老师聊,收获了他的成长故事、工作经验、编程心得,他还给了年轻程序员建议,这是一个更为立体的郑晔,希望他的故事和经验能给你带来启发。为了方便,接下来我就直接用郑晔老师的网名“dreamhead”来称呼他。
阴差阳错从 C 转向 Java
dreamhead 之所以会成为一名程序员,最初是因为看了郑渊洁的童话。当时,计算机在国内刚刚兴起,郑渊洁写了一些计算机改变世界的童话,这些童话给他留下了深刻印象。虽然是童话,但他却从中读出了未来。于是,考大学的时候,他坚定不移地把各个志愿的第一专业都填成了计算机。
正式开始学习编程之后,他发现写程序这事还挺好玩的,需要动脑子,和做数学题是一样的。于是,他开始跑图书馆借了很多关于编程的书,利用各种时间琢磨怎么写一段程序。那段时间,虽然他的水平是最菜的,但下的功夫却是最多的。
大三的时候,dreamhead 明白了编程是一门需要实践的手艺活,想快速成长得实操才行。于是大学毕业之后,他没有遵从父母的意愿继续考研,而是走入社会,找了一份程序员的工作。
《阿甘正传》里有一句经典的台词:“人生就像一盒巧克力,你永远不知道下一颗是什么味道。”原本学习 C 语言的 dreamhead 工作没多久,就阴差阳错地被调去了部门的 Java 项目组,于是,他拿着一本厚厚的 Java 语言教材就开始工作了。这一“入坑”,就是将近二十年。
虽然一切得从头开始,但好在之前有一些 C/C++ 的基础,学习 Java 难度并不大。不过,那时候的 dreamhead 对 Java 社区的开发状态了解得实在是太少了,除了知道要写代码之外,完全不知道 Java 开发应该怎么做:不知道应该用一个构建脚本把打包构建管理起来,完全是靠 IDE 编译打包;不知道 Java 社区有很多优秀的开源项目可以使用,对开源的理解还停留在这是一个代码片段可以参考的程度。
当时也是年轻生猛,有一次 dreamhead 要用一个 SMTP 服务器,于是自己硬是从 Socket 开始一点点写了出来。今天看来这实在是一个没有必要的做法,因为有太多现成的实现。不过,也正是因为这么做了,他对于网络协议,尤其是应用层协议有了一个更深入的认识。
后来回忆那段往事,他觉得就自己当时的经验而言,从 C 转向 Java 也是一件好事。一方面,自己在工程上的视野一下子打开了,不再仅仅考虑实现一个功能,而是能够更多地从整体上进行考虑;另一方面,那个时候刚好是 Java,尤其是企业级开发思想转型的时候,看着各方面思想的交锋,他对软件开发的认识得到了极大的提升。从那个时候开始,他就萌生了一种想法:想探索一种合理做软件的方式。后来,这也成了他职业生涯中很长一段时间努力追求的东西。
当然,C 语言在他的职业生涯中也起到了非常重要的作用。直到今天,他依然认为一个好的程序员要想更好地理解计算机是如何运行的,都应该好好学习一下 C 语言。
从 0 开始创造 Moco
在后来的工作中,dreamhead 参与过很多不同的项目,对于编程的理解也越来越深入,但有一件事一直困扰着他,那就是没什么代表作。虽然他做了很多东西,但这些东西都不属于他。
2012 年下半年,他加入了一个新的项目。这个项目有一个模拟服务,模拟它要集成的另一个项目以便测试用。每次都需要修改之后进行手工部署,非常麻烦。当时,他就想有没有什么更好的办法解决这个问题,找了半天,没有找到一个符合他要求的开源项目。于是,他决定自己尝试动手写一个,这就是后来的 Moco。
Moco 是在一个有实际的需求场景中诞生的,诞生之初就已经有用户开始用了。用户用完之后给他反馈,他就不断地解决用户遇到的各种问题。就这样,Moco 越来越成熟,从原本只有几个基本功能的工具,最后甚至获得了 2013 Oracle 的 Duke 选择奖。
Moco 对于 dreamhead 来说,不仅是一个优秀的作品,也是宝贵的人生财富。Moco 是他第一个长期维护的开源项目,只有长期维护,才能看到一些有趣的事。比如,有人用 Moco 去破解游戏,把游戏连接的服务器指向了 Moco,然后,让 Moco 返回假的应答,让游戏以为自己可以成功运行。这些做法对于他来说简直是匪夷所思,他从来没有想过还会有人这么用 Moco。
当然,Moco 更多的是让 dreamhead 更加坚信了自己不断践行的一些做法。比如,让他更加坚信软件设计是一门关注长期变化的学问,一个软件只有经过时间的检验,它的设计优劣才能凸显出来。
此外,Moco 也让他更加关注任务分解,在他看来,分解任务是成为专业程序员的重要一环,剩下的,就是每天做至少一个提交就好了。比如,他会把对于 Moco 的修改分解成了若干的微操作,每天有时间只改一点点,这样自己也能够很好地坚持。最长的时候,他曾坚持连续 1000 天写 Moco 代码。
成长就是要和高手过招
在这些年的工作中,dreamhead 渐渐认识到,要想快速成长,就需要不断地和更高水平的人过招,从他们身上发现自己的不足和差距,激励自己前进。
dreamhead 初入职场的时候,就遇到了一个好榜样,也是他在工作中的第一个“导师”。“导师”的年龄只比他大两岁,但当时在部门已经成为神一般的存在,几乎凭借一己之力写出了拯救一个部门的产品。
当时,“导师”对编程的理解深度让他望尘莫及,从高层的设计到底层的实现,无一不精。在榜样的激励下,他下定决心,也要成为一个优秀的程序员。后来,他和“导师”成了很好的朋友,每当他觉得自己的水平提高了许多,抬头一看,“导师”在一些方面又精进了。“导师”在前面奔跑,他也不能停下来。这么多年来,他始终不敢懈怠,一直努力地让自己不断精进。
在职场上能遇到高手是件幸事,与高手过招才能成为高手。那如果身边没有高手怎么办?dreamhead 的解决方案是去找一个能和高手近距离过招的地方。这个地方不一定非得是大公司,虽然大公司里也有许多高手,但不见得你去了就能和高手一起工作。所以,比起在哪里工作,和什么样的人在一起工作更重要。
在 dreamhead 看来,要想快速成长,除了和高手过招,还要不停地学习,不停地练习。
所谓不停地学习,就是要不断了解新的东西。知识不断在发展,总会有新东西冒出来,你需要保持对新事物的关注,知道有哪些东西出来了,把它放在自己的技术雷达中,以便在需要的时候取用。
“太阳底下无新事”,没有任何新东西是突变产生的,都是已有的事物经过积累形成的。那些让人眼前一亮的东西,通常只是因为你对于相关领域不了解。当你对这个领域有了全覆盖的了解,就会对大趋势有一个认识。出现一个新项目时,你可以对它是否符合技术发展的方向形成一个判断,而不是单纯地因为大厂在用,就觉得它是一个好东西。
学习的时候别局限在程序员这个角色上,可以学一些与技术无关的东西,比如经济、历史、科技发展等等。这其实一种通识的补课,可以帮助你从一个更大更全的角度理解世界。
其次,就是要不停地练习,要做到手艺的精进。dreamhead 喜欢把程序员比作手艺人,手艺人讲究的就是不断打磨。对于编程这门手艺,他的理解是:当你想清楚了一件事之后,怎样尽快地把它高质量地实现出来。比如,怎么敲代码,是一个一个字符地敲,还是利用 IDE 的补齐功能;要做一些操作,是用鼠标去点菜单,还是用快捷键完成等等。每个程序员至少要有一个特别熟悉的开发环境,让自己能够顺畅地完成自己想做的操作。
此外还需要周边配套的一些工具,比如项目自动化,还有像 TDD、CI 这样的实践,它们能帮助你提高工作效率。可能与很多人想的不一样,这些东西虽然看上去会慢,但放在软件开发的全生命周期,反而是加速的。很多人追求的快,其实只是前期的快,后期则会慢下来。
dreamhead 现在的工作已经并不需要自己写那么多代码了,但他还是保持着每天要写点代码的习惯。因为在他看来,手艺就是要每天打磨的,一旦不用,手就会生。
好,今天的话题就先聊到这,明天继续和你聊郑晔老师的故事,分享他给程序员的建议以及高效工作的方法,请持续关注。
你自己有什么故事、经验,也可以在留言区分享一下,有什么问题,也可以直接在这里问我,我看到会回复并给出自己的答案。
卖桃者说,明天见。
(编辑:夏天)
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《卖桃者说》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(12)
- 最新
- 精选
- 王晓聪学习的时候别局限在程序员这个角色上,可以学一些与技术无关的东西,比如经济、历史、科技发展等等。这其实一种通识的补课,可以帮助你从一个更大更全的角度理解世界。 拿我自己来看,就是比较局限在程序员的角色。现在有空会看一些通识类书籍,希望能更好的理解世界,已渐🈶️收获
池建强回复: 这个非常重要,技术是基础,认知才能帮你腾飞
13 - 业余爱好者多读书啊,郑老师因为读了童话,报考cs,我因为读了盗墓笔记报了“土木工程”(盗墓小说不算书吧,消遣而已)。巨坑,转行穷三年,,
池建强回复: 我也读过,浅浅的,我最喜欢的网络小说是悟空传,反反复复读了很多遍。
2 - 方勇(gopher)物以类聚人以群分,和高手在一起,榜样的力量很大
池建强回复: 说的没错
1 - rmliu郑老师连续1000天写Moco,让我想起一件事, 在一年前,我打开郑老师的github网页之后,看到的一片绿,深深震惊到我了! 365无白点!!!
池建强回复: 他确实很自律
- 蓉耀不知道在哪提appbug,就写这吧,电视安装app以后没法登录,登录按钮出不来,也不能向下滚动,希望池老师可以解决一下,以后就可以用电视看学习视频了
池建强回复: 好没有适配电视……
- 子榕池老师带货不给优惠,差评~
池建强回复: 煤油带货,周五再说
- 子榕郑晔老师的课出一门买一门,绝不犹豫; 郑晔老师的第一位导师是mental?
池建强回复: Mentor,导师的英文
- 先改昵称曾经有个活着的郑老师在我面前,我没有珍惜!现在只能买两课程聆听教诲,《10x》和《软件设计之美》是我受益匪浅。15
- 程序员二师兄看完文章很有收获。 要做好一个程序员的角色,专于它,也要多了解与技术无关的东西,通识的补课可以帮助自己从更大的角度来理解世界。 看完这篇文章感觉与郑烨老师产生了共鸣,现在的我很像年轻时候的他,希望多年后的我能并肩与他。1
- 李洪亮技术社区的发展,是我们每一个技术人的一点点努力推动着,也是每一个技术人的骄傲。
收起评论