工程师个人发展指南
李云
前阿里高级技术专家,《全面效能》作者
4084 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 35 讲
开篇词 (1讲)
工程师个人发展指南
15
15
1.0x
00:00/00:00
登录|注册

16|一切皆概念:程序的“好”是指什么?

你好,我是李云。这一讲我想和你聊一聊什么是好程序。
在 15 讲我们聊如何提高编程水平时,你可能就留下了“什么是好程序”这个疑问。也是,如果我们一边讲如何提高编程水平,一边却不知什么是好程序,那提高水平这事就缺了目标感。在进一步讨论什么是好程序前,我想先问你一个问题:你认为编程的本质是什么?

编程的本质

当我在公开课和企业内训课上问学员这个问题时,得到的答案无外乎“为了实现功能”和“为了满足需求”,不知你是否也这么认为呢?不过,基于你的生活经验,但凡包含“本质”这两个字的问题,你的经验会告诉自己,提问人想要的回答没那么简单。
对于这个问题,我给出的回答是:编程的本质,是为了实现程序员与计算机,以及程序员之间的交流。你乍一听到这个观点,可能觉得有新意,也可能有疑惑,特别是针对更重要的后半句。什么,后半句还更重要?
前半句很好理解,程序员与机器交流的结果,就是“实现功能”和“满足需求”。不过,这个本质并不会给人带去太大的困扰,就是功能实现错了或没有满足需求,也是容易发现的,咱也大概率会采取修正的行动。
为了方便理解,后半句还可以表达为:编程的本质是程序员之间基于编程语言的交流。换句话说,程序员所写的程序不只是给机器读,还得考虑到他人也得读。与前半句不同的是,后半句的背后隐含了程序员之间无意识的相互折磨,甚至可以说,由此造就了程序员在职场所面临的最大痛苦和无力感——再乱的代码也得硬撑着维护下去。程序员所共同信仰的代码,最后却摧毁了彼此的信任
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《工程师个人发展指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • pyhhou
    “高内聚,低耦合” 让我想到了另外一个衡量程序好坏的概念——正交,这两者类似。两个相互正交的模块在功能和逻辑上均无重叠,对一个模块的修改不会影响到另一个模块,并且也没有重复代码,利于维护,模块和模块的职责也非常清晰,出了 bug 也可以快速定位问题。 正交这个概念用在团队管理上也是一样的,如果团队成员之间负责的事情不重叠,做的事情不重复,职责清晰,这样相互之间交流都会很清晰,合作也会顺畅。反过来,假设一个成员负责 A,B,C,另外一个成员负责 B,C,D,做一个项目成员之间相互依赖,这样职责混乱,很难管理不说,也很难高效做事。 最后,感谢老师的分享,老师有没有什么关于软件设计和写好程序的书籍推荐?感觉写好代码还得多读多练

    作者回复: 你好, “正交”这个词也是我在工作中比较喜欢使用的,看来咱可是想到一块了。对于你讲到的团队管理方面的内容,你想表达的是事情要落实到责任人吧,这样当出现问题、需要协调时,有责任人就容易将事情给落下去。 软件设计方面可以试着读《设计本原》《实现领域驱动》《设计模式》这些书,而写好程序可以读读《代码大全2》《代码整洁之道》。另外,我觉得读开源软件是很好的一种方式,比如,如果你的工作语言是C++的话就可以读Chromium的源代码。具体哪一个开源软件,可以基于你日常所使用的主要编程语言去找,而且得找那些规模庞大的开源项目的代码来读,因为足够大才会有更大的复杂度,对软件设计和编程能力的要求也更高。当然,做这事可不简单,需要花相当的精力且坚持才行。

    2024-04-23归属地:美国
    2
    4
  • 6点无痛早起学习的和尚
    看到老师对“pyhhou”留言的回复,有个疑问了,那在职业不同的发展阶段,如果权衡软件设计能力、写好程序能力的占比呢?比如职业前期、中期、后期等等

    作者回复: 你好, 这个占比确实很难给出,但我想说的是,构建良好的软件设计能力和编程能力是工程师永远不能停下来的事,因为背后其实是概念能力和洞察力的培养,也是软件工程师核心竞争力(参见17讲)的落脚点,是贯穿职业的前、中、后期的。 大体上,我认为职业的前期会更多发挥个人的编程能力,后期会更多发挥个体的软件设计能力。

    2024-06-18归属地:北京
    2
  • 浅歌随风
    “高内聚,低耦合”是恰当切分概念的结果,降低了程序的修改风险。结合恰当地塑造概念,可使程序即易读,又好修改。

    作者回复: 赞!

    2024-04-16归属地:上海
    1
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)