不是每一个优秀的工程师都能在创业公司做得很好。过去六年里,我在三个创业公司(Ooyala,Quora,如今在Quip)面试过很多有希望的候选人,他们都有着在顶级的技术公司(比如谷歌)5年以上的工作经验,但在我们的面试中却表现得不好。这些人肯定不是差;事实上,他能胜任目前的工作。我们只是认为,他不会成为特别好的创业公司工程师。
在多年面试候选人,培训和指导其他工程师工作的过程中,我发现某些特质使得工程师更容易在创业公司中取得成功。根本上,这些特质源于在创业公司工作不同于在成熟公司的几个关键环节。
在创业公司:
1、 你有更多机会直接接触产品,软件系统,团队和文化。
2、你的成功主要取决于团队的表现而不是个人。在一个更大、更成熟的公司,可能你获得晋升纯粹基于你个人贡献的力量;在一个创业公司,甚至可能都没有一个职业阶梯。
3、时间是非常关键的,一方面是因为创业公司往往还没有达到盈利能力,因为他们与竞争对手相比的主要优势是敏捷。在有限的时间意味着你必须迅速提升,并不能磨磨蹭蹭地工作或把太多时间浪费在低优先级需求上。
我曾经跟最有效率的创业公司的工程师工作,他们有能力和决策能力,有效把控局面。
他们表现出7个特质:
工程时间的很大一部分实际上是花在调试和了解一个复杂的系统中去的。一位顾客报告一个紧迫的问题,你必须尽快将其修复;服务器的CPU负载高峰,你必须找出原因;数据被破坏,你必须找出罪魁祸首。良好的调试技巧让你更快地完成工作。
有效的调试需要采取严谨、科学的心态面对问题:制定一个出错地方的假设,然后找出最有效的方式或者最小化重复情景以检验这一假设。另一部分是熟练使用各种工具:一个性能分析器可以帮助识别瓶颈,调试器遍历代码执行,git bisect缩小可能的地方,UNIX命令行去分析发生了什么。
调试的范围更广泛的应用不仅仅是技术方面。当产品增长已趋于稳定,你怎么制定和测试假设有关用户行为和调试这些趋势?团队没达到他们的项目目标,你怎么调试其根本原因?是项目估算能力太差?团队沟通不够?太多的上下文切换?还是其他什么?招聘没招到你想要的工程员工,你怎么知道问题是否在源头系统中,你的面试,发出的Offer,等等? (提示:先从数据中看)。
作为创业工程师,你经常需要跳入大又不熟悉的代码库。可能需要研究一些开源工具,因为该工具不按你的设想工作。或者你可能需要了解另外同事的代码,因为他没有修改的时间。快速浏览大量的代码库,并定位相关部分的能力变得至关重要。大部分的这种能力来自于阅读大量的代码的经验。另一部分来自于熟悉的工具来搜索代码库,跳转到相关的部分,并查找相关的提交历史版本控制,所有这些快捷键可以减少了解不熟悉代码的时间。这种勇敢同样适用于更成熟的公司,但你通常只专注于代码库的一部分并很好了解那一块。
你跳水到未知领域也不见得是代码。在创业公司,处理客户的支持、与销售人员讨论客户要求的可行性、培养新的工程师等其他不熟悉的事情都是有可能的。这种积极心态能帮助做好工作。
3、对决策的务实态度
像代码审查和单元测试维护是良好的软件工程实践,这上面坚持己见在大公司很重要,它可以帮助组织扩大规模。 但在创业公司,做什么使团队更快地完成工作更务实。实用主义意味着知道什么时候打重要的战役,有时即使你不同意,也请接受决定,因为它让团队作为一个整体能够取得进展。
我已经看到了很多争吵:在编码风格上、在源代码行是否应该是80,100或120个字符以及是否花括号应该开始一个新行。但也有不少更难,更重要的决定花费你的时间和精力。
指导启发式评估的最终评价标准应是:“什么样的行动最终将增加团队成功的概率?”许多因素可能会影响这个问题:产品选择,架构的权衡,团队文化,人、等等。不过也可能不会影响。最简单的做法是,限制讨论时间,对决定做承诺,并继续往前走。
工具让你争取到的最重要的资源就是你的时间。高效的工程师建造了大量的工具,这在创业公司尤为重要,因为你的时间更有限,需要完成的事情更多。大型机构可能有专门的工具团队来帮助工程团队更有效做事。在创业公司,你搭建工具能力越强,更多的手动工作可以自动化完成。如果这些新工具被其他团队成员采用,那么这是另一个生产力系数的提升。
特别是在创业早期阶段,大量面临的问题不需要专门的知识,而是更广泛的技能。即使它只是一个最低限度,你会发现工作熟悉的技能越多,你的执行路径瓶颈越少。一个前端Web工程师拥有一些基本的服务器技术将能更有效实现原型系统,而不会从繁忙的服务器工程师那里寻找帮助。
后端工程师会基本的HTML,CSS和JavaScript技能可以搭建一个Web界面让更多的团队成员可以使用它,而不是阻塞在一个网页设计师那里。一个用户增长工程师熟练使用数据分析工具可以分析运行试验,而不会被一个数据分析员所阻碍。
也有例外,当你在一个特别的技术空间工作,专家可能是能最大限度发挥作用的。如数据库的启动调试,这里需要深厚的专业知识。并且创业公司越后期,越有可能去填补这些专业领域,那么你就要找到特定角色来帮助完成。
Fred Kofman在他的书《有意识的企业》中描述了两种我们可以对任何问题采取的态度。我们既可以是受害者——将任何问题(项目的最后期限错失,产品推出搞砸,或与队友冲突)归于外部原因;或者,我们可以当参与球员——确定我们的能力范围后集中精力去解决一些问题。受害者心态可以让我们在短期感觉好些,但参与者心态是最终有成效取得进展的唯一途径。
在创业公司工作可能很紧张。随着高度紧张,很容易陷入指责的游戏,躲避责任,而不是在你能力范围能去承担责任。不幸的是,这条道路只会导致失望和不满。
对以上特质的一个重要发现是,如果你有足够的动机,那都是可学习的技能。长期学习这些技能的动力来自“磨砺”这种品质。安杰拉·李,在她的TED谈“成功的关键——磨砺“给出了伟大的定义:
对非常长远的目标是需要激情和毅力。磨砺坚持你的未来,不仅是一天、一周、一个月,是多年来的努力,最后努力工作把未来成为现实。
如果你愿意定期回顾过去,你就会明白你的弱点以及在哪些地方需要改进。随着时间的推移和经验增长,你会成为一个更好的创业公司工程师。在正确的道路上及早得到辅导和指导也可以让你走很长的路。
这些技能对更成熟的公司都有用;只是在创业公司更加重要,因为时间很有限。此外,缺乏这些技能并不一定意味着你是一个糟糕的工程师。它只是意味着你可能不太适合在创业公司。但是,如果你确定是一个很好的创业公司工程师,不要让这些阻止你。找出行动的计划去改进这些技能。
本文最初发表在雷锋网,文章内容属作者个人观点,不代表本站立场。