研发的那些事1--两项核心工作的关系

  曾经有一群人,将自己的想法变成一个个小孔,打在纸带上,他们把这纸带叫做Program——程序。将它塞入被称为Computer的机器中,然后恭敬的等待机器重新吐出一段纸带,拿着欢喜地去了。这群人被称为Programmer——伟大而光荣的程序员。

  后来,两个叫斯蒂夫的人搞出了个叫Apple的小家伙,PC——个人电脑开始燃起星星之火。但是这些小东西需要被称作Software——软件的摸不着的东东才能使用。所以,有人开始专门编写它们。其中一叫做比尔 盖茨的人,认为Software可以独立,而且有知识产权,不能随意复制,必须付$。所以,他建立了个叫Micosoft的公司,搞来了DOS,又自产了Windows,拉上一个叫安迪格罗夫的偏执狂,乘着蓝色巨人的东风,开创了软件工业。从此,那些编写Software的人,被称为Software Engineer——软件工程师,他们开发的软件又称为Software Product——软件产品。

  然后,不断有人凭借Software,改变世界,名利双收。最近的一个叫扎克伯格——一个80后,用一个叫“脸谱”的东东,改变了人们的社交方式。

  我们也免不了有这样的梦想…但是,一个软件要能挣来$|¥,首先要满足客户需求。要大卖,还得满足客户都没想到的需求。扎克伯格们都是市场+工程的复合大牛,而且今天,单靠一人可以取得一时之成功,但想长久,非得依靠团队的力量,通过系统性的工作才能基业长青。所以,凡人,还是先立足当下,或可它图。

  软件工程师的日常工作通常称为研发,可用下面的简单研发模型表示:

image

实际上分为两种工作,研究和开发。

  研究的哲学说法是:探索客观世界,发现其运行规律(详细的可看维基百科),被发现且被验证的规律便成为了人类的知识。研究一般分为两类:

1.基础研究:以获得新知识为目标,不关心其是否有实际应用价值。

2.应用研究:以解决实际为目标开展的探索活动。其结果一般以技术论文形式发表。

基础研究,特别是国内,都由大学、科研院所进行。大企业为保持竞争优势,则建立研究院开展应用研究。中小企业,则开发人员就是研究人员,所以统称研发。

开发人员的研究,不同于专职研究人员,主要探索的是他人已知但个人未知的世界,通过不断的搜集、学习,积累个人的知识,拓展知识边界,从而能顺利完成开发工作。如果能拓展到产品、市场等领域,可以看看那儿有钉子微笑。而有些极具科学精神和智慧的同学,触碰到了所处领域的前沿,那么可以试试专职的研究员。

  开发的目的是生产产品、工具解决实际问题,满足大众的需要,丰富大众的精神和物质生活。像Web2.0理念下的各种产品,极大的丰富了我们的生活。开发任务由需求驱动,工程师接到一系列需求(文档记载,详略不一,甚至有口述的),联系已经学到的知识,开始设计,实现。期间很可能发觉缺乏某些知识,如对某个技术不熟悉甚至不掌握,必须要先通过研究,习得新知识,才能继续开发活动。如何运用已有知识,写出合格的程序,就看各人的智慧了,有赖于99%的汗水+1%的灵感,当然1%灵感是决定性的!而灵感来自于,通过坚持不懈的研究对客观世界的观察得来感悟。机会只垂青有准备的人,没有锤子,即使看到钉子也只能扎手。练得千斤力,方能开顽石。

  作为研发人员,能不断的创建、创造,享受带给他人改变第一重的幸福。同时研发人员又是悲哀的,因为你得学习、学习再学习,不断的研究,积累知识,历练智慧,才有可能享受哪种幸福。否则……

posted @ 2011-02-20 19:17  Chaos  阅读(3214)  评论(3编辑  收藏  举报