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