10x 程序员工作法
郑晔
开源项目 Moco 作者
53432 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
思考框架 (1讲)
10x 程序员工作法
15
15
1.0x
00:00/07:06
登录|注册

开篇词 | 程序员解决的问题,大多不是程序问题

讲述:郑晔大小:6.49M时长:07:06
自动化
沟通反馈
任务分解
以终为始
帮助读者掌握高效工作的方法
授人以鱼,不如授人以渔
思考总结
软件开发经验
郑晔
摆脱直觉的束缚
提高工作效率
提供原则
提供思考框架
减少偶然复杂度带来的工作量
选择正确的做事方法
专栏目的目的
作者介绍
原则的重要性
专栏目的
问题来源
偶然复杂度(Accident Complexity)
本质复杂度(Essential Complexity)
程序员解决的问题

该思维导图由 AI 生成,仅供参考

你好!我是郑晔,一个程序员。
很多人都说,程序员很辛苦,与这个角色联系在一起的词儿,通常是忙碌、加班、熬夜等。
作为程序员,我们将其看作一个值得全情投入的职业,希望能够把精力放在设计算法、改进设计、优化系统这些具有创造性与成就感的本职工作上。
但现实情况却是,许多人因为一些“意外”,陷入了无休止的忙碌,比如:
你辛辛苦苦写的代码还没上线,产品经理就告诉你需求变了;
你拼命加班只因错估了工作量,自己造的“孽”,含着泪也要搞定;
你累死累活做出来的东西和要求不符,只能从头再来;
你大面积地修改代码只是因为设计糟糕,无法适应新的需求变化;
……
诸如此类,不胜枚举。我们很辛苦,但耗费我们大量时间和精力去应付的工作,并不是技术工作,反而是这些看似很“不值当”的事儿。
为什么会这样?
软件行业里有一本名著叫《人月神话》,其中提到两个非常重要的概念:本质复杂度(Essential Complexity)和偶然复杂度(Accident Complexity)。
简单来说,本质复杂度就是解决一个问题时,无论怎么做都必须要做的事,而偶然复杂度是因为选用的做事方法不当,而导致要多做的事。
比如你要做一个网站,网站的内容是你无论如何都要写的,这就是“本质复杂度”。而如果今天你还在用汇编写一个网站,效率是不可能高起来的,因为你选错了工具。这类选错方法或工具而引发的问题就是“偶然复杂度”。
作为一个在软件行业奋斗了近二十年的程序员,我深刻意识到一个遗憾的事实:大部分程序员忙碌解决的问题,都不是程序问题,而是由偶然复杂度导致的问题。
换句话说,只要选择了正确的做事方法,减少偶然复杂度带来的工作量,软件开发是可以有条不紊进行的。
如何减少偶然复杂度引发的问题,让软件开发工作有序、高效地进行,这正是我希望通过这个专栏帮你解决的问题。
许多人工作做事主要依靠直觉,在这个科学越发昌明的时代,我们清楚地看到,人类的直觉常常是错的,就像古人凭直觉认为大地是平的一样。
软件开发也不例外,如果你不曾在做软件这件事上有过学习和思考,形成一套高效的工作方法,只是凭直觉行事,在真实世界中往往会举步维艰。
幸运的是,总会有不同的人在不同的方向上探索不同的做法,一旦通过真实世界的验证,就会沉淀出可供行业直接应用的最佳实践(Best Practice)。
在软件行业中,这样能够提升工作效率的最佳实践已经有很多,但是,学习掌握这些最佳实践是有难度的,其根源就在于,很难找到这些实践彼此间的内在联系。
直觉大多是错误的,最佳实践又多而琐碎,所以在这个专栏中,我会尝试给你提供一个思考框架,帮你在遇到问题时梳理自己真正要做的事情。围绕着这个框架,我还会给你一些原则。
这些原则,是我从软件行业的诸多软件开发最佳实践中总结出来的,也是我如今在工作中所坚持的。这些原则就是一条主线,将各种最佳实践贯穿起来。
这些原则不多,总结起来就四个:
以终为始;
任务分解;
沟通反馈;
自动化。
也许看到这四个原则的名字,你会不以为然,这些说法你在很多地方都看到过,但我想与你分享的内容可能与你想的并不完全一致。
比如:你以为的“终”可能不是终,因为你只是站在自己的角度;你以为自己做了任务分解,在我看来,可能还不够,因为我希望你能够做到微操作;你以为的沟通反馈就是说话聊天,我想告诉你很多技术实践的存在也是为了沟通反馈;你以为自动化就是写代码,我会告诉你,有时候不写代码而解决问题,可能才是一个好方案。
在我看来,想要将精力聚焦在本质复杂度上,提高工作效率,摆脱直觉的束缚,只要掌握上面的四个原则就可以了。
或许你此时会问,这些原则很难吧?其实并不难,在探讨这个专栏的内容时,我的编辑作为软件开发的局外人,经常发出感叹:“这事真的就这么简单吗?这不就是正常做事应该有的逻辑吗?”
是的,就是这样简单,但大多数人没有这样做,因为这些原则在实际工作中很可能是反直觉的。只要打破思维误区,你的整个人都会变得不一样。
下面是整个专栏的目录,我希望能帮助你回答,或者厘清一些开发过程中,曾经遇到,又未曾深入的问题。
当我们详谈这些原则时,我会给你讲述一些最佳实践,让你看到这些原则是如何应用于不同的实践中的。希望我对这些实践的理解成为你的知识地图,让你拥有继续探索的方向。
我做这个专栏的原则是“授人以鱼,不如授人以渔”。我希望你很好地理解这些原则,掌握高效工作的方法。至于最佳实践,你可以自行决定,是直接采纳还是曲线救国更为合适。
介绍一下我自己,我是郑晔,目前在火币网担任首席架构师,写过代码、带过团队、做过咨询,创过业,还维护着一个拿过 Oracle Duke 选择奖的开源项目 Moco,至今仍然在编程一线写着代码。
很长时间里,我一直对如何做好软件充满了好奇,了解过各种技术以及开发方法。做咨询的经历让我有机会见识到不同公司面临的问题;带团队的时候,我也看到很多小兄弟因为不会工作,虽然很努力却收效甚微;而我自己菜鸟时期的笨拙依然是历历在目。
在我看来,所有做软件的人能力都很强,这些问题都只是因为不会工作造成的,但更可怕的是,许多人深陷泥潭而不自知。
在这些年的工作里,我一遍又一遍给别人讲如何工作,逐渐总结出一套自己的工作原则,如今呈现在你面前的就是我这些年思考的总结。
我不指望所有人都能从这个专栏受益,我只想把这个专栏写给那些愿意成长的人。我只是来做一次信息分享,分享一些思考,分享一些做法,希望可以将你从常见的思维误区中带出来。
也许在这个专栏的最后,你发现自己并不认同我的原则,却能够用自己的原则来与我探讨,那么,恭喜你,因为那是最美妙的事情!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

程序员在工作中常常陷入忙碌和加班的状态,但大部分时间并不是在解决技术问题,而是应对偶然复杂度带来的问题。作者提出了四个原则:以终为始、任务分解、沟通反馈、自动化,希望通过这些原则帮助读者提高工作效率,摆脱直觉的束缚。作者强调了直觉常常是错误的,并分享了自己在软件行业多年的经验和总结,希望能帮助愿意成长的人摆脱常见的思维误区。整个专栏将围绕这些原则展开,结合最佳实践,帮助读者理解并掌握高效工作的方法。通过分享思考和做法,作者希望读者能够从中受益,甚至用自己的原则与作者进行探讨。

2018-12-24125人觉得很赞给文章提建议

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《10x 程序员工作法》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(79)

  • 最新
  • 精选
  • AlphaGao
    直觉在某种程度上也是很重要的吧,不是很多专家都是很依赖直觉的么

    作者回复: 这是一个好问题,这种说法混淆了直觉和洞见两件事。直觉是本能的,无需积累,而洞见是溯因推理(Abductive Reasoning),需要前期进行大量的积累之后,从中发现模式,方能形成洞见。 打个比方,同样的思念,可以说,衣带渐宽终不悔,为伊消得人憔悴,也可以说,我想死你了。二者看上去差不多,但境界有差异。

    2018-12-25
    3
    106
  • it-spurs
    购买了课程,学完了目前更新过的所有课程,除了测试这块,比较难推动,其他的基本都原来都践行,或者正在准备在落实。非常有用的课程,个人觉得,比看JAVA或者微服务的一个专栏,更容易学进去,也更有直接的收获,也更迫切需要。技术类课程到处都是,不花钱也可以找到,但是对于程序员的效率提升,整体能力的提升的课程较少,我之前也是一直觉得程序员就是写代码,但是新公司半年的加班告诉我,写代码成本太高,客户,产品经理一句话就可能让你多加几天班,但做出的功能却在业务上并未带来多少意义。我们不是执行指令的机器,也讨厌客户说的那句,你们只管写代码就好了,不要总是提什么拆分任务评估工时,跟她讲条件。按刘慈欣整理定律的方式来整理客户和开发的经验:1.甲方永远觉得付了钱,让乙方多干活也理所当然。2.开发时间是比较难评估的,一定要预留缓冲时间,即使多出来时间,也可以用来优化。3。技术是硬知识,独立思考和沟通,个人管理与项目管理是软知识,软知识是我所欠缺的,有更好的软知识可以事半功倍,可以处理各个上下文的问题。还有最直接的,把甲方拍大腿想的需求推掉,至少晚上更有时间去学习那些技术。

    作者回复: 我希望专栏的读者在学过之后,遇到事情开始动脑想想为什么和怎么做,你的回复让我觉得我的初衷达成了。

    2019-02-17
    4
    46
  • felix
    这个专栏太棒了,不客气地说,跟我十年工作之后的体会一模一样。平常我也是跟团队教导这四个原则。 努力很重要,方向和方法更重要。我们要付出至少90%的努力,同时达到120%的效果。

    作者回复: 欢迎你把自己的经验也分享给大家

    2018-12-26
    15
  • davidce
    t.cn/EGeYlAA,一个讲本质复杂度和偶然复杂度的视频

    作者回复: 多谢推荐!

    2019-01-09
    14
  • 二木又土
    请教下,对于一个明确的技术点,优秀的程序员仿佛能更快的找到解决方案,而且往往就是最佳实践,这是什么原因?从技术点角度讲,它并不需要掌握其他相关知识…

    作者回复: 你把结果当成了原因,优秀的程序员能够快速解决问题,是因为它已经做了大量积累,有自己的知识体系,任何领域想做到一定的水准都需要刻意练习,而且是大量的刻意练习。 刻意练习,是一个重要的概念,我本打算在这个专栏里讲一下,后来由于主题的关系,暂时拿掉了,看后面是不是有机会专门加餐讲一次。

    2019-01-08
    10
  • 妮可
    作为开发,要谈需求,写需求,以及日常业务数据处理,有的时候还要充当客服,确实有点迷茫。希望能通过学习大佬的经验,回到开发本质上,提升工作效率。期待(๑˙ー˙๑)

    作者回复: 跨角色是件好事,会让你有更多的视角,这是我鼓励很多人去尝试的。只要把握住自己的核心能力,不断提升就好。

    2018-12-24
    10
  • Y024
    10x 程序员工作法——郑晔老师希望你记住的一句话版本: https://mubu.com/doc/4mk3cB_cKdv

    作者回复: 总结得真好!:)

    2019-11-22
    8
  • 磉盘
    首先做一个,愿意成长的人。其次要承认直觉不总是正确的。 认清程序员的本质工作,避免陷入琐碎的忙碌。 选择正确的方法解决偶然复杂度,投入精力解决必然复杂度。 学习行业的最佳实践,试着用思考框架考虑事情,通过原则处理事情。 最终目的是优化完善自己的做事方式,希望从此专栏里得到启发。 I can do it

    作者回复: 一点一点地进步。

    2019-09-15
    7
  • 火山飘雪
    老师,你好!你说古人是凭直觉,说地是平的,方的,这是不正确的,在古天文学家张衡的《灵宪》已经说明了地是圆的。并且古人并不是通过平直觉或想象就妄下结论的。不要感觉现在人就比古人聪明。

    作者回复: 多谢提醒,准确地说,人习惯于用直觉,与古今无关,这是一种节省能量的做法,但不适合处理复杂事物。

    2019-04-14
    3
    5
  • 丁丁历险记
    成不成10x 不重要,读书笔记一定要写的欢快起来。 1 开发严重浪费的成本花哪去了, accident complexity 【极端例子,用汇编写网站】 。 2 如何优化呢( 减少偶然复杂度引发的问题,让软件开发工作有序、高效地进行),我整篇专栏都在说如何处理。 3开发认知。 直觉 到最佳实践(BP),掌握BP 是有难度的,极根源在于【很难找到这些实践彼此间的内在联系】 【附带说一句,科学往往是反直觉的】 4 上套路:四原则(以终为始 任务分解 沟通反馈 自动化) 【初看,其中都蕴含着节约注意力的思考】 5 作者很nx.(细节略 6 作者经常看到某小弟很幸苦,回想自己 青葱岁月,可怕的是这些人不自知陷入了困境,他总结了很多经验,想分享给想成长的人,想通过努力把他们从常见的思维误区中带出来,请大家快速买课,谢谢。

    作者回复: 欢迎分享

    2019-10-29
    2
    4
收起评论
显示
设置
留言
79
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部