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

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

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

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

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

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

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

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

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

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

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

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

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

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s