December

2023-12-11 ⏳5.8分钟(2.3千字)

[12-11]

[用十年去学习编程]

12.9 日这天完成了心中惦记很久的一件事,大学同学毕业十年聚会。回了学校、见了老师、见了同学。感觉自己的内心有了一些新的方向,我想让自己成为一个很深刻的人。

今天看完了这篇之前没看完的文章 Teach Yourself Programming in Ten Years.

为什么你总是这么急?你应该去学习什么?

很多书籍的标题例如 xx 天掌握 c++,这样的书只能交给我我们如何去使用而不是交给我们如何编程。如果一门编程语言不能改变你的思维,那么他不值得一提,看到这句话的时候我有些震撼。想来自己也接触了很多编程语言,在终究还是用惯性思维吃老本,用 java 的思想去写 go罢了。

既然着急没用那如何学习编程呢?作者也给了一些中肯的意见:

  1. 从编程中找到乐趣。
  2. 最好的学习方式是定义一个合适难度的问题、丰富的反馈和重复以及修正错误的机会。
  3. 和其他人交谈,阅读其他人的代码。
  4. 参与不同的项目,可能有些你做的很好,有些做的很差。如果你做的很好,就测验自己的领导力,鼓励其他人的成长。如果你做的不好,了解大师在做什么。
  5. 理解其他人的程序,在作者不在的情况下看看自己能否修改代码解决一些问题?以此来思考什么样的代码是更好理解的,更好维护的。
  6. 学习至少半打编程语言,c++/lisp/go,理解不同的编程思维。
  7. 参与语言的标准化工作,学习别人为什么喜欢这种语言,他们的感觉。
  8. 具有良好的判断能力。

Before my first child was born,I read all the How To books,and still felt like a clueless novice

[12-16]

[改变认知][多元]

最近读了一些书、遭遇了一波人群人来。感觉自己的思维产生了一些奇妙的变化,看似没有关联,又有些环环相扣。这种说不上来的感觉奇妙又难受。

事情从最近看的一本单元测试的书说起(Unit Testing: Principles, Practices , and Patterns), 看这本书的初衷我是想找一种可以解决现在工作上写单测麻烦、感觉不对的问题。看毕后给我最大的帮助不是直接解决问题的某种技术方案、而是一种思维上的改变。自己今年 33 岁了,我一直信奉着极致主义,在我眼里这个世界只有正确/错误两个方面,我要做的是把自己认为对的、重要的那个方面做到极致、其他的事情可以一概不管

回到单元测试的问题上,我曾经认为单元测试的本质是 mock,那么我只要学习 mock 相关的知识,在不同的业务场景中把 mock 用到极致就可以写出好的单元测试了。而书中用大量的铺垫分析了一个问题:什么是好的单元测试?,作者给出了自己的答案,单元测试的质量是由以下四个方向共同决定的:

  1. Protection against regressions:发现 bug 的数量
  2. Resistance to refactoring:对于重构的友好度
  3. Fast feedback:执行速度
  4. Maintainability:可维护性

以上四个因素中可维护性是一个二元因子,一个单元测试要么具有可维护性,要么不具有。所以我们必须保证单元测试的可维护性,才能使得一个好的单元测试成立,这很像妈妈经常和我说的一句话,不管你在外面挣了多少钱,身体是最重要的,身体就是存款最前面的那个 1,没有了这个 1,后面有多少个 0 都是空的。

看书的过程中我经常在用自己的思路在想,ok,我承认,那我就把这四个因素都做到最好是不是就可以写一个完美的单元测试了?实际上所谓的完美是不存在的,其他的三个因素存在相互制约,不可能完成同时达到最大值

回想起生活中的自己,遇到这种情况要么我会放弃了,要么我会选自己坚持的那个方向硬刚。而在违背规律下的任何努力都是无效的。作者给出的思路是这样的:分析这三个因子对命题影响的权重,在权重较低的因子上做一些牺牲、尽量最大化另外两个因子,注意这里不是舍弃,因为命题是由四个因子共同决定的,去掉任何一个都会使得命题不成立。其后面不断论证、推到的过程也让我对单元测试有了更深的认识。

这本书应该是让我对自己思考的方式有明确性的改变方向的一本书。而后生活中的许多琐事又印证了这种思路。

[共存]

由于组织架构的一些调整,走了一些人,来了一些人。反思了下自己,过去用感觉看人的习惯还是没改。对于一些新来的同事,觉得对方的做事风格和自己不相匹配,或者能力不突出。就给他戴上了有色眼镜。每次轻视他人的时候,我的内心不会产生优越,而是会产生一种羞耻的感觉。不要轻视他人,轻视他人有无量的罪过,何况自己也只是普通的不能再普通了。

现在每次我看到这个同事的时候,我经常用一句话来提醒自己:在一个项目里,当看到做的不如你好的人,想办法帮助他解决困难。这也是我最近看到用十年学习编程中提到的,暂且当作是一种鸡汤。做起来还真的挺难的,就从信任对方开始尝试吧?希望自己可以做一些改变。

最近工作上有很多事情压着,心里很堵,莫名其妙的会感觉胸闷,或者身体上是不是的会有痛感。本来打算去医院了,一次锻炼之余看到医务室开门想着去问问自己这种情况应该挂哪个科,于是一段奇妙的旅程开始了。

和医生说明了来意,医生看了下我前几个月的体检报告,做了一些简单的检查。说我的身体指标还是很好的,就是一些小项目的异常,没有症状可以不用在意。他说公司里和我类似症状的同学有不少,说白了还是工作压力大。我们都知道要排解自己的情绪,压力,那么要怎么做呢?医生说要改变自己的认知。我一听以为后面是一大串心理学相关的知识了,谁知医生的话也点醒了我一些。

在交流过程中,医生还没问我具体的情况,我只是简单的介绍结束后就问医生自己应该挂哪个科?医生说:我看得出来,你很急,很着急要那个结果。,心急是压力的起因。

医生说要改变认知后,问我要怎么改变认知呢?我回答了会看看书、跑跑步来排解一下。他笑着说:你是不是不跑步了就又难受了,只有跑完步那一会是好的?人体里的病毒排的干净吗?为什么要想着把你的烦恼、焦虑、不好的情绪排出去呢?我们要做的改变不是排干净而是合理的共存,后面他以为我们做软件的学历应该很好,聊了一些哲学的问题,实话说我只能脸红的说没有学过。但医生讲到的共存又让我想起了一直在研究的单元测试的问题,不能合理共存便是自己痛苦堆积的原因吧?

虽然怎么共存还没想明白,但是和医生聊了一下感觉轻松了很多。最后还被医生地域黑了一下子东北人看着很爽朗,实际上心挺窄的,你总装着那么多事能不堵吗?,我自己在他面前好像被看穿了,不过这确实是我的病根了。工作上的问题,如果没有马上解决,我会一直装在心里想着。其实这些事情都是很普通的工作问题。我不知道为什么自己那么看重,那么上心,如果有问题不能解决,甚至睡不着觉。为了这些忽略了关心、陪伴家人。有为了自己家庭一些自己无法解决的事情一直膈着,让自己忽略了其实自己也很幸福幸运的事实。

我怎么这么矛盾呢?不过好在感觉自己在一点点解决这种矛盾了。最近看完了一个电视剧 《非凡医生》,让我想起了一些朋友,以及一些要离开远去的朋友。我想把他们放在下一篇,题为 《朋友》…