什么是好的技术氛围?
无论哪个行业无论工作多久,每个人都希望自己所处的环境有一个好的氛围,工程师们会希望自己公司有一个好的技术氛围。什么才是好的技术氛围呢?好的技术氛围有什么现象?打造好的技术氛围,又需要做什么工作呢?
今天我们邀请了 2 名大淘宝技术的工程师,结合他们真实的学习工作经历,给大家分享一些 他们认为好的技术氛围。
01
大淘宝技术新品平台开发专家
技术氛围就是研发同学在整个团队乃至公司中,能被足够的重视,被确定价值,让他们感受到未来可期。
▐ 背景
在互联网公司中,研发团队可谓是第一生产力,往往决定了公司的根基走向和创新方向,然而技术氛围是研发团队必不可少的。简单讲,技术氛围就是研发同学在整个团队乃至公司中,能被足够的重视。团队中的大部分人,能热爱技术,喜欢折腾,乐于分享。在这样的环境下,一方面能激发团队不断的推陈出新,另外一方面也能使团队成员有持续的我的成长。若是团队领导只是把成员当成螺丝钉,以春蝉到死丝方尽的理念用他们,那结果就很明显了——你们天天都很累,感受身体被掏空,没有精力去学习新技术,去分享技术。长此以往,以为没有成长,就离开了。显然这种方式无异于杀鸡取卵,他们是一群充满活力的年轻人,须要被确定价值,让他们感受到未来可期。
▐ 什么是团队技术氛围?
个人认为,从公司角度来说,有自己的开源项目(公司内外沟通渠道);定期组织内部技术讨论分享会(内部沟通渠道);每一位负责具体模块的程序员都能了解自己所在项目组的整体架构(避免眼光局限);鼓励员工在业余时间做自己喜欢的项目并分享(鼓励员工成长)。
▐ 为什么要建设团队技术氛围?
有助于长期帮助公司笼络和稳定人才;
有助于公司创新,尤其对一些有技术门槛的公司,技术氛围所带来的创新至关重要;
有助于团队成员的成长,提升个人价值;
▐ 怎样才能建设团队技术氛围?
技术导向
有技术导向的价值观,是保持好的技术氛围的最关键的事情。
现象上来看,从个人导向上,大部分程序员都希望在工作中能有技术的提升,业务场景中使用的技术越先进,程序员就越兴奋,这也是程序员未来能在职场上竞争的重要筹码。所以有一个技术导向的团队,非常受程序员的欢迎,也会是这批技术人员渴望聚集的团队,这是双向导向的结果。那么,一个团队如何做到技术导向的氛围。
首先,从最高层开始就需要重视技术,尊重工程师。如果连CEO都认为工程师只不过是用来实现产品需求的资源,那么技术团队的负责人不管怎么做,也不可能保持住技术氛围的。这里说的尊重工程师,不是说给高薪之类的,而是说理解工程师的思维方式和做事方法,用客观的、有逻辑性的方式来带领团队。比如重视数据、使用 A/B test 等方式来辅助决策、信息公开透明、不随意更改需求、开发周期主导权由工程师把握等。鼓励工程师对产品发表意见甚至介入决策过程也是很好的实践。
其次,自上而下的推行技术平台化建设、推行DevOps、推行自动化构建、测试和部署流程。这几样事情虽然不直接产出产品,但可以显著提高团队的开发效率和技术水平,以及能够提升开发者为自己的产出物质量负责的意识,这也是一个好的技术团队必要的素质。所以要打造一支专注于技术能力的升级和基础组件维护的团队,因为有这个团队的存在,各个产品线可以保持相似的技术栈和开发方式,在基础组件升级换代的过程中也可以避免出现新旧版本混乱的情况。同时,由于脱离了产品压力,这个团队可以有更多的时间来考虑精益求精的技术问题,可以持续不断的推动整个公司的技术氛围。
分享精神
技术分享是快速交流思想的一种有效方式。
鼓励创新
对于架构师,在技术选型上有两种倾向:偏保守或者偏激进。偏保守的,会多选择已经经过多年使用,成熟稳定的技术,这样不确定性因素少,掉坑机率小。偏激进的,会多选择新出现的技术,因为新技术往往功能和性能上都更佳,可以更好更快的满足需求。
两种倾向各有优劣,我无意从技术层面上讨论哪种更好。但如果要打造一个有浓厚技术氛围的团队,那么最好是能将天平向激进一端倾斜一些。过于保守追求稳妥的技术团队是很难形成学习型氛围的。
任何工程师希望引入一个新技术,除非看到明显的问题(比如从现有技术无法平滑的切换过去),都会鼓励工程师进行尝试,用数据和效果来证明新技术的价值。一旦证明新技术可用且有效,就会进行全面的技术升级。尝试失败了,对工程师也不会有任何惩罚。
管理者对于创新需要有一个统一的认识:即创新都是有风险的。所以我们要经常宣导,多做才多错,不错是因为没做。要避免的是没有在错误中成长,而不是犯错本身。
当然,对新技术的选择会有一个硬限制,即团队拥有彻底掌握它的能力,出现问题时可以深入到底层进行修复。这会导致语言倾向,即优先选择使用本团队熟悉的语言编写的组件。当然,如果一个其他语言编写的组件非常有效,那么在团队内建设相应的语言能力,然后采纳之,也是可行的。比如 Docker 技术的兴起,我的建议是使用 Docker 的公司都应该拥有 Go 开发能力。
在招聘时,我们特别喜欢招聘喜欢“折腾”的人,即喜欢关注新技术,勇于尝试,不畏惧失败的人。这些人是真心喜欢技术的,团队里这样的人一多,管理者再给予鼓励,自下而上的创新就会自然而然多起来。另外,举办或者参加 Hackathon 也是工程师释放创新动力的一个途径,Hackathon 往往更偏重产品层面的创新,这里就不多说了。
工具文化
好的工程师是无法容忍低效的,能用技术解决的问题就坚决不要用人解决。所以要营造和保持一个好的技术氛围,管理者就需要鼓励使用工具,鼓励工程师引入工具或者创造工具。
比如各种工作流,能够使用系统在线解决的,就不要让工程师拿着单子跑来跑去找人。能够做事后审核的,就不要做事前审批。能够自动化的,就不要派个专人。繁琐的流程一定会导致优秀人才的流失和责任感的退化。
比如技术文档,能用 git、wiki 或者 google docs 管理的,就不要用邮件发来发去了。
比如开发环境的建立,能够做成一个一键建立的工具的,就不要再让开发者对着文档到处下载安装了。
比如软件上线发布,能够做成一个发布系统的,就不要再写发布文档交给运维一步一步操作了。
现在随着云计算和SaaS的兴起,有非常多的云服务和第三方软件可用,非常建议现在的管理者采购一些好用的工具,以及鼓励工程师自研一些定制化的工具。在创造和使用工具上,工程师的热情是高涨的,围绕工具的讨论也会促进技术氛围的提升。
总结
要建立和维护好团队的技术氛围,需要自上而下的技术导向,需要成员之间的分享精神,需要鼓励自下而上的创新,需要建立效率优先的工具文化。文化的建立和传承是个润物细无声的过程,管理者自己需要真正认可技术文化,在工作中不断打磨细节,才能起到效果。
有技术背景的管理者,对技术文化的认可一般不会有问题。但如果你的CEO或者合伙人还没有形成这个认知,那么不断的影响他们,给他们灌输技术文化的重要性,让他们真正把技术重视在心里而不是口头上,这个可能其实是你最重要的工作之一。
02
大淘宝技术消费者平台开发专家
技术氛围更重要的是在于“氛围”,即技术人员愿意投入精力、乐在其中、精益求精的这种氛围,而这也是技术驱动的公司需要去考虑和通过行动营造的。
谈到技术氛围的时候,可能第一反应是 Google、Apple、IBM 这些大公司,觉得可能雇佣的技术人员多了,技术业界第一了,这就叫技术氛围,但是技术氛围只需要技术水平就够了吗?
分享一个最近听到的冷知识,小时候经常玩的《打砖块》游戏,竟是乔布斯一生中唯一参与开发制作的游戏。这背后有个很有意思的故事,这事还要从 1972 年,两名开发者制作出的世界上首款街机电子游戏《乒乓》说起,玩家可以在街机上操控滑板来回击球。后来雅达利接手了这款游戏的发行,但忘记了申请专利,爆火的同时,各种盗版的游戏也蜂拥而至。因此雅达利决定开发一款单人游戏,这个项目落到了第 40 号员工乔布斯身上。由于当时技术有限,街机游戏机是通过芯片上集成晶体管电路,让晶体管控制电路开关来运行的,当时雅达利的工程师开发一款游戏大约需要用到 150 个晶体管,但晶体管价格非常昂贵,因此雅达利给乔布斯承诺,如果一个月内开发完成,可以拿到 900 美元报酬,每节省一个晶体管,将多获得 100 美元。这在当时的美国可是一笔巨款,乔布斯找来他的朋友沃兹一起开发,在接下来的四天里,两人几乎不眠不休,没想到居然真开发出来了这款足以载入史册的《打砖块》,而且仅仅用了 44 个晶体管。更厉害的是,这份作品的设计精妙绝伦,除了沃兹没人能玩得明白,直到另一个雅达利工程师用了 100 多个晶体管重新实现才得以量产,不过雅达利最终还是兑现了承诺,乔布斯收了巨额奖金。后面的故事大家应该都熟悉了,雅达利在街机游戏领域越做越强,“街机始祖”名副其实。
在这个故事里,我们能感受到雅达利里的这股技术氛围。4 天不眠不休的开发,不得不佩服乔布斯和沃兹的技术水平和优化实力,这个结果必定也是他们俩精益求精、不断精进获得的。乔布斯和沃兹愿意为这款游戏做出如此精妙的设计,自然也离不开公司为技术买单的魄力。通过技术人员的优化,为公司降低了巨额成本,再通过奖励犒劳技术人员,鼓励技术创新。这样的公司里,技术人员自然更愿意投入到更精妙的技术中,更加专注于技术本身。因此我认为,技术氛围更重要的是在于“氛围”,即技术人员愿意投入精力、乐在其中、精益求精的这种氛围,而这也是技术驱动的公司需要去考虑和通过行动营造的。