文:Gracia (本文为原创内容,部分或全文转载均需通过做者受权,并保留完整的做者信息和技术人攻略介绍。)程序员
导语:本期采访对象程显峰@程显峰-Mars,蓝海讯通COO。素有“技术圈交际花兼娱记”称号的显峰,是MongoDB中文社区发起人,曾任积木盒子技术副总,Admaster首席布道师,混迹于安全、广告、云计算、大数据、互联网金融等多个技术圈。面试
“何时采访我?”在GitCafe北京分部的开幕活动上,显峰半开玩笑半认真地问我。认识显峰的时间不算短,总在各类技术大会与小会上频繁碰面。过去一年多,他的工做状态算不上“稳定”,这不,刚离开高大上的互联网金融,投身APM的伟大事业。真要采访,得先选出一个可行的话题切入角度,他引用《人件》里提到的“高科技幻觉”,从传统工程的角度谈了谈对IT研发管理的见解,因而采访主题顺利地定了下来。算法
这通吐槽显然憋了好久,不乏“这个行业充满了骗子与强盗”的激烈言辞。我有点被惊到,常看他以典型的东北式幽默与人调侃,并不知道他原来如此严肃。在北五环外的东升科技园,咱们从下午两点半,一直聊到天黑,期间换了3个场地。末了,他叹到:“为何好好作技术这么难!”编程
显峰无需借此博眼球、搏出位,公开发表这些话给他带来的潜在风险远大过收益,观点犀利天然会赢得一些赞同,也不免招致对号入座的无故恨意。在乌合之众汇聚成的网络空间,谩骂而非理性的讨论是更为常见的交流方式。虽然在文字上作了些处理,我仍然对其可能带来的争议无比担忧。发给他确认,几乎没作大的修改,仅回了个:“总体很流畅,但细节上的文字还不够平滑。”看,真是个对品质要求很高的人。segmentfault
这些细节暴露了他的始终如一,也让我更加理解显峰的选择,不安定的背后,自有他严格的价值坚守。若是有机会,显峰但愿去教小孩写程序,热爱学习的人是真诚的,他喜欢和这样的人在一块儿。七牛云存储
技术人攻略:你从何时起开始对对研发管理感兴趣?安全
我是学工程出身,本科就读于哈工大航天工程与力学系,研究生是悉尼大学的航天专业,期间受到了严格的工程训练。传统航空业的研发和制造体系很是完整,拿造飞机举例,悉尼大学的本科生就彻底能够组装出可供销售的飞机,由于整个生产过程很是严格,任何一个扳手都有编号,有详细的记录和流程,不可能搞错任何东西。微信
虽然专业选择了航天,我对编程却很是热爱。从小学就开始写程序,那时候家里没有电脑,每次上机须要走40分钟山路。研究生期间,独立完成了完整的有限元分析软件,算是我在科学计算领域的一次实践。网络
回国以后,我加入的第一家公司Antiy,很重视底层技术,产品作得很是成功,但研发管理作得并很差。我在那期间学了不少软件研发历史,但在研发体系建设上,仍是留下了许多遗憾。随后加入作互联网广告监测的创业公司AdMaster,当时公司正在筹建,人员来源多种多样,研发管理问题比较突出。个人职位是专职敏捷教练,配合技术负责人作团队建设,开始更深刻地思考研发管理。框架
刚进入IT这一行时我很难理解,为什么在传统工程和制造领域很日常的事情,在IT领域倒是须要商量和悬而未决的。可靠性在航天等领域早已解决得很好,为什么软件行业却一直解决不了产品质量问题。后来看了很多管理的书,发现IT研发管理的许多思想都是从建筑业、制造业借鉴而来,例如快速迭代、精益管理等概念。
结合工做实践,我逐渐发现了研发管理问题的症结所在。研发能力是工做的综合体现,内功水平是关键,任督二脉打通了,练什么都很快,至于到底用哪一个套路,是很轻松的一件事。举个例子,你们一般说要作“敏捷转型”,认为本身是从传统软件研发转型成敏捷,关于两者的争论也显得像是泾渭分明的两派,但实际上不是。难道传统软件就不作配置管理吗?难道敏捷就不作测试吗?这两派理论有八成是同样的,即使在软件工程教科书里,也一样有关于质量控制、配置管理、迭代等理论,若是很好地去执行,一样能够达到不错的效果。
为何敏捷转型失败的案例不少,由于企业并不具有相应的内功,只想寻求解药,觉得敏捷能有所帮助。实际上若是不打好基础,结果仍是同样。具有这种内功的人,玩传统软件也会很好。航天、制造、金融行业并不过度强调敏捷,固然敏捷里的好东西,他们也能很是快地去借鉴。《精益软件开发艺术》这本书的做者来自波音公司,他们将其在制造上的经验应用于研发,对软件的驾驭能力至关高。
强调时髦的概念,对研发帮助并不大。好比知道了TDD测试驱动开发,对团队帮助有多大呢?TDD想执行好,要求对测试理论有深刻理解,但大部分国内开发团队不只不具有很高的测试水平,连测试是什么,如何测都不知道。这种状况下去推广TDD是没有意义的。
技术人攻略:根据你的观察,国内研发管理有哪些常见问题?
我观察到国内研发管理主要的问题有几个:第一是过于强调个性,缺少共同价值观;第二是内功差,不重视软件质量;第三是不少从业人员眼界狭窄,拿无知当个性;第四是对技术缺少敬畏之心;第五是总体气氛浮躁,擅长炒做概念而非脚踏实地作事。
IT这一行太推崇个性,过于强调创新,强调极客,而对于共同价值的坚守很是少。传统工程领域里,你们都遵守明确的规范和标准作事。软件行业的国家标准很落后,你们也都不执行,几乎每一个公司都会自定义一套方法和流程,你们各说各话。个性的东西太多,达成共识的东西太少,致使软件行业的人很难树立共同价值观,以及清晰的研发过程。
我作软件咨询的时候发现,很多合做多年的团队,都未能在基本价值观上达成一致。例如自家产品到底能解决客户哪些问题,10我的能给出8个答案。我认为研发管理首先要解决的问题,是造成一个团队,这就要求你们必须有足够多共性。想要塑造有战斗力的团队,须要模仿军队管理,你们穿同样的衣服,迈同样的步子,用一样的方式使用工具,减小没必要要的浪费和沟通。
创建共性的关键之一,是要对代码质量树立共同的承认规范。好代码必须干净、可维护、可测试性好、适宜阅读。若是在大规模项目以前没有就此达成统一,你们冲上去的时候,再说如何配合、包抄,只会被打得一败涂地。
关键之二,是要作好版本控制。版本控制是研发的基石,开发人员天天都要用,而即使不少资深程序员,对版本控制的使用方式依然很落后。版本控制最基本的要求是可回滚,但国内大部分公司作不到这一点。《精益软件开发艺术》这本书第0条就讲:代码必须在版本控制工具里。离开这个基础,其它的改善都是无用功。我原来一直在推Git,本质缘由仍是咱们的内功特别落后,你看Github有多流行,就知道国外作得有多好。
技术人攻略:国内研发管理内功不足,除了版本控制,还体如今哪些方面?
除了版本控制外,调程序和测试的状况也不乐观。国内程序员调试程序大部分全凭拍脑壳,不能以程序的方式思考问题,不只不具有调高难度算法的能力,也没有清晰思路去解决问题,更不会使用工具。
在互联网领域,测试的重要性远远被低估。合格的测试开发工程师应该既懂测试,又懂开发,还要能教育其它开发工程师。这种人在现实状况下很难找到,根据我面试的经验,能把最基本的单元测试要点说清楚的人都很少。
作互联网金融这段时间,我接触过国内不少第三方支付,都在测试上作得一塌糊涂。举个例子,开放平台让商家接入以前,须要提供一个虚拟测试环境。Paypal的正规作法,是给每一个商家创建一个沙盒。而国内大部分厂商的作法,是让全部商家共用一个测试帐号,往里面打一分钱。这一看就根本不懂测试理论,沙盒测试是标志性的东西,若是你到某个医院,发现那里没有显微镜,那就必定说明这个医院不具有作某些类型化验的能力。
电信、金融、制造业等传统软件开发领域,对软件质量重视程度很高。互联网领域最不重视软件质量,广泛采用的灰度测试,虽然能解决体验、交互流程上的问题,但并不能解决质量和正确性问题。测试能力是很基本的内功,作灰度能够,但不能对测试一窍不通还无所谓。这比如你有10发子弹,由于时间、资源所限,只能打1发。但若是你只有1发子弹,你就打,不要说别的很差,由于你根本不知道完整的方式该是怎样,只能灰度。
国内的创业者每天看TechCrunch,知道美国的市场、机会、商业模式,惟独别人的研发流程不了解,因此只会抄袭一些表面的东西。媒体老是报道Facebook一晚上成名,但不多有人知道,在这家公司刚开始壮大时,就从Mozilla挖了一位很是资深的专家去负责工程。这些经验丰富的人是团队的定心丸,前进路上有多少坑,他们早就踩过了。研发有本质的客观规律,不能由于你年轻,你创新,就逾越这些规律。
技术人攻略:你提到的从业人员眼界狭窄,表如今什么地方?
从业人员不怎么看书,是这个行业广泛存在的问题,最多看点讲程序开发的书,因此有文化的程序员特别少。做为完整的人来说,基础文化结构的缺失,致使大部分程序员看问题很偏激,没有常识,不知道历史,还总拿无知当个性。
例如作技术选型时,看好某门技术,就要用到项目里,这实际上是很是幼稚的行为。技术选型必定要考虑团队的驾驭能力,考虑能不能持续招到懂这门技术的人,以及最重要合做伙伴用了哪些技术,你选的这门技术能不能同他们高效沟通等非技术因素。
研发管理90%的问题,30年前在美国已经出现过,好好看看经典书,90%的问题能解决得挺好。不要总以为本身是世界上第一个遇到这个问题的人,差很少你都快成为世界上最后一个遇到这样愚蠢问题的人了。干了多年研发管理的人,都没读过研发管理经典的书,是很好笑的事。
我常常说,想去研究软件考古学。软件的历史比较年轻,可考证的东西又比较多,能研究出相对清晰的历史、来源、派系,帮助咱们了解行业的发展过程。《人月神话》这本软件工程经典书,就是讲软件开发的历史,程序员知道历史后,会更有兴趣去思考总体的行业脉络。
上大学时,咱们会从各类空难事故中,学习飞机设计失败的教训,例如某个部位为何要这么设计,是从哪一次空难开始改进的。航空工业能发展成如今这样,不是由几个小屁孩拍脑壳作成。在大致理论框架没有突破的前提下,许多改进都是基于已有经验,对细节的精益求精。任何行业都须要积累,研发管理也相似,咱们须要对行业历史有所了解,要传承,而不是彻底去创新。计算机行业理论框架突破并很少,而且能得图灵奖的理论,跟大部分撅着屁股干活的人没啥关系,因此仍是老老实实把这些经典理论继承了,对你的帮助更大。
至于为何要读那么多其它方面的书,除了能提升人文素养,还能帮你解决自身的问题。国外软件业大师,在思考本身行业问题时,经常能旁征博引其它行业的案例,例如引用一本护士学的书、一本机车修理的书,或一本建筑电气的书。各学科反复交叉会带来启发性思考,可能你这个行业的难题,在其它行业就不是事儿,帮助你开拓新思路。
技术人攻略:对技术缺少敬畏又如何理解?
国内一些程序员懒、没有开阔的视野,对于技术缺少敬畏之心,以为本身什么都懂,不须要特别谦虚去学技术,一幅老子写代码天下最牛逼的样子。问他行业里有没有偶像,回答没有,问他知道业界谁作过什么东西,回答不了解。这种人是行业祸害,拉低了行业平均水准。
开发人员能不能成长,只要看有没有追求就能够。面试时我一般会问几个问题,例如最近学了什么?经过什么途径去学习?看哪几本书?都是谁写的?他还写过什么书?关注什么开源项目?谁写的?他还作过什么项目?这几个问题若是能很清晰回答出来,说明面试的这我的是有追求的,起码有吹牛的追求。若是一个程序员连吹牛的追求都没有,是很失败的。
那这群人为何如此骄奢淫逸?由于拿钱过轻松了。互联网公司程序员离资本很是近,光今年上市的公司就大概有20家,行业发展得实在太好。国内互联网已经快15年没有寒冬了,包括2008年金融危机时,企业融资可能受点影响,但程序员的薪水一路水涨船高。除了干IT,有几个刚毕业的人能拿到上万工资呢?金融行业能拿到,但不须要IT这么多人。
美国每七、8年,就会经历一次经济周期,而国内这一代程序员没有经历过寒冬,因此不珍惜本身的工做,不知道本身真正的价值在哪里。出来混终究是要还的,大量发行货币必然致使通货膨胀,只是时间迟早问题。从经济学角度讲,市场有了泡沫,须要经历一次大萧条,把泡沫挤压干净,才能变成更健康的环境。经纬合伙人已经写信,让你们作好过冬准备,若是资本持续注血,繁荣的假象就会持续得更长,若是市场找钱很困难,那大批互联网公司就会死掉,释放出大量人员,工资水平立刻就会下来。
研发工做很是辛苦,须要踏实态度和长期努力,经过日复一日的艰辛劳动才会有所收获。国内浮躁氛围很难培养出好的工程师。但换个角度,工程师价格高了,对真正有乐趣从事这一行的人来讲,仍是好事。
从趋势上看,技术学习也正在发生变化,在校学生若是心态够开放,经过参与开源社区快速获取经验,在学校里就能练就很好的内功。这群人一旦成为一个小气候,能够直接和毕业5年左右的人竞争。尤为是当经济形势很差的时候,那些得过且过的人会很危险,终究有一天,他们会拿起书本去学习,知道本身根本不值那个价。
技术人攻略:这种行业广泛存在的浮躁心态,带来了哪些不利影响?
咱们生活在一个很是功利、信仰缺失的时代,人们只想快速获取财富,很难有正确的价值坚持。用博弈论解释,这种浮躁走向了囚徒困境,相似日本、德国这种成熟社会,你们作事都不浮躁,整个社会能达到比较高的均衡。而在一个浮躁社会,没按规矩的人走得更快,因而那些按规矩作事的人就吃亏了。这种浮躁其实把你们都害了,把行业也害了。
IT如今和钱离得比较近,因此病得挺重,整个行业里充满了骗子与强盗。你们努力的方向不是提高本身,而是只要能得到钱的事情都会去作。任什么时候代都有骗子,但一个国度里大部分人都是骗子,是不正常的,仍是应该实实在在创造一点价值。
热衷于炒做概念,是行业浮躁的表现之一。前几天参加一个研讨会,讨论了半天,才发现这群人不是在玩大数据,而是玩“数据”。由于之前根本没有数据,决策主要靠拍脑壳,如今有数据了,就以为本身与时代划上了等号,想裹着这个外衣去挣钱,真是无知者无畏啊。好多人以为有Hadoop集群了,上了硬件了,从政府那里拿到钱就牛逼了。可对数据没有理解,不知道怎么用Hadoop发挥价值,有钱也没有用。云计算也相似,被地方政府当成了房地产来搞,涌进许多根本不懂这个行业的人。
这种浮躁会致使软件研发竞争优点降低,咱们在圈子里有讨论,若是作高端基础软件,硅谷研发成本会比国内更低,能雇佣更高素质的人才,有更好的配合,以及更肯定的产出。国内拿到钱的互联网公司,未来可能都会去北美创建研发中心。贵不贵是一说,还有值不值的问题,为何中国建研发中心不值,这是一个很回味无穷的问题。
互联网行业看上去门槛低一些,创业相对容易,但总要设置一些门槛给竞争对手,因此仍是要有本身的积累。我之前曾喷过阿里这样的公司,以为他们作的东西不够专业,但后来我改变了观点,他们能坚持这么长时间,能把云计算推到这样的高度,就算走了一些弯路,也是值得敬佩的。这些实实在在的创业者,才是业界的良心。
技术人攻略:根据你作敏捷咨询的经验,实施技术团队过程改进的最大困难在什么地方?
最大的困难在于创建起团队成员对你的信任。许多敏捷实施失败的缘由,就是由于程序员不信你,特别是团队资深的人不信你,基本必定会失败。从事敏捷咨询行业的人,许多并非技术背景,他能够讲一大堆方法论,但程序却写得乱七八糟。因此想作好技术团队的过程改进,至少你得是个懂技术的人,首先要向团队展现出本身的技术能力,才有机会去解决困扰他们的问题。
管理大师德鲁克曾说过:“你度量什么,就能改善什么”。在具体过程改进实施中,我喜欢从细节着眼,寻找一些善于实施,又能见到效益的改善。好比我常常会用到一个方法:度量程序员的时间花在了什么地方。若是你们都是靠猜想,管理很差也不奇怪。
我曾经装过一个软件,记录本身使用电脑的行为,例如统计天天用了多少时间上微博、聊QQ、写邮件,仍是写代码。真正把时间记录下来以后,才发现实际结果和本身的感受截然不同。社交要消耗大量时间,很是影响工做效率,因此后来我把IM都关掉,集中处理工做。
一个管理良好的团队也是同样,想要改善需,就必需要有动力。做为管理者,你必须刺激团队成员身上的动力,给他们一面镜子,照出来他们背后的魔鬼,这样才会有改善的基石,这也是创建信任的其中一步。大部分程序员都很尊重事实,当他发现天天5个小时都花在聊天上,本身就会想办法去改善。逐渐实行这样能见到效益的改善,就会得到团队信任。
好多找我作咨询的人,容易关注一些表面现象,好比敏捷实施的各类方法。在我看来,表面的东西只占20%,真正想作好过程改进,必须花不少时间作基础工做。好比上面提到的对团队工做时间的测量,对你的改善目标,提供了强有力的数据支撑,是很是基础的改进工做。敏捷是一个方法论,在团队内功真正获得提高以前,那些方法没有任何用处,并且高深莫测的方法,会让你们感受到不肯定,容易对此起反抗。
实际工做中,许多咨询顾问不会花精力,去作看上去没有科技含量、很琐碎、鲜为人知的事情。就像刚刚谈到的大数据行业现状,你们在会上讨论着大数据的建模、分析、如何出漂亮报表,但80%的脏活累活,是要把数据有效地进行搜集和整理,它是简单的体力活,但作很差的话,根本没有后面这些故事。过程改进也相似,绝大部分工做就是普通工做,没有太多技术含量,也没什么值得可说的,但必须把这些基础打好,才会有后面的故事。
国外谈论敏捷的,都是有20多年工做经验的人,敏捷宣言发起者,都是业界大牛。而平时工做中,我常接触到一些许多没什么工程经验的人在实施敏捷,而且在各类业界大会上,沾沾自喜地分享他们的经验,因此我后来也不多参加敏捷的这些会了。我怀着一颗敬畏的心,去读大师的做品,思考我工做中的不足。我感受本身作的工做都很普通,都是大师们说过的,很普通的那些事情,值得分享的不太多,失败却是有不少。
技术人攻略:你从何时成为技术圈的交际花?你工做跨的圈子不少,是否会影响知识的积累?
我也不知道从何时开始成为交际花,大概是2011年初,我翻译了《MongoDB权威指南》那本书以后,参加了不少技术交流活动。在这些活动上,遇到了很多志同道合、真正热爱技术的人,让我感受很踏实,因而就更愿意参加社区活动。
客观地说,许多活动的内容和组织都还有很大的提高空间。你们感受日本的技术作得应该不怎么好,但我最近看了一本日本的技术刊物,发现他们的技术讨论很深刻,国内罕有。我之因此会去各个技术会议当出品人和主持人,是由于不想做为批评者旁观,而是主动推进这些事情的发展,促成技术交流的气氛。
离开上一家公司以后,许多作互联网金融的公司都给我打电话。我会问他们一个问题:技术能给大家公司带来什么?在我看来,大部分互联网金融公司处在初期阶段,还远远没到拼技术的时候。他们拼的都仍是业务,业务作得好,技术外包一个,都能撑过去。
如今加入的这家公司作APM应用性能监控,提供的是纯技术产品。我我的更但愿在一家不浮躁,纯粹以技术为价值导向的公司工做。云计算快速发展,已经到了踏踏实实给你们创造价值的阶段,我但愿经过公司提供的SaaS,让你们用得更舒服、更省钱。
我一直很喜欢跨领域学习,对不少东西都有好奇心。大学原本是航天工程力学系的,却由于研究工业自动化系统,得到了电气工程学院的Rockwell奖学金。尝试新东西在我看来不是障碍,而是乐趣。
工做之后,在不一样圈子认识了不一样的人,在互联网金融圈认识的人,若是一直待在广告圈,是不管如何也遇不上的。在各个圈子有朋友以后,能够作一些融合的事,好比想知道金融里面安全怎么作,就会有不少安全圈的朋友给我出主意。固然,在不一样圈子太多,单一的业务上说不上特别精通,但我我的积累的重心一直放在技术上,一直在认真研究和探讨本身感兴趣的东西,历来没有放弃过对积累的追求。
做者介绍:
技术人攻略访谈是关于技术人生活和成长的系列访问,由独立媒体人Gracia创立和维护。报道内容以“人”为核心,经过技术人的故事传递技术梦想;同时以小见大,见证技术的发展和行业的变迁。在这个史无前例的变革时代下,咱们的眼光将投向有关:创造力、好奇心、冒险精神,这样一些长期被忽略的美好品质上。相信经过这样一群心怀梦想,而且正脚踏实地在改变世界的技术人,这些美好的东西将从新得到珍视。
联系方式 gracia@devlevelup.com
微博: @技术人攻略
订阅:微信搜“技术人攻略”或“dev-levelup”
感谢SegmentFault提供博客专栏及推广支持。
感谢迅达云成提供云主机及技术支持。
感谢七牛云存储对“技术人攻略影像拍摄计划”提供支持。