优秀工程师进化录:前IBM高级工程师详解五大层次

互联网公司讲“基因”,就如同革命队伍讲“传统”,许多创业公司在成长期取得一定成就之时,都传承了创业伊始的热情与敏捷思维,但与此同时,也或多或少开始暴露出管理体系、沟通机制上的问题。为了提高创业公司团队工作效率,乾元资本所孵化企业“天天智电”CTO、前IBM高级工程师程超从多个维度为读者分享了如何开发优秀的产品,以及如何成为合格的工程师。

程超,曾任国际商业机器公司(IBM)高级研发工程师,现任乾元资本所孵化企业“天天智电”CTO,拥有北京航空航天大学计算机科学学士学位、软件开发管理计算机科学硕士学位。其具有架构和设计大型计算机软件工程系统、领导和管理软件研发团队的经验及大型商业数据库相关经验。

首先我们讲一下计算机科学与计算机工程的分别:什么是计算机科学,计算机科学是学校里、象牙塔里的东西。计算机工程是工业界,是你从一个学校到一个公司,应该掌握和学习的东西。计算机工程包含什么呢?从产品设计开始到架构设计,到质量保证和发布,包含了一个软件开发整个周期里所有的东西。

所以存在一个从计算机科学到计算机工程的转变。大家从学校里出来到一家公司,你可能觉得写代码就是一切,其实并不是这样。今天我要给大家讲的,就是开始这样的一个转变—需要建立一个很好的工程意识、开始工程实践,帮助你们成为更好的工程师、开发更好的产品。这个过程是需要1-2年的实践,你需要使用和实践才能理解很多其中含义。计算机科学需要积累,计算机工程可以从实践中学习。

如何成为一个更好的工程师?大家可以想一下自己认为的什么叫作一个好的工程师。吴军博士之前在谷歌工作,回国后担任腾讯副总裁,近年应该在做投资,他写了一本书叫《硅谷之谜》,他在书里把硅谷的工程师分成了五个层次。每个层次的工程师都有不同的特点,上升要付出不同的努力。我们的团队里,不管是产品、研发、测试,无论是你是否写代码,你都可以被分类到这些工程师的类别里。

软件项目有一个项目三角,互相制约,此消彼长。比如,成果固定的情况下,需要进度快,那么成本就需要增加,需要增加工程师。这是一个相互制约的过程。我们现在还是一个初创团队,那么成本是我们的最大的制约项。我们和BAT是不一样的,对于BAT来说,功能和质量(即成果)是最重要的,因为他们面临的挑战和竞争是我们无法想象的,而进度可以相对容易的通过增加成本解决。

软件开发过程,为什么要制定这个流程呢?规模以上的软件开发不是个人单兵作战就可以做了。软件开发过程的作用是标准化,就是任何一个人来加入,都可以达成共识。减少沟通成本、减少沟通中的误解。希望大家能够理解开发流程、环节、理解每个环节每个人要做什么事,这样才能最大程度的降低沟通成本,提高执行力。不知道大家是否都在大公司工作过,但是我想说的是,很多大的公司的开发流程未必是好的。

刚才的瀑布模型是一个很传统的老掉牙的流程了,很少有人在用。所以并不是我想要讲的。现在更多推崇的是一个叫做“敏捷开发-迭代”的开发过程,这个是我要讲的。敏捷开发是以功能为中心的,每一个功能开发完成之后就马上有成果、可验证。互联网开发要求需要敏捷。今天要讲的最最最重要的两个概念,叫做“持续集成”和“自动化”。

这个图是非常重要的,基本就是我们现在在使用的流程。持续集成和自动化都在这里标识了,在什么环节中需要。持续集成是什么?持续集成的概念就是把所有的成果给放在一起。这是一个集成的过程。比如我们把不同的代码整合到了一起这样的动作是其中一个例子。持续集成就是我们要不断的集成,让产品持续可以看到是什么样的。一会儿我会给大家看一下我们使用的工具。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180718A1CBTS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券