池建强的公开课

讲讲咱互联网行业自己的故事

个人成长,观点,认知, 软技能

池建强 极客时间创始人、墨问西东创始人

第63期 | 自律的人生和自律的程序

讲述:池建强 大小:7.03MB 时长:00:07:18
00:00
1.0×

你好,这里是卖桃者说。今天咱们来聊聊自律这个话题。自律,看起来简单,但是说清楚不容易,做到更难,最后我还能扯到编程上去,这就更难了。

谈自律有一个前提,就是我们必须接受自己和自己的人生是不完美的,甚至是艰难的。糟糕的事情和坏运气,随时会发生在某个人身上。如何处理这些负面的东西呢?这里就涉及到自律的问题了。

《少有人走的路》这本书的作者斯科特提出,“解决人生问题的首要方案,就是自律,缺少了这一环,你不可能解决任何麻烦和困难。”但是,说着容易做着难,谁不想舒舒服服随心所欲的过日子,自律,想着就痛苦,还不如逃避问题过一生呢。

我们给计算机输入指令,它就会严格执行,即使指令是错的。计算机不会顶嘴和自作主张(至少目前还不会),但是大脑不同,它很有主见。我们告诉大脑要多吃青菜少吃肉,多锻炼少赖床,大脑哈哈一笑不置一词,看见望京小腰和海底捞依然会冲上去吃得像个两百斤的孩子。

工作中也是一样,大多数人都愿意处理邮件、即时消息、开会之类的小事,但是对于和某个项目相关的重要事务却会一拖再拖,因为处理“大事”要比回复邮件痛苦很多。你需要静下来,避免别人打扰,费尽心思去解决重要和紧急的问题,做决策给方案,还要克服马上见到结果的快感。也就是说,你要主动的去面对痛苦,这有多难呢?很难。所以每个人都有拖延症,程度不同而已。

而自律,就是以积极而主动的态度,去解决人生中的痛苦,这里面包括四个方面:推迟满足感、承担责任、尊重事实和保持平衡。

《本能》这本书里也有类似的观点:日常生活中,存在这么两条路。一条路诱惑我们只根据自己的冲动和直觉来生活。这条路可以称为“宠物之路”,因为所有的动物,包括家里养的宠物狗走的都是这条路。饿了就吃,吃完就算。只在得到回报时才会献出忠诚。感觉什么好,就再来;什么有害,就躲开。

而另一条路没什么明显的标志,是充满抗争的路。在这条路上,我们说了算,自己当家。除了激情,基因还赋予我们意志力和有意识控制自己行为的能力。拥有这些特殊的人类能力,我们就能超越自己的动物本能。

第二条路就是自律之路。这条路必然更难走,因为这意味着我们不能贪图一时的安逸,要去重新设置人生快乐与痛苦的次序:首先,你要先去面对问题并感受痛苦;然后,你要能在解决问题的过程中享受到更大的快乐。这样才能支撑你在自律之路上走下去,否则反而可能走到一半就坚持不下去,崩溃了。

刷抖音快乐还是刷算法题快乐,毫无疑问是前者,但是你竟然在刷算法题,那你很可能是一个自律的人。

但是,如果你认为程序员一定很自律就大错特错了,虽然这是个终身学习的行业,压力与焦虑并存,但是他们玩起来一样昼伏夜出,劈头盖脸。虽然大部分程序员更喜欢和机器待在一起,但这不意味着他们不热爱生活。女生能投入多少时间在衣服和化妆品上,程序员们就能花多少时间在电子设备、游戏和互联网上。没有自我约束,刷个朋友圈,一下午就过去,再刷个美剧,一个周末就过去了。你会发现,除了规划外的事情,什么都没有发生。

IT 领域是这个星球上知识和讯息更新换代最为猛烈的行业,如果你想站立在潮头不倒,就需要不停的 keep on doing sth,刻意练习也好,碎片时间也罢,都不是那么轻松的。要做到这一点,没有强大的内心和自我控制能力,很难实现。

除了生活工作中的自律,程序员还要写出自律的代码。什么是自律的代码呢?

记得有一段时间设计模式非常流行,我在做 Code Review 的时候,发现一个程序员写的代码极度复杂,简单的业务逻辑,搞出了一堆接口、抽象类和类,相互依赖、扭曲、缠绕在一起。当你以为在执行 A 方法的时候,扑进去一看,原来丫在调用超类的子方法;当你纠结于某个实例是怎么 new 出来的时候,最终发现有些子类是配置到了模板文件里,用的时候动态加载。我把这个程序员叫过来问,这么简单的业务逻辑你搞这么多花活干嘛?是不是觉得 Code Review 的工作量不饱满?他支吾着说,我只是想试验一下设计模式的弹性。

你看,这就不是自律的代码。

自律的代码应该是简单的、直接的、容易读懂的、便于调试的。剔除一切炫技和刻意的设计,返璞归真。很多人经常把 Java 和设计模式等同在一起,其实完全可以使用 Java 写出非常简单的代码,而不使用设计模式。专注于问题,而不是去追求最新最酷的语法,你会发现可以用自律的代码去解决问题,而且解决得干净利落。

其实有些设计原则已经包含了自律的逻辑在里面,比如:

  • 定义含义明确的接口:通过接口名称和参数让调用者知道这个接口的功能。如果一个开发人员为了使用一个组件必须要去研究它的实现,那么就失去了封装的意义。
  • 无副作用函数和职责单一原则:保证函数的独立性,对传入参数的修改,不会影响原来的对象。让某个类或函数尽可能具备且只具备一个职责,避免把更多的功能耦合在一个类或方法里。
  • 概念轮廓原则(Conceptual Contour):通过坝或其他手段把一个湖分割为几块,在任何一块中投入石子都不会影响其他部分。把设计元素(行为、接口、类、聚合等)分解为内聚单元。通过重构,找出模型中经常变化的部分和基本稳定的部分,分别实现。
  • ……

自律的代码可以让程序获得更长久的生命力,也会获得更大的空间和自由,最早死去的,最早被抛弃的,永远是那些不懂节制和功能繁复的代码。人也是一样,所谓自由,不等于随心所欲,而是能够自我主宰。

那么你呢?你是一个自律的人么?你碰到过坏味道的代码么?欢迎在留言区告诉我。

好,今天的话题就聊到这里。卖桃者说,明天见。

(编辑:成敏)