您的位置:首页 > 其它

关于初创公司的研发体系构建,这可能是最成功的案例了

2016-05-23 10:46 316 查看
Etsy是美国一个在线销售手工工艺品的网站,创始人是罗布·卡琳,一名80后画家、木匠兼摄影师,CEO为原雅虎高管查德·迪克森,2005年上线,品类包括服饰、珠宝、玩具、摄影作品、家居用品等,核心卖点是原创和手工,更注重商品背后的故事。目前平台上有150万活跃专家。

架构审查

下面要介绍的两项工程技术实践则属于高阶技巧,而且发生频率要远低于代码审查与部署。其一为架构审查。当一组工程师认为需要实现一套新架构并将其同现有技术或者流程区分开来时,他们就需要记录下自己的设计思路、追求目标、要素权衡以及替代方案,而后与来自企业中的其他工程师们一道研究反馈意见。之后这些工程师会将自己抱有信心的设计方案提交给架构评审会议进行讨论,即交给企业内的全部工程师进行评估。那些新架构往往只有10分钟的说明过程,同时为其他工程师预留50分钟的提问与解答时间。

降低新技术比重
通过这样一整套新架构决策流程,我们能够确保自身使用的是最便捷且最具知名度的解决方案——除非没有选项能够供我们挑选。我们会尽可能避免进行全盘技术更换,单单是有趣或者令人激动是不足以使其进军生产环境的。

减少以自我为中心的态度
与代码审查一样,架构审查流程同样具备协作属性,这亦有助于将技术设计建议由单一工程师或者团队转移至规模更大的协作团队的整体观点,从而打造出与个人兴趣无关、而真正切合买家与卖家需求的解决方案。

增加审视角度
通过鼓励全公司所有工程师参与到架构审查中来,我们得以激发更多程序员的积极心态,特别是那些不会直接接触到新型技术的同事。通过这种方式,新项目开发团队往往能够跳出固有思路,得到来自全新角度的解读与启示。

提升认知水平
与日常代码审查类似,架构审查也能够确保Etsy公司的每一位工程师了解技术堆栈中不同组件的工作方式以及决策制定理由。

发生事故,不追责,不记账,不处分

作为最后一项重要工程技术实践,我要谈的是无责任事后处理。尽管我们拥有大量可行方案用于检查自身工作成果,但Etsy公司仍然无法彻底避免问题的出现。而在发生了任何对Etsy网站、应用或者开发周期造成实质性负面影响的事件之后,我们认为应当鼓励企业内的全部员工参与到事后处理工作中来,并由一位训练有素的主持者审查决策并制定行动时间表,同时对导致事故的原因以及后续影响进行排查与整改。一旦建立起这样的明确时间表,主持者会要求每位参与者表述其对问题根源的理解,并探讨如何做出正确的决策与行为——通过这种方式,员工们将积累到相关知识并接触处理工具,从而在未来面临类似的状况时将其提前纠正。

减轻恐惧
在事后处理工作中,每一位参与者都承认这种全民皆兵的方式能够帮助Etsy公司为买家及卖家客户带来最理想的善后效果。事后处理的目标在于了解为什么员工们的善意行为及决定最终导致了负面结果,我们又该如何改进自身工具或者流程,以应对未来出现的类似状况。另外需要强调的是,我们在过程当中始终强调“无责任”方针,帮助那些与事故相关的工作人员树立信心,并坚定自身工作方式与能力并不存在问题。

减少重复事故
以诚恳的态度考虑哪些作法可能导致宕机,并以此帮助我们了解能够加以改进从而避免未来类似状况的流程或者工具。我们从来不会让事故反复发生,而会更为积极地审视宕机发生原因,降低未来出现同样错误的可能性。

提升学习能力
通过在开放环境当中对事故的时间表及可能性补救手段进行讨论,我们得以揭开事故的神秘面纱并将其作为能够切实加以解决的具体问题。这种开放性心态能够帮助我们提升对宕机事故的认知水平,从而更为主动地应对此前发生过的未知风险及状况,并通过自我培养让更多员工掌握相关应对技能。

Etsy公司的工程技术原则

以下为Etsy公司的四项关键性工程技术实践:代码审查、持续部署、架构审查以及无责任事后处理。在了解了这些之后,我还会从中总结出工程技术原则性方针,这一切都是取自日常实践及日夜磨练的理论精华。其实际价值指引着我们为买家与卖家客户制定出最佳决策,亦实现了自身平台的长期稳定性。

放权与信任
Etsy公司希望在特定项目当中对工程师们放权,从而制定出符合实现目标的技术决策。当然,这并不是说我们可以“随心所欲”——事实上,我们必须努力工作以说服新技术方案的有效性能够通过同事们的架构审查。但这种方式确实意味着我们有权提出并证明自身希望的项目发展走向,而不单纯由工程技术领导者粗暴要求下辖工程师接受其架构层面的技术设计决策。

集体责任
通过代码审查与架构审查,Etsy公司的工程师们能够以协作方式共同制定技术决策。虽然我本人可能负责编写原始代码,但同事们能够通过代码审查贡献建议与意见,从而帮助代码成果解决bug或者逻辑错误,最终降低潜在风险并确保下一位接手员工更轻松地对代码内容进行阅读与维护。而如果是由其他同事编写某种新型架构的原始设计说明文档,则会由另一工作组的管理者对其进行审核,并决定将其纳入生产环境是否明智。通过设计与实现层面的技术决策合作,我们能够共同承担起责任并开发出真正令自己满意的项目成果。

持续学习
除了持续部署之外,Etsy公司的工程师们还一直遵循着另一种重要实践——我个人将其称为“持续学习”。虽然我们被视为“全堆栈”工程师,意味着我们能够处理服务器与客户端代码,但我们无疑也拥有自己最为擅长的代码库——或者编程方式。

当我遇到技术堆栈中的一类新型组成部分时,我会努力通过提问对其进行全面了解。我往往会求助于自己的同事,而他们则能够让我建立理解这一切的充足信心。反过来,当人们通过IRC频道或者会议提出问题时,我也乐于同他们分享自己的知识储备。
对于他人的疑问加以嘲笑或者表达出其它负面反馈,这在Etsy公司当中属于非常失礼的行为。而正是这种积极的学习意愿以及相互传授使得我们能够在良好的氛围与趣味性当中提升自身技能与知识水平。

相互督促,结伴而行
除了帮助彼此通过IRC与会议进行学习之外,Etsy公司的工程师们还乐于从对方身上发现问题。这意味着我们在代码审查工作中认真阅读彼此的代码,同时提出细致且重要的问题。这也意味着我们会以双重甚至三重方式检查并提交历史与错误日志,并以这种方式确保部署工作的顺利进行。另外,我们会在发现同事的产品或者工具中存在错误时及时加以提醒。

工程师们还会帮助任何企业内部的非技术人员编写代码,从而将其成果体现在我们的About页面甚至是网站当中。我们将这种协作称为“首次Push计划”。这种作法让工程师们在企业各部门当中享有良好的声誉以及人缘。专门负责我们公司每周两次Eatsy午餐会活动的Kaie Rose Crosswhite表示,她从来没有见到过如此程度的信任与支持。她表示,“我甚至想象不到工程师们彼此之间的情谊与扶助力度。”

总结

这四项基本原则分别为放权与信任、集体责任、持续学习以及相互督促,这一切帮助我们程序员降低对未知技术事物或者犯错的恐惧,从而显著提高了生产效率。事实上,我们将失误视为学习与创新这一持续过程中必不可少的重要组成部分。

事实上,我们每年都会庆祝偶尔出现的宕机事故——这对于其他工程师们来说可能是种闻所未闻的作法——并在网站上放置上图所示的“三臂毛衣”图以进行自我激励。这项年度活动让我们总结过去一年的学习收获,并提醒自身必须承担风险以保持产品与技术的不断发展,同时坚信由此带来的风险是完全值得的。实际上,我们需要分析其原因并从中学习,而不是以恐惧情绪消极地看待这一切。

正如我的同事Ian Malpass所言,我们应当将这种平衡视为“经过计算的风险”。对变革的恐惧会阻碍我们向前进发的脚步,但过于鲁莽的决策则会破坏自身服务,同时损害我们投入的时间、金钱以及买家与卖家客户对我们的信任。我们的卖家需要依靠Etsy公司的服务赚取收入,因此我们必须时刻谨慎以保障其成功,因为他们的成功也就是我们的成功。对其中的风险加以计算正是我们的工作内容,此外还包括考量可能出现的失败状况,对其加以解决并利用成熟手段在意外发生后实现业务恢复。

我们拥有坦率的问题分析态度,再加上我们在构建解决方案时的放权政策,这让我们能够更为高效地解决问题,并允许工程师们真正对自身工作负起责任以维护现有业务、满足客户提出的未来需求。而更重要的是,同事之间也在为彼此的工作与成长承担责任。我们将自身知识添加到流程与工具的改造举措当中,全部工程师共同参与以构建起更理想的工作环境——并最终为买家与卖家客户带来更卓越的业务平台。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  管理 技术人 创始人