研发的精神所在(3)- 努力拓宽眼界

今天写的这篇文章正值我们公司若干个项目交付的关键时刻,有些好消息也有坏消息;各位同事近期为了项目交付都非常努力,在外出差、加班都很多;但我还是请诸君加油努力,跨过这些坎,我们会变得更强大,梅花香自苦寒来、宝剑锋自磨砺出,在实战中练出自己的卓越技能,练出强大心脏,练出卓越效率的团队,练出我们的美好未来!

我猜想很多人会对我上一篇文章所提到的宽广的知识面的速成感兴趣,那确实对研发人员有很强的吸引力。我今天就谈谈如何在知识面方面速成。

什么叫“速成”?“速成”是个比较的概念,既然有速成肯定也有“慢成”。相对于某一领域的“专家”而言,知识面的宽广度是可以速成的;但是这个速成也不是一蹴而就的,可不能以为在三个月以内就可以达到很宽广的知识面。

那如何“速成”呢?别忘记上篇所提到的“好奇心”,如果你没有这个好奇心作为基础的精神内核,你肯定不会速成;所以我建议没有好奇心的研发可以换个职业。

除了好奇心,速成的最重要的方法是多看,多看看其他的系统。比如今天接触了一个供应商做OCR的,把他们材料拿过来看看,琢磨一下,OCR大概是怎么实现的;明天在客户那里听说了一个新技术,记在心里,有空的时候上网了解一下,下次在别人那里吹吹牛逼也开心呀;只要有心,身边到处都是可以了解的东西。比如我们银行客户的柜面系统、园区的收费系统、中午吃饭时候的收银系统、收快递的时候看看快递小哥的手持终端;网上的资料现在也非常的丰富,而且上网也很方便。

如何快速把握一个系统的大概,最重要的技能是思考方法,其实就是黑盒的方法,说的高大上一点是系统化思考的方法,自顶向下的思考方法。其实做研发的人有个毛病,真的是毛病,就是思考的时候容易坠入实现的细节。希望各位同事可以正视这个问题。

但是在了解一个系统或是做前期需求的时候,切勿把自己的主要精力放在技术的实现上,也不要管这个系统的技术实现有多难;而应着遵循如下几个步骤去理解系统:

  1. 系统的输入是什么?输出是什么?由此来定义系统的主要功能。
  2. 系统的运行环境是什么?依赖条件是什么?
  3. 接下来要理清系统的分成哪几部分、各自完成什么功能
  4. 系统中的各模块的角色和作用、数据流向
  5. 每一个部分之间如何通信、数据通过什么方式交换,并且如何互相协作。
  6. 主要过程是如何触发的? 我发现这个问题很多人会忽视。
  7. 这时候框图、架构图、状态图等就是非常好的工具。

如果你把上述的若干问题搞明白了,而且这个系统不是你工作要做的也不是你感兴趣的,那就可以不看了;对于拓宽眼界的事情,我的建议就是不求甚解,大概搞明白就好;因为你的主要任务是变成当前工作的专家呀!你当前做的工作就要做到没人比你厉害!这才是最高效率。

而如果上述的系统是你个人工作要做的,那就需要进一步细化、分解,这个过程就是自顶向下的设计过程。而上述的工作是异常重要的,即先概览再breakdown。为什么重要呢?因为软件总会有bug,在复杂系统例如我们的产品这样的系统中,排查问题非常依赖于你对于全局及各部分关系之间的理解;还因为在团队作战中,大家的理解一致了才可以继续协作。可以看见很多专家,可以非常迅速的定位问题,那就是因为他对于自顶向下的东西理解得非常透彻。

这部分说到底就是系统化的思维方法。我始终推荐两本书《系统化思维导论》(作者是个老外,如果没记错叫温伯格);另就是IDEF0 方法(不记得书名,IDEF0是美国国防部的一个方法论,我记得公司有这本书,如果没有网上也有很多资料)。

各位千万不要以为这是很简单的,这种系统化思维的方法是需要你自己有意去训练的。下篇文章我打算讲讲怎么变成某一方面专家。

研发的精神所在(2)- 做技术世界中遨游的孩子

Change is always good. 人类几千年的积累催生着各方面的新理论、新技术、新产品;有人说智能时代的“奇点”即将来临,有人说“奇点”就是现在,也有人持有悲观态度,认为“奇点”还离得很远。甚至有人说机器智能第一将会取代的就是程序员。不管这个“奇点”是什么时候,技术发展的切线斜率越来越大这个事实及趋势是确定的。

研发人员必须接受这个事实和趋势,努力跟上这个时代,努力让自己的技术和能力为人类及社会做贡献,并通过这样的努力让自己的生活更好。这是研发人员的历史使命也是极好的机会,我们不可虚度光阴,不可辜负这样的时代。

研发的核心精神是:保持一份强烈的好奇心!!!是的,这是一个好的研发的最基本素质。各位可以自己掂量一下自己有无这样的好奇心,如果没有,我建议你就不要做研发了。我说的是“强烈”的好奇心,如果不强烈,那也可以回家卖红薯。

要像三岁的孩子,对于新事物有兴趣去探索,学习各种新鲜的技术、不同的实现方式、以及面对不同的人!自己弄不懂的就要把他弄懂,以前没实现的就要把它实现,以前做的不好的琢磨一个方式把它加强、做得更好,相信各位能够感知在千方百计完成一个任务之后的那种兴奋和愉悦感;体会过这种感觉的同学他就会不一样,没体会过的同学要尝试着去体会,如果长时间体会不到那么请转行吧,因为这个工作让你没有快乐,何必做一种没有快乐的工作呢。

做Java的也要看看iOS是怎么回事,做大数据的也要看看前端的JS是怎么回事,新出的各种技术也要有好奇心去看看是个什么东西,实现的原理是什么。不要让自己做青蛙,只管自己头上的那一片天。技术的东西很多是相通的,多看看对自己拓宽知识面非常有帮助,甚至对自己目前的方向的深入理解也有很多帮助。

这样可以极大的拓宽我们的眼界,让我们知晓世界的广大、感受技术的变化,让我们不再做井底之蛙。青蛙看见的一片天是真实的吗?是真实的,但是不是全部的天。但是我们不了解的东西实在是太多了,新技术实在是太多了,我们有那么多精力吗?所以我提供一个学习方法,就是狼吞虎咽、不求甚解。把一本技术书籍的前三章看完就可以把书扔了,做个初步的了解原理;所以公司经常组织技术分享,努力拓宽大家的知识面。因为没有那么多时间啊!在这种方法下,知识的广度可以很快积累,可以速成的。但是这种方法只适用于我们一个新系统的初步准备阶段,只适用于我们作为孩子学走路阶段,还不能独立行走、不能跑。因为你还不是专家,你还不能实现这个系统或者业务,因为专家是需要深度的。

保持好奇心还有一个隐含的意思就是也要做个谦逊的人,我们必须要清楚,未知的东西仍然浩如烟海,我们只是捡贝壳的孩子。是的,我们是孩子,我们好奇且谦逊;我想这是对乔布斯所说的“Stay Hungary, Stay Foolish”的最好注解。

研发的精神所在(1)- Change is always good.

这是我准备写的一系列关于研发精神的文章的第一篇,先在公司内部分发


我要讲讲作为一个研发的精神,讲讲我自己的一点感受。我从学习Basic开始到今天也有近30年的软件开发经验了,做具体的项目也接近20年了。我这30年的感受是什么呢?是技术变化得真快,而且是越来越快!30年前我是用Apple II学习Basic的,80年代末2万多元一台的Apple II的计算能力不如当今一台200块山寨手机的CPU存储和计算能力;现在谁还用Apple II和Basic写代码呢?谁还记得20年前的Fortran是什么呢?谁还知道10多年前Java的CORBA总线?

技术热点的变化也是日新月异,2012年是移动端,2014年是智能硬件,现在是AI,是深度学习,是无人驾驶,明年是什么我不知道,一定会有新技术热点出现。我们公司随着业务规模的扩大,涉及的领域也越来越多,现在大数据的部分内容已经很多了,再加上Java,JS,Android,iOS,数据库等等,近期又涉及到OCR、图像处理和机器学习等内容,我们也会涉及越来越多的技术方向。

 

我非常庆幸自己能够赶上这样的技术飞速发展的时代,我可以亲眼见证技术进步对于人类社会效率的提升,我可以享受到科技带来的更多便利,并且更兴奋的是我也能够参与其中。对于技术人员来说,这是最好的时代!

但是在这样的时代,对于人的要求是越来越高的。如果你不愿意改变,那你会被推着、被迫改变。我举个例子,我的父亲今年74岁了,他70岁的时候要给他买个智能手机,他说太复杂、学不会、不想学、不肯要;结果现在呢?每天玩微信,经常和他孙子视频。连他这样几乎退出社会生活的老头都被影响,被逼着学习新事物,可见科技的力量有多大。老外说Change is always good,我们必须适应这样的节奏,个人才能安身立命,公司才能发展壮大。

在这样的时代,不再是一招鲜吃遍天,就说90年代的Fortran、DELPHI程序员,他们在干什么? 各位研发的同事怎么才能适应这样的时代?我就着我自身的经验写几篇文章给大家一点建议。

 

人生的修行(1)做好自己

每个人都应该自己设定一个人生的目标,没有目标的人生是残缺的人生。这种残缺的人生本质上和猪在猪圈里的生活并无不同。人生目标各有不同,可大可小:有人要以一己之力拯救苍生,有人要为科技做贡献,有人要炼丹修仙。在经济社会,“变成有钱人”是不是人生目标?我以为不是,这可以是阶段性目标,可以是人生目标的附加结果,而不可是人生的目标。再拿猪来做例子,如果知道猪的目标就是一直到死都有足够的珍馐佳肴,猪圈外的人会做何感想?当然经济基础也是很多其他人生目标的重要条件,我只是说不可以其为终。

是的,在上帝的眼中,我们只是猪圈里的猪,是一个平面上的蚂蚁。

古人说,三十而立、四十不惑、五十而知天命。在我的年轻时代曾经发下弘愿,要把这些人生的里程碑提前十年;在今年四十一属驴的年岁很遗憾且惭愧的说,我未知天命,人生还有很多困惑。

路漫漫其修远兮,吾将上下而求索

人生修行的目标是什么?东大校训“至于至善”明示了人生的修行是永无止境。“善”是什么?先哲是说“境界”和“真理”,而非仅指善良。

那我们如何修行?各种流派及先哲上穷碧落下黄泉,给我们了不同的道路,这些道路未必正确,就像读书是为了开拓眼界、启发思考而非相信书中内容。道家所谓修真,就是寻找真我;儒家说修齐治平,欲修身者先正其心;佛说摆脱烦恼、看破尘世、成佛免于轮回之苦;基督教说赎罪、亲近上帝、兼爱。所有的这些目的和方法无不从自身出发,从心出发,去探寻真理,寻找人生真意义。

可见我们的人生旅程不可先要求这世界、要求他人做什么,而是首先做好自己。阅读很多历史及哲学著作就会发现儒释道乃至基督给我们的要求基本一致,先做好自己,这就是人生的最基本的修行。

wkgb6lqpsdqacbvoaefyre5qdck17

有感于墙外跳的一只恶狗

郭文贵被部分墙外民运推为领袖有感,成文于2017年5月17日

赵家大院很大,前后分了好多进。

第一进养了些兔子、猪、驴、长颈鹿啊什么的,这里面长颈鹿还是最聪明的,因为站得高嘛。第二进的基本上是兀鹫、鬣狗、狼之类的东西,他们帮着后面的老爷们看守着第一进。赵家的老爷们被保护得很好,住在最后一进。

 第一进的动物们其实从来没有见过最后一进的人。只听说过分了好多房,互相之间有好多烂事,什么四房的管家杀了二房的孙媳妇的情人宋家人;三房跟四房关系很好;三房的孙子吸毒把自己搞死了;六房现在势力很大等等。但是这些都是传说,谁也不知道最后一进的人每天都在干嘛,只是偶尔第二进的鹰犬故作神秘的漏几句话就会在第一进中掀起轩然大波,尤其是长颈鹿那个激动,因为长颈鹿想自由在所有的院儿里撒蹄子跑啊,而现在第一进的墙很结实,第一进到第二进的门楣又很矮,长颈鹿的头没法低下钻进第二进去。

第二进里面有一只郭姓的鬣狗,长久以来靠着三进老爷们的支持从第一进那里捞了很多好处,甚至囤积了不少火腿啥的。这只鬣狗靠欺上瞒下巴结着第三进的老爷们。其实呢,长颈鹿们也不知道郭鬣狗的老爷叫什么,也许以后会知道吧。郭鬣狗跟着的老爷吃饭的时候,这只鬣狗就巴巴的蹲在老爷的脚下,指望着老爷剔牙的时候掉点残渣下来,这对于鬣狗来说就是珍馐了呢。

某天一位老爷丢了个骨头到桌子底下,鬣狗仗着自己有掏肛的绝技就跟某只狼打起来了,叫声还特别大。结果这只狼的主人一脚就把鬣狗踢出去了,痛得郭鬣狗嗷嗷叫,也把鬣狗吓得径直跑出赵家大院。

鬣狗想,打狗还得看主人吧?只是鬣狗不知道六房早就看鬣狗主人不顺眼,踢鬣狗正是给他主人看得呢。

郭鬣狗心疼自己私藏的火腿和珍馐,琢磨了半天,想出了一个他认为的绝妙主义。郭鬣狗就在赵家大院外狂吠,叫声很大,甚至兔子、猪、驴子、长颈鹿都听到了。郭鬣狗想万一这些猪儿知道自己只是被圈养的,没准能把第一进的墙给推倒了,虽然他知道墙边都有守卫;其实郭鬣狗更主要是叫给六房听的,那些陈谷子烂芝麻的事也有些跟六房有关,六房万一面子上挂不住,给他开个狗洞让他再钻回去呢?

 其实鬣狗没有看见的是,自己的狗链子早已被墙外的山姆大叔捏在了自己手里。山姆大叔早就希望自己能进赵家大院抢点东西了,这些年从赵家大院出来的兀鹫、狼早就被自己收拢,时不时的就操纵他们叫几声,只为了多挖点赵家大院的好处。对这只新出来的郭鬣狗,山姆大叔只是想利用他多卖点牛肉进赵家大院罢了。

 这些年跳墙出来的长颈鹿呢?因为没有什么用,山姆大叔说给你们自由,就把长颈鹿们送到草原去了,不闻不问;而墙外的长颈鹿们心肠真好,就是没有撕咬的实力,草原上自由惯了,也没有行动力。

因为郭鬣狗实为近期比较会叫的,赵家大院外面的长颈鹿们也激动起来了,因为自己没什么绝技,就跟鬣狗说,你来当领袖吧,我们大家都支持你,你跟山姆大叔一起把墙推了,解救一下兔子和猪等等苦难的动物们吧。

其实吧,兔子、猪、长颈鹿、鬣狗、兀鹫们都不知道有个奇怪的上帝安排,自己在赵家大院的墙内墙外根本就是两种动物啊。

关于信任

信任是人和人之间最难获得的东西,而非金钱、名誉等等。说两个人关系好,其实是说这两个人有非常好的信任,但是这种信任又有不同的类型之分:

  • 没脑子式的我就是信任你,就如信任中医、信任默罕默德或佛祖。因为我对你的信任没有逻辑,但是有其他方面的支撑(如文化)。
  • 恐怖式的信任:如果我不信你,我相信你会骂我、扣我工资或者砍死我
  • 交互式信任:我把一件事做好,你会相信我有这个能力,下次你会更放心的把类似的事情交给我去做
  • 价值观、人生观的信任:基于交互式信任逐渐会有价值观和人生观的认同,这时就会更了解和信任对方
  • 全面认识的信任:对双方都有着长时间的各方面的认识,就如和自己的人生伴侣

信任是与人交往中认知的结果,基于过去的判断会让自己做出现在和未来的抉择。

信任是有不同种方面的,我信任你的人品未必信任你的能力;但是也有人爱屋及乌。

信任是有程度的区别的,有些信任是不断加强或削减的。

我们应该做的就是不断加强自己的可信任度,所谓靠谱。做事靠谱,做人靠谱。一件又一件靠谱的事逐渐加强信任。

从信任对方到不信任对自己是个非常痛苦的事情。合作伙伴反目,夫妻分道扬镳,列入征信黑名单,乃至国家之间的战争。这种痛苦往往施加在信任感丧失的那一方,他会说我怎么也想不到你是这种人,枉我对你如何如何;另一方要么会说我本来就是这么想的啊,对对方的信任坍塌毫无愧疚,要么就是一样痛苦。

不信任也是逐渐形成的,但会比信任建立快得多;因为当双方开始出现怀疑的种子,这颗种子会迅速萌芽、膨胀、分裂双方的立场,于是双方开始做出戒备状态,这种戒备本身更是正反馈,会加速裂痕、提升双方的行为烈度。

人为什么需要信任呢?因为信任可以降低决策成本、提升人类活动的效率,并且让人们的心理更自在舒畅。不信任也是本能,因为人要保护自己。

但是在由信任转向不信任之间,恐怕我们在加大裂痕之前、对对方做出的事情做出反应之前,首要考虑的是先回到认知的层面上来,对方有没有在伤害自己?自己的事情做得靠谱吗?自己做的事情在对方看来靠谱吗?有了认知再决定和行动要更好些吧。

建立信任的最好方式就是说真话,哪怕是错误的真话也比好听的谎言更值得信任和珍惜。

我在认知方面,对于人不是太敏感,因为我过于理性,也过于理想化,以后要加强。

前合伙人的近况

郭伟离职几个月了,今日晚上11:00为了公司一个同事的薪资问题给他打电话,聊到一些情况,他目前用了我以前的行政顾小姐,用了以前的一个程序员陈cong,似乎公司运行得还不错,了解到现在公司的员工沈其实是去了前员工徐xiaodong的公司,但其实我心里很不舒服,几个不爽:

  • 以前有业务机会为什么不可以拿到西桥来?是我的规则没有定清楚?
  • 为什么顾要去他那里?为了现在的6K薪水?顾对我到底什么地方不满意?
  • 徐xiaodong这个人就是个品行极差的人,为什么当时郭伟对他那么看重?
  • 现在怎么就能加班到这个时候,而在我公司的时候就不行?
  • 最不爽的在于他其实对我公司现在的状况了解,且负有直接责任,他为什么就不感到一点愧疚?

我到底是看错他了还是我对人性不够了解又或是在嫉妒他发展的速度这么快?