卖桃者说
池建强
极客时间创始人、墨问西东创始人
30376 人已学习
免费领取
课程目录
已完结/共 523 讲
第一季 (135讲)
第二季 (134讲)
第三季 (124讲)
第四季 (90讲)
卖桃者说
15
15
1.0x
00:00/11:54
登录|注册

第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》和《软件设计之美》是我受益匪浅。
    1
    5
  • 程序员二师兄
    看完文章很有收获。 要做好一个程序员的角色,专于它,也要多了解与技术无关的东西,通识的补课可以帮助自己从更大的角度来理解世界。 看完这篇文章感觉与郑烨老师产生了共鸣,现在的我很像年轻时候的他,希望多年后的我能并肩与他。
    1
  • 李洪亮
    技术社区的发展,是我们每一个技术人的一点点努力推动着,也是每一个技术人的骄傲。
收起评论
大纲
固定大纲
阴差阳错从 C 转向 Java
从 0 开始创造 Moco
成长就是要和高手过招
显示
设置
留言
12
收藏
73
沉浸
阅读
分享
手机端
快捷键
回顶部