码农的幸福生活
老板满意的走了。30min 后,老板又回来了……
当然,计算机的单纯造就了程序员的呆萌。媳妇让程序员老公出去买 10 个包子,如果看到有卖西瓜的就买一个。结果老公就带回来了一个包子,因为它看到了卖西瓜的。
工作与生活不分不开啊 —— 因为我们 996 呗,马爸爸说了工作就是生活。编程工作其实就是翻译,久而久之,我就变成了需求落地的机器…… 我们肯定不能简单定位自己为初级工程师(翻译机),长江后浪推前浪,AI 迟早会让大家都浪不起来……
If you do not leave me ,we will die together
中学水平:如果你不离开我,我们会死在一起
四级水平:如果不滚开,我就和你同归于尽
六级水平:你若不离不弃,我必生死相依
八级水平:问世间情为何物?直教人生死相许
专家水平:天地合,乃敢与君绝
活佛水平:你在或不在,爱就在那里,不增不减
专业的翻译让人听着舒服,优秀的程序让计算机跑着舒服。程序无非是一套翻译,翻译的客体:一套执行逻辑,以及要执行哪些数据。如何执行的更高效?我们就需要走近计算机:cpu、缓存、内存、磁盘、网络……
如何做好数据管理:操作系统内存调度、数据结构。
如何让指令执行更快:算法、并发 & 并行、网络多机合作 ……
其实大学课本涉及的,操作系统、数据结构、算法、网络,是我们从初级工程师到高级工程师跃迁的基础,是职场中不会被大浪淘掉的根本。
了解我们的工具,多去试错,多去思考背后原理。好的工具无非两点:最大化压榨机器性能,最好的提高“翻译”效率。
代码写多了,尤其是重复代码写的手熟了,经常会一不小心到了“***”,咣叽咣叽写了很多。回头一看,“咦,这是谁写的?”
在大规模工程开发中,写对代码逻辑,反而成了不怎么重要的小技巧。重要的是,我们的东西怎么让别人看懂,怎么让别人看着舒服——当我们把这个事情想明白时候,也就看到了架构师的门槛。
就好比,多个人一起写书。我新创作了一页,知道它应该放在哪里。而且读者看上去,它就应该在那里。几天后,我突然觉得有个句子需要修饰,我能快速的找到这句话。
书会有章节的概念,生物界会有“门、纲、目、科、属、种”的概念,计算机也一直在提倡分层的概念。一个好的架构师,应该考虑怎么把工程的层次做好,然后协调多人去填充章节。
也就有了一些可参照的成熟模型:网络七层模型、工程的设计模式…… 看上去是把简单的解法复杂化,实际上是把复杂问题的清晰化。以后有机会可以展开讨论设计模式;不过,其实就是设计原则演生出来的实战技巧。换个角度,设计原则也无非是前人总结的一些范式。而这些原则、模式的核心,是缩小“作者、维护者、读者”,三者的信息 gap。消灭 gap 是不可能的,而 gap 的大小,可说是衡量架构师水准的最佳标准。
时刻记住要减小 gap,你就打通了架构师的“任督二脉”,设计模式、设计原则学起来就 easy。