程序员的实习

1.公司与团队成长
当桑德伯格在决定是否加入谷歌。
谷歌CEO埃里克·施密特给的宝贵忠告是:“如果你坐上了一艘火箭飞船,不要问什么座位号。赶紧上车。”
这个建议为她的职业生涯快速发展打开了大门,她后来成为了Facebook的COO。
更快增长意味着更多的挑战和责任。在快速发展的公司,往往有更多的问题需要解决,
这意味着你有充分的机会去学习,有很大影响力。增长也意味着它更容易吸引人才,
这反过来又使得它更容易建立一个强大的团队,以产生更多的增长。
而另一方面,如果缺乏增长导致停滞和政治斗争,员工可能会视野局限失去分享的机会。
最后变得更难找到并留住人才。按照桑德伯格的思想,你可以找到下列特质的公司,
它们规模不断壮大基于某种增长指标, 比如每周活跃用户的增长速度,
全年性收入,员工人数,或者一些核心业务考量。公司一般都会保护这些数字,
所以你要尽可能去找到它们。即使在更成熟的公司,不同的团队根据公司重点以不同的速度发展。
找到那些正在成长的地方提高你的学习速度。2.培训与辅导一些老牌公司投入不少资源去开发新手的培训教材。
例如谷歌,编制名为codelabs去解释他们是如何使用那些核心系统和为什么存在,
编译不同的编程语言的最佳实践和设计文档去解释缘由和细节背后的基础设施指南。
我当时加入谷歌的搜索质量团队在我硕士毕业之后,我的第一个半年我吸收了巨量学习资料。
如果你很好奇并主动地学习,在更成熟的高科技公司经常会有一个巨大的知识库提供给你。
较小的公司将不会有相同体积的资源,但即使创业公司,
也知道让新员工尽快熟悉和投资创建类似学习库的重要性。
例如,我在Quora的,我们写我们自己的codelabs,帮助新员工学习关键点,
我们给新员工分配导师,
以确保他们有效地不断提升。现在我们已经写了丰富的产品规格,设计文档,最佳实践指南,
并且我们已经在公司内部做书面和共享有用的资料。我们的内部资源,
无论是质量和记录知识量都比我们26人的团队要放大很多。
3.团队
“你是你花时间最多的五个人的平均值,”
美国企业家吉姆·罗恩曾说。你每天跟谁一起工作对自己的学习速度会产生难以置信的巨大影响。
当你你决定在哪里工作,你了解到的会一起共事的人,要确保他们是不是值得你学习的,
这一点是很重要的。有时候,在大公司你很难了解你的团队。当我在谷歌2005年申请工作时,
公司没有多少新员工队伍,直到他们已经接受了工作Offer。当拥有近10000名员工的时候,
工程师的技术能力和管理者领导能力的差异实际上是相当高的。
所以,除非你已经预先知道为特定的团队工作,你可能会被分配到一个强大的团队或运气不好分到一般的。
此外在更成熟的公司换组会产生问题 - 典型的期望是,
你会留在一个团队中至少工作6个月到一年 - 这就意味最初的团队分配很重要,
为了你的职业发展和工作幸福。相反,在一个小型创业公司,或者中等规模的公司,
你通常已经在面试中遇到你以后你工作的大部分人。你甚至可以在谷歌和LinkedIn查找他们的工作经历,
做一下背景调查,以确保他们是伟大的人(仅仅让公司这样做背景调查是不够的)。
这样你可以对你的团队有更好的感觉。4.节奏初创企业一般比大公司工作节奏更快,
中型公司往往两者之间。在大公司,提交代码审查的周期从每周,到每两周或每月发布;
上线准备;正式产品审批会议的所有组织结构会避免一些产品分裂。但是,
结构往往以发展速度为代价。在初创公司,持续部署(其中每一个代码提交都可以上线),
后提交的代码审查和轻量的审批流程的旨在允许快速迭代,同时提供了基本的质量控制。
在早期阶段的创业公司工作往往意味着更长工作时间(我曾经工作每周60-80小时),
但也不一定。Treehouse工作4天,32小时每周。 而在Quip,我的很多同事都有家庭和孩子,
我们有一个良好的平衡工作计划,许多人每周按40小时正常工作。5.项目结构在大公司,
你可能会很长时间专注于同样的团队成员和特定领域。例如,在谷歌,
我第一年就做查询优化的工作,第二年就只做搜索的UI实验。
如果你有一个特定的兴趣和领域可能也不错。在成熟公司项目也往往更有条理,
你可从你的技术主管,产品经理或经理能更多的指导。在一个小公司,
你能否发现同样的兴趣点和深度取决于特定的团队结构。在Ooyala的,
我在那经历了30到70名员工成长,作为技术主管,几乎集中花了一年时间把分析的技术做到领先。
而另一方面,在Quora和Quip,团队结构已经更加流畅
做一个项目几个星期就转到别的是很经常的。
在过去的几年中,我有机会在工作中接触用户增长,实验框架,移动端,运维,推荐,
垃圾邮件检测,分析及更多的领域。项目的多样性有助于加快自己的学习曲线。
6.自治与影响力
由于在一个更小的团队的创业公司,对很多产品功能直接掌控,
你最终会比在一家大公司有显著自主权和影响力。当我在谷歌工作过的UI实验组,
任何明显改变(甚至实验)必须经过每周UI审查,然后由搜索产品VP,
玛丽莎梅耶去批准。在创业公司,你可能会做出许多由自己或团队的决定。
这种影响在产品层面(哪些做哪些不做,以及如何构建它)都适用,
并在团队层次上(怎么做招聘和面试,如何安排团队优先级,鼓励什么编程实践)。
而这意味着你将有一个更大机会去影响产品和团队,这又可以推动你在工作中更好的学习。
而在一个更成熟的公司,如谷歌,很难发挥一样大的影响力,因为许多做法已经深入人心。
7.规模在更成熟的公司的,虽然可能更难以发挥影响力,但你能通过他们更大的规模做出很大的影响力的事。
比如谷歌提供数十亿的查询,每天PB级数据。 Facebook有超过13亿的月活跃用户。
Netflix公司占了美国所有的互联网流量的三分之一。 如果你对大数据和流量的问题感兴趣,
肯定在更成熟的企业更容易找到机会。在规模较小的公司,你可能会发现机会,
比如在Amazon Web Services运行机器或
分析使用Elastic Map Reduce运行数据,
但它数据量是很小。这就是说,你通常情况下不需要进行规模数十亿的计算,
让你觉得有很大的区别。数字规模重要性取决于你是否有这种价值需求,
要解决的问题的类型是否需要这么多的数据。对于像机器学习领域,例如,
你需要一定的规模数据才能建立有效的模型。8.自力更生在创业公司,
在你不知道的代码库去查看并修改,创造多种工具,帮助自己更快迭代,
这能让你走的更远。在规模较大的公司,你可以指望专业团队去配置数据库达到更快运行速度,
修正错误的编译器,创建构建工具,并监督线上服务。在创业公司,
你可能会自己负责找出上面的问题。你仍然可以用用第三方咨询,
但最终的责任还是落在了你身上。你的独立水平加速或损害你的学习曲线吗?
这最终取决于学习者你的类型 - 你是更加自我导向还是更喜欢更多的指导?
9.失败风险在创业公司,你很可能会采取降薪以换取更多的股权,
但如果你加入多轮以后的公司,有一般不会有生计的风险,
比如你可以租一个办公室公寓或者外出吃拉面。如果你在硅谷,
是一个优秀的工程师,而工程人员的需求是如此之高,真的不难找到另一份工作。
更大的风险是,创业公司不增长,最后无缘无故结束了,而你没有对结果产生足够的影响力。
这类型的风险不仅仅是适用于创业公司。在大公司,你工作的一个新项目(甚至是一个新功能),
也有被砍的类似风险。在谷歌我也看到有些项目几个月或几年工作后从未推出。失败是可以有学习的机会,
只要你在结果中发挥了重要作用,因此可以在下一次改变你的行为去避免覆辙。
但是当失败出现在从你的影响圈之外时,这样学习是比较有限的。
当你对结果可以产生较大的决定权时,你会学到更多。
10.联系人脉联系新人是一个很好的打开你头脑思维的方式,
也让你更多地了解周围令人兴奋的事情。
加强人脉与你的关系还可以帮助你找到未来的新的偶然机会。
在创业或中型公司公司易让你有更多的交流机会,主要因为小公司对付的问题一般都很难,
而且他们愿意投入时间来帮助对方成功。虽然说即使在一家更成熟的公司也没有人能阻拦你去社交。
但特别是如果你在像硅谷这样的技术中心工作,
有足够的活动(派对,烧烤,聚餐,黑客比赛,技术讲座等),
在那里你可以跟别人共享相同的兴趣。你甚至可能会在一些热门咖啡店里碰到一些技术人员。

posted @ 2016-10-28 12:02  水里鱼  阅读(99)  评论(0编辑  收藏  举报