良好的技术文化就像一个稳定和平衡的生态环境,有助于工程师以有效的方式思考和学习技术,促进自身的成长。同时,工程师技术上的每一点改进和创新都能够为客户带来更好的用户体验,也能为公司带来更大的收益。然而对于技术团队的管理者而言,要想创造好的工作环境,并不是一夜间就能完成的。它需要核心架构师和管理者的长期投入。不同的公司和团队在不同阶段对技术文化的要求不同,文化本身很难界定好坏,只有适合与否。本文仅介绍一些好的实践。
学习方向和工作相结合
很多团队常犯的一个错误是,团队的学习和分享没有明确的目标,只讨论眼下流行的技术,却忽略了团队的方向和正在做的工作。这种看似百花齐放的学习氛围,其实对大多数团队来说是一种浪费和伤害。
首先,由于工作中用不到所学的技术,所以很难有时间和场景深入地研究下去,致使大部分学习只能浅尝辄止。其次,新技术层出不穷,但绝大多数是新瓶装旧酒,本质上的思想并无创新。如果错误地认为很重要并且迫切想要学习,那么势必会事倍功半且不能做出有用的东西。再次,以这种学习方式衍生出的分享很难创造价值。分享者学习得不够深入,很难分享出有价值的内容。而其他人也只是看个热闹。久而久之,失去了分享的意义。
我比较喜欢的形式是圈定几个具体的领域,通过技术兴趣小组的方式自由组合,在一个实用的方向上深入学习。
沙龙和分享是常见的形式,也可以通过一些较低风险的项目试验想法和新技术,再配合wiki和定期的邮件作为沉淀的载体。绝对不要因为模糊不清的兴趣去组织活动和学习,时间和精力很宝贵,应当谨慎分配。
让参与和分享成为习惯
对技术积累有价值的事情,尽量全员参与,而不提倡一个人完成绝大多数工作,其他人只是被动地接受信息。
无论是代码审查还是阶段性的项目总结,都要让项目团队的所有工程师分享观点,共同去分析和讨论。小到一个经典Bug的分析和修正过程,大到某个产品的技术创新,都要尽量鼓励团队成员公开并分享他们的成果。不用拘泥于形式,公司可以提供分享平台,员工也可以自发进行组织,一封邮件、内网的一个帖子均可。这会慢慢产生效果,形成积极分享的氛围。对于代码细节更应如此。
这种分享和参与同样可以延续到公司,比如参与开源社区的技术讨论和具体产品,在各种技术大会上分享团队经验,让更多的团队成员意识到,我们不仅可以依靠公司的平台改变用户体验,还可以通过影响和我们一样的工程师改变更多用户的生活。千万不要低估这种意识的力量,它会激励每名团队成员不断地追求卓越。
润物细无声
良好的技术文化不是凭空出现的,它是自然生成的,是团队一贯行为的副产物。如果鼓励成员分享,那么分享就会成为团队技术文化的一部分;如果不断追求更健壮的架构和更优秀的代码,那么这也成为团队技术文化的一部分;如果鼓励团队之间的紧密合作,那么合作就成为团队技术文化的一部分。
技术文化是团队经过磨合和历练后形成的共同需要。因此,不要过多担心,更不要去强求,从最重要的小事作起,让良好的技术文化像佳酿一样慢慢发酵。