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

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

讲述:池建强大小:6.70M时长:07:18
你好,这里是卖桃者说。今天咱们来聊聊自律这个话题。自律,看起来简单,但是说清楚不容易,做到更难,最后我还能扯到编程上去,这就更难了。
谈自律有一个前提,就是我们必须接受自己和自己的人生是不完美的,甚至是艰难的。糟糕的事情和坏运气,随时会发生在某个人身上。如何处理这些负面的东西呢?这里就涉及到自律的问题了。
《少有人走的路》这本书的作者斯科特提出,“解决人生问题的首要方案,就是自律,缺少了这一环,你不可能解决任何麻烦和困难。”但是,说着容易做着难,谁不想舒舒服服随心所欲的过日子,自律,想着就痛苦,还不如逃避问题过一生呢。
我们给计算机输入指令,它就会严格执行,即使指令是错的。计算机不会顶嘴和自作主张(至少目前还不会),但是大脑不同,它很有主见。我们告诉大脑要多吃青菜少吃肉,多锻炼少赖床,大脑哈哈一笑不置一词,看见望京小腰和海底捞依然会冲上去吃得像个两百斤的孩子。
工作中也是一样,大多数人都愿意处理邮件、即时消息、开会之类的小事,但是对于和某个项目相关的重要事务却会一拖再拖,因为处理“大事”要比回复邮件痛苦很多。你需要静下来,避免别人打扰,费尽心思去解决重要和紧急的问题,做决策给方案,还要克服马上见到结果的快感。也就是说,你要主动的去面对痛苦,这有多难呢?很难。所以每个人都有拖延症,程度不同而已。
而自律,就是以积极而主动的态度,去解决人生中的痛苦,这里面包括四个方面:推迟满足感、承担责任、尊重事实和保持平衡。
《本能》这本书里也有类似的观点:日常生活中,存在这么两条路。一条路诱惑我们只根据自己的冲动和直觉来生活。这条路可以称为“宠物之路”,因为所有的动物,包括家里养的宠物狗走的都是这条路。饿了就吃,吃完就算。只在得到回报时才会献出忠诚。感觉什么好,就再来;什么有害,就躲开。
而另一条路没什么明显的标志,是充满抗争的路。在这条路上,我们说了算,自己当家。除了激情,基因还赋予我们意志力和有意识控制自己行为的能力。拥有这些特殊的人类能力,我们就能超越自己的动物本能。
第二条路就是自律之路。这条路必然更难走,因为这意味着我们不能贪图一时的安逸,要去重新设置人生快乐与痛苦的次序:首先,你要先去面对问题并感受痛苦;然后,你要能在解决问题的过程中享受到更大的快乐。这样才能支撑你在自律之路上走下去,否则反而可能走到一半就坚持不下去,崩溃了。
刷抖音快乐还是刷算法题快乐,毫无疑问是前者,但是你竟然在刷算法题,那你很可能是一个自律的人。
但是,如果你认为程序员一定很自律就大错特错了,虽然这是个终身学习的行业,压力与焦虑并存,但是他们玩起来一样昼伏夜出,劈头盖脸。虽然大部分程序员更喜欢和机器待在一起,但这不意味着他们不热爱生活。女生能投入多少时间在衣服和化妆品上,程序员们就能花多少时间在电子设备、游戏和互联网上。没有自我约束,刷个朋友圈,一下午就过去,再刷个美剧,一个周末就过去了。你会发现,除了规划外的事情,什么都没有发生。
IT 领域是这个星球上知识和讯息更新换代最为猛烈的行业,如果你想站立在潮头不倒,就需要不停的 keep on doing sth,刻意练习也好,碎片时间也罢,都不是那么轻松的。要做到这一点,没有强大的内心和自我控制能力,很难实现。
除了生活工作中的自律,程序员还要写出自律的代码。什么是自律的代码呢?
记得有一段时间设计模式非常流行,我在做 Code Review 的时候,发现一个程序员写的代码极度复杂,简单的业务逻辑,搞出了一堆接口、抽象类和类,相互依赖、扭曲、缠绕在一起。当你以为在执行 A 方法的时候,扑进去一看,原来丫在调用超类的子方法;当你纠结于某个实例是怎么 new 出来的时候,最终发现有些子类是配置到了模板文件里,用的时候动态加载。我把这个程序员叫过来问,这么简单的业务逻辑你搞这么多花活干嘛?是不是觉得 Code Review 的工作量不饱满?他支吾着说,我只是想试验一下设计模式的弹性。
你看,这就不是自律的代码。
自律的代码应该是简单的、直接的、容易读懂的、便于调试的。剔除一切炫技和刻意的设计,返璞归真。很多人经常把 Java 和设计模式等同在一起,其实完全可以使用 Java 写出非常简单的代码,而不使用设计模式。专注于问题,而不是去追求最新最酷的语法,你会发现可以用自律的代码去解决问题,而且解决得干净利落。
其实有些设计原则已经包含了自律的逻辑在里面,比如:
定义含义明确的接口:通过接口名称和参数让调用者知道这个接口的功能。如果一个开发人员为了使用一个组件必须要去研究它的实现,那么就失去了封装的意义。
无副作用函数和职责单一原则:保证函数的独立性,对传入参数的修改,不会影响原来的对象。让某个类或函数尽可能具备且只具备一个职责,避免把更多的功能耦合在一个类或方法里。
概念轮廓原则(Conceptual Contour):通过坝或其他手段把一个湖分割为几块,在任何一块中投入石子都不会影响其他部分。把设计元素(行为、接口、类、聚合等)分解为内聚单元。通过重构,找出模型中经常变化的部分和基本稳定的部分,分别实现。
……
自律的代码可以让程序获得更长久的生命力,也会获得更大的空间和自由,最早死去的,最早被抛弃的,永远是那些不懂节制和功能繁复的代码。人也是一样,所谓自由,不等于随心所欲,而是能够自我主宰。
那么你呢?你是一个自律的人么?你碰到过坏味道的代码么?欢迎在留言区告诉我。
好,今天的话题就聊到这里。卖桃者说,明天见。
(编辑:成敏) 
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《卖桃者说》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • star_fx
    前段时间看到一个公众号文章讲『程序员如何写出别人读不懂的代码』这个主题的,里面给出了很多方法,很多人参与讨论。 我看完标题就感慨『人永远是高看自己一眼啊』,以我们大部分同行的水平来说,他只需要按照自己的水平正常写,其他人就已经很难看懂了,哪里还需要刻意而为。

    池建强回复: 过于真实了……

    20
  • 吃草🐴~
    设计模式不是不应该学,还是需要学习的,只是学到以后要能用在该用的地方。杀鸡不要用宰牛刀~技术不是越新越好,适合才是最重要的!这就和人生一样…(我这句话升华主题,你看我多能扯,这个难度和池大不相上下~) 不是有种读书的方法就是先把书读厚,再把书读薄。读厚我觉得就是学习的时候能够联想很多,举一反三;而读薄则是量变产生质变的过程,把相似的可以进行抽象,融会贯通。 我自知自己目前写的代码还是存在不少问题的,个人认为最大的原因就是我没有设计模式相关的知识,很多都是逻辑的堆叠,有些部分的耦合性也比较高,可能易读性也不是很好。哈哈,对自己怎么这么严格,咋感觉都没有优点~我觉得我唯二的优点就是代码具有较强的规范性和注释比较多比较清晰。 做自律的人,写自律的代码。先把每天锻炼身体都做到~给自己加油!

    编辑回复: 是这个意思

    2
  • coder
    看到部分订阅的专栏有不少人评论说,自己订阅了很多,没时间看。极客时间系统背后应该也有分析过用户的学习行为,要不池大找时间谈谈这个问题?

    池建强回复: 卖桃者说第一篇有效学习已经说过了

    2
  • 怀群
    今天的文章有点跳跃啊桃哥,我本以为是《少有人走的路》这本书的书评呢,刚好我也看过这本书,正准备一展才学呢,突然就跳到如何写代码了。后半段的主旨应该是说要写简单易懂的代码吧。

    池建强回复: 跳的丝般顺滑,是不是有难度

  • Sch0ng
    自律=长远目标+短期克制
    8
  • Jason
    还好我不会设计模式。我想我已经迈出了代码自律的第一步。
    1
    4
  • 长期规划
    灵魂拷问,这几期主题非常赞
    1
    2
  • 小花小黑的铲屎官
    灵活是因为简单,而不是过度设计🐻
    1
    1
  • leslie
    每次看池老师的东西都能有不一样的触发:不过前提是里面设计的课程我没买过😄 饮食锻炼的自律其实是程序员身体的基础:真正能做到其实蛮少的,故而不少人在30-40开始出现各种身体问题。 code review:在大企业还稍微好点,自己做过的一些小企业面试时觉得公司应当还行,可是进去后常常发现术业有专攻的其实不多,迫使自己经常是只能这是自己做-甚至把历史代码找出来过一遍。 其实自律的东西很多:虽尽力做,可是数年后发现可能也只能做到3-7成/方面。这就像老师做的比喻人不是机器吧😄
    1
  • 李洪亮
    通往自律之路任重而道远……
收起评论
显示
设置
留言
17
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部