加载中...

半杯水


读 《暗时间》 有感

这应该算是引子

半杯水 —— 思如杯,技如水,技盈则满,思盈则空。虚而不满,似无物,可容万物。

有一个辩题为「能力和思维哪个更重要」。我不选边站,「学而不思则惘,思而不学则怠」,物极必反是亘古之理。只是现在社会的竞争过大,很多人为了眼下的生活,都过份追求自身能力的发展,而忽略了不时反思自身的那份态度。

我之前问过一个海纳百川的朋友:「你什么新技能都去试,也不想想学得多而不精有什么用?」 于是他告诉我,这样才能在短时间内让上司知道自己有什么变化,而且新东西可以显得自己与众不同。

我想说,其实如果你可以坚持每天不穿衣服去上班,也是可以起到同样效果的…… 同理,我也不认为一味思考人生就会变得很好,当然如果你想成为下一个「深井冰」,那就另当别论了。

其实辩题不应该是哪个更重要,因为都重要。关键是如何在两者之间寻求平衡,保持半杯水的「状态」 —— 但我更倾向于认为这是种互补的「心态」:不过分依赖能力、也不过分依赖思考,不过分依赖自己、也不过分依赖他人,为身边的一切寻求互补,不卑不亢,聪明地做事。

分节目录

- -
● 苦逼程序猿,劳模运维狮 —— 工作怪圈
● 你需要 K.I.S.S —— 跳出怪圈(程序猿篇)
● 掌控你的资源 —— 跳出怪圈(运维狮篇)
● 能力与方法 —— 正确地使用你的能力
● 囚徒困境 —— 别宅了,抱团吧
● 人的核心竞争力 —— 技能不是万能
● 书写是为了更好地思考 —— 你的思维需要降速

苦逼程序猿,劳模运维狮

对程序猿而言,「重构」永远是最大的课题。

程序猿最困扰的,莫过于总要面对一堆乱七八糟的历史代码 —— 历史代码其本身可能并不混乱,只是经手的人多了,面目全非罢了。从心理上看,一份代码越混乱,对于维护结果抱着「无所谓」的心态越明显。但不负责任的恶性维护,尽头只能是重构,而即使重构了,却也只是新循环的开始。

而对于运维狮,「自动」应是他们最终所追求的幻想。

运维狮的工作核心基本无一例外的就是要面对大量的机器、大量的程序副本、不知何时会崩坏的线程,还要时常排查天文数字一样的监控数据,到头来却不知道自己究竟在维护什么。

即使渴望可以自动化完成这一切,但「羊群效应」却使得大多数运维狮无意识地从众,因为有安全感的,尤其所面对的东西是未知的时候 —— 既然已经有那么多非自动化部署的程序 …… 于是又手动拷贝了一份程序副本。

我们总是在嘲笑历史上的别人留下一堆麻烦,历史却总是惊人的相似 —— 因为我们在抱怨别人的烂摊子的同时,一边给别人制造烂摊子却不自知。若始终不肯抛弃「自我感觉良好」的心态,所有人都只能苦逼地活在别人制造的圈子里,然后成为别人嘲笑的劳模。这个循环是时候结束了。

你需要 K.I.S.S

首先要声明的是,不要理会别人的维护质量有多烂,从自身做起,保持良好的心态,负责任地维护每一份代码才是一个程序猿应有的职业素质。

但是总有一些代码经过历史不断的修补而变得过于复杂,复杂到我们宁愿放弃80%的功能(这并不是确切的划分,只是我深受二八定律影响罢了)去重构一份简洁的代码 —— 当然如果还有保有我们所需要的那些功能就更好了。

良好的开端比什么都重要。程序猿觉得代码维护困难,根本原因在于程序设计阶段没有做好。所以无论如何,只要你一下定决心要重构,请务必由始至终把 K.I.S.S 原则铭记在心。K.I.S.S,即「Keep it simple, stupid!」,直译过来就是「保持简单,傻瓜」。确实,把程序复杂化无助于性能和资源的管控,也使得后续的使用和维护更加困难。

有一条程序猿悖论如是说:「程序猿的工作效率并不会随着资历的增加而有显著提高」。究其原因,年轻的程序猿会耗费大量的工作时间去敲写几万行代码以体现能力;而老程序猿更倾向于在深入思考后再写出几百行代码以体现质量,即使偶尔花了大量时间在写代码上,一般也只是为了这几百行代码找到最优的组合而已。

这是因为所有老程序猿都明白,华而不实的工作能力,只会使我们的工作变得更加困难。只有简单才是美,为了简单我们不惜付出任何代价。

掌控你的资源

相对于程序猿,运维狮没有推翻一切重来的「重构」手段,因此需要的更多是务实的精神,但务实不等同于蛮干,技巧也很重要。一个合格的运维狮应该思考的不是「能做多少」,而是「如何做得最少」。

如果你觉得维护工作开始变得困难,或者已经很困难,就需要审视自己是否有正确利用身边的资源以提高自身的工作效率和质量。不要奢望「自家的」程序猿什么时候能提供自动化的程序使你的工作变得轻松,关注第三方的运维工具并利用起来才是王道,毕竟现在的社会,什么东西都是「别人家的」更好啊。

有一条成功的箴言如是说:「要看一个人是否成功,看他晚上8点之后在干什么」。其实也是很浅显的道理,白天谋生、晚上谋事。作为运维狮,虽然少有晚上时间,但闲下来的时候必须学会充实自己。如果你还在迷茫应该学习什么,或者我能够为你指两个方向:

  • 掌握 shell/sed/awk 三剑客编程:学会编写定制化的脚本
  • 掌握自动化部署工具 ansible:用程序生成程序、而不是手工复制

特别一提的是,不少运维狮容易受工作内容所限,生疏于编程语言、甚至不懂编程语言。其实不妨走出自己的圈子,学习一些编程语言,打通前后端,更有利于自身的工作。在维护出现问题的程序的时候,「知道用什么方法解决」和「知道为什么可以这样解决」是两种截然不同的境界。

这里说一个题外话,我在协助现场维护工作的时候,发现运维狮和用户之间总有争取硬件资源的矛盾。所谓「宁花机器一分,不费程序员一秒」,程序量提高了,用户却迟迟不肯放宽硬件资源,很多时候可能是没有看到有力的「证据」。如果能够做到常态化监控,并把性能数据持续集成健康的报表,对用户透明化,或许争取资源会更容易,这也是一种做事手段。

能力与方法

「如果你手里有一把锤子,所有东西看上去都像钉子」。 —— 这不是我说的。

往往我们可能花费了大量时间去学习一项技能,而学无所用是所有人最不愿意发生的事情。于是我们就会尝试在各个方面炫耀这项新技能,而不管它是否适用。

在我学习设计模式之初,就陷入了这种状态,几乎不能自拔。确实,设计模式为我打开了一扇大门,我首次知道原来代码也可以写得如此优美,使得我迫不及待地寻找可以应用它们的项目,哪怕只有一点可以用得上。但牵强附会总是没有好结果的。

再如我现在所参与的技术框架开发,虽然一些工具组件已经被成功推广起来了,但一些工具组件却依然不为人所知。不是说这些组件没有技术性,究其原因也是适用性问题。所谓的工具是为了提高开发效率才被制造出来的,而很多同事就投诉说,为了使用一个工具必须注意这注意那,还要配置一堆有的没的东西,甚至还可能与业务逻辑不兼容,如此复杂还不如自己实现。于是他们真的选择了抛弃这些工具。

所以其实正确的做事态度应该是:「如果你想钉一个钉子,所有东西看上去都像是锤子」。

即我们在处理问题时,优先考虑的是要做什么What,而不是怎么做How。只有先明确目的,才去选择合适的工具,而不是拿着一把工具对所有事情都勉而为之。正确而有效率地做事,谨记以下几点,受用无穷:

  • 方向比努力更重要:莫要南辕北辙
  • 流程比修补更重要:无规矩不成方圆
  • 方法比拼命更重要:事半功倍

囚徒困境

在信息时代,「大鱼吃小鱼」已成为过去,如今是「快鱼吃慢鱼」。但如何能够「快」?在软件开发中,如果单凭一个人在闭关修炼技术,无论学习能力多么像海绵,也不可能短时间内海纳百川,又如何能快得起来?其实这也恰好说明你开始需要一个团队了 —— 为了综合实力,取长补短。

软件开发的本质就是一项团队运动,人与人的因素对结果的影响完全不亚于技术因素。一个项目成功的关键不仅仅是写出漂亮的代码,团队中的所有人朝着同一个目标一起合作也是同样重要的。但团队工作经常遇到的问题,就是沟通问题,我遇到的主要有两种情况:不愿意沟通,或无法正确表达自己想法。

举一个博弈中的著名栗子,「囚徒困境」。大概是描述这样的一个问题:两个疑犯被隔离审讯,由于证据不足,若两个都抵赖则均判1年,两个都坦白则均判8年,一个坦白一个抵赖则坦白的释放、抵赖判10年。

从整体利益上考量,最优的方案是两者均抵赖。但由于两个疑犯不知对方所想,在对方可能会抵赖的怀疑下,局限于自身利益进行判断,都会选择坦白,以保证自身利益最大化。

囚徒困境也是在团队工作中,缺乏沟通或沟通不当的必然结果。所谓的团队任务,就是要每个人承担一块工作,分别完成后再整合。如果都只从自身角度做考量而不顾他人,即使自己工作得非常出色,但最终却无法与他人的工作完成整合,那么也只是在做无用功。

只有通过不断的沟通、磨合,才可能保证整体的利益最大化,一盘散沙,终难成事。所谓「要学做事,先学做人」,时刻谨记我们都只是半杯水:内修本领、追求极致,固然重要;外联朋志、寻求互补,方是王道 —— 抱团取暖 = 力量大。

人的核心竞争力

前面讲述的都是一些现实性的东西,那些确实都是我们用来竞争的实质性资本。但毕竟随着工作的更替,很多东西也就过时了。而不过时的只有思考的方式,或者说只有思考才真正是我们作为人的不可替代的核心竞争力。

下面这些是我平时或蒐集、或所悟的「箴言」,既然是分享,我就不要脸地「借鉴」过来了。有时这些看似与技能毫无关系的东西,可能恰好就在某个转折点决定了人生,所以都参考着看一下吧:

  • 万事先修德,养性必制怒
  • 广交朋友并为他们做事情
  • 多参与社区活动,积极分享,锻炼口才
  • 锻炼身体,笑到最后得有一副好身体
  • 反思是让人得以改进自己的最重要的思维品质
  • 「教」是最好的「学」
  • 我们都是半杯水,正是这样人生才有意义,不卑不亢,寻找互补
  • 人生就是一场修行,人必自助而天助之
  • 读书,尤其是读那些非实用性的书(如心理学等)
  • 潜心一到两项业余爱好,参与一些艺术活动
  • 不断寻找偷懒的方法,聪明地工作
  • 越努力,越幸运
  • 与智者交谈,思考,并常做笔记
  • 犯错趁早,防微杜渐
  • 因上努力,果上求缘

书写是为了更好地思考

最后,这是一个我自身的一个小故事。 —— 一个我成为 “作家” 之前的故事。

以前我们读书的时候,每天的工作就是写。而现在工作了,扪心自问,又还有谁拿起过笔?恐怕都差不多执笔忘字了吧。

那为什么我们需要书写?

众所周知,物理上速度的极限是光速。但撇开物理不谈,比光速更快的,则是人的思维 —— 因为光从地球到火星都需要400秒,而人想一下就到了。

这不是脑筋急转弯,大部分人应该有过这样的经历:在思考一个问题很久却不得果时,都会试着问一下别人的想法。但当我们把问题描述一次给对方的时候,对方还没做出回答,我们就突然「想通」了。

这是因为,我们在思考问题的时候,往往已经想明白了各个细节要如何解决,但由于思维速度过快、跳跃性太大,在想细节 A 的时候、忘记了细节 B,想B的时候又忘记了 A,从而引起「想不透」或「总觉得哪里不对」的假象。

而通过文字将问题重新描述一次,实际上就是一个将思考「降速」并「梳理」的过程。因此如果一直想不透一个问题,不妨用笔将其写下来,往往问题就迎刃而解了。有时可能还会因此有意外的收获。

以上。

所以….

所以我好像丝毫没有提到那个故事,这是因为我知道你们不会想看的。

但其实你已经猜到那个故事了 ——

所以大家都积极地写一点东西去记录自己的点点滴滴吧!

或许一开始你可能会纠结怎样可以写出令人眼前一亮的东西,但当你意识到这可以让你更好地思考的时候,你就会摒弃这种纠结。当你慢慢习惯怎样用文字去描述你的想法时,所谓「思如泉涌」也不过如是罢了。


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
  目录