硅谷工程师:关于工程师成长的一点思考

这是一名在硅谷工作的工程师朱赟在自己的微信公众号嘀嗒嘀嗒上新发布的一篇文章,聊到了自己对于工程师成长的一些思考。

下周公司要举办一个活动,找了硅谷一些比较 Senior 的技术女性一起做一场分享。请来的人包括 Google 的 VP of Engineering,Linden Lab 的 Director,Rackspace 的 Board Director,Medisas 的 VP of Engineering 等等。我有幸代表 Airbnb 去主持这次分享。主持的主要工作就是准备一些问题,以及在活动中引导每个 Speaker 的分享。

在做准备工作的过程中,自己不禁也对很多相关问题有了更多的思考。

我进入职场不到四年,总体说来,应该还属于一个初期的阶段。但是这四年,从周围的不同的人身上学习了很多东西,终身受益。这篇文章,着重谈两点体会。一是哪些外部因素会促进我们的成长;二是哪些方面是我们自身可以努力,以加快成长的速度。

先说成长的外部因素

有很多读者问过我,硅谷的工程师拼不拼。这个问题确实不好回答,因为方差太大。不过我身边有不少特别拼的小伙伴,每天有效工作时间都在十二到十六个小时之间。公司并没有任何加班的要求或者机制。这种勤奋是完全自发的。每个人的情况可能不完全一样,但是有两个外部因素不容忽略:一是来自团队的反馈和肯定,二是在工作中获得的成就感。

先说正面的反馈和肯定。这不一定是做了多么了不起的事情,或者是公司给了什么特别的荣誉。但在整个体系里,对个人的贡献和努力能表示出认可,这在很多时候,会不断激发团队里的正能量。一些简单的例子:可能是一封 Email 对某个人在面试上花的精力表示 Appreciation;可能是某人解决了一次线上事故后在组会中点名表示感谢;可能是老板与其 1:1 的时候直接表示嘉奖;甚至是简单的,平时组里相互调侃时大家的一句 “你太猛了” 等等。在一个相互对彼此的努力和成就表达认可和鼓励的氛围里,大家更容易开心地一起进步。

再说成就感。我觉得工程师这个群体还是更容易对自己 “做了什么” 产生自豪感,而不是自己 “得到了什么”。所以这里说的成就感就包括两个方面:一是他/她得觉得自己做的事情很重要;二是他/她觉得自己不断地有产出,完成了一些事情。

做的事情是不是重要,很多时候和团队的领导人息息相关。之前在《论一线技术领导者的基本素养》中提到过:一个好的领导人要善于 “挖坑”,也就是定义项目,安排各种工作的优先级,决定要做什么。换句话说就是长期的战略眼光。有了这样的眼光并对团队的工作有很好的计划和安排,把重要性传递给每个成员,这样,每个成员才能知道自己做的事情的战略地位,知道自己做的事情对团队乃至公司的发展是重要的。此外,适当地安排一些技术分享,让组员有机会去展示自己的工作,让他知道其实很多人对自己做的东西感兴趣,也是一个很好的手段。

而关于 “让工程师觉得自己不断地有产出,完成很多事情” 这一点,最近有一些切身的体会。我们组,总体说来每个人每天工作的激情很高,做事的效率也很高。前两天和老板聊天偶尔提到此事,他说的话我觉得很有道理:“一个团队应该有一些稍微 Aggressive 但又可行的 Milestone(里程碑),而且大里程碑分成小的,尽可能每两个里程碑之间间隔时间不要过久。这样,每隔一段时间,大家就会完成一个目标,就会有成就感。最糟糕的,就是定一些不切实际的目标,或是不断 Miss 预定的目标。这样的话,慢慢地每个人都会开始疲惫和迷惘,很难看清楚自己到底做成了什么。”

再说成长的自身因素

写公众号后,接触到很多的工程师。我朋友圈里面,和软件开发、计算机技术相关的人绝不少于一千。加上身边同事、朋友等各路大牛,我也不好大言不惭说我成长地很快云云,这里分享的仅仅是个人的看法和思考。可能也并不能对所有人、所有技术岗都适用。

我觉得技术人的成长还是要做到三个方面的平衡。哪三个方面呢?

一是思。也就是思考。你说是业务逻辑也行,说是系统架构也罢,我说的思考,是你需要不断地去想:你到底要解决一个什么样的问题?你的目标是什么?根据你的现有资源(时间、已有代码)和限制(各种业务逻辑、已有代码),你能做的最优的解决方案是什么?换句话说,我们的工作还是应该以解决问题为出发点。

一个人是不是真牛,不是看他会什么不会什么,而是看他是不是真的能把每一件交给他的事情妥妥地做成。

二是学。也就是学习。这不仅包括流行的新语言,新工具,还包括和自己工作相关的计算机理论。而这些学习的目的,就是让自己从技术出发,知道哪些事能做,哪些事不能做(比如 CAP 理论,NP 理论);知道自己想解决的问题是不是可以抽象成一个经典的问题,或是已有类似的解决方案(比如三次握手、二段提交等);知道别人走过的桥踩过的坑,自己是不是可以借鉴(比如关于并发、安全、性能),等等。

三是践。也就是实践。工程师的动手能力尤为重要。很多猫腻的、坑人的、虐心的问题,如果没有亲身交战过,你永远不能体会它的奥妙。而且经常动手会增强自己写程序的熟练度,提高自己的开发效率。另一个就是增强自己对问题的敏锐性。很多耗在 Debug 和 Troubleshooting 上的时间,其实从长久来看,会增加自己看问题的深度,尤其是对编程语言的熟悉度。很多时候,一个 Junior 问 Senior 一个程序相关的问题,Senior 信手就解决的,其实,没有其他,不过是因为练过经历过。

而这三方面,如果只注重任意两个甚至一个方面,你就会发现自己很努力却不见太大的进步。木桶盛水,水深总是受限于最短的一块木板的高度,就是这个道理。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2025-01-21 00:56:09

硅谷工程师:关于工程师成长的一点思考的相关文章

由google收录广告页面的一点思考

由google收录我广告页面的一点思考 先说一下情况,我的网站本来是做关键词研究的,但是适合百度不适合google,所以Google来的流量不多,收录也少很多,但是昨天查询google收录发现了一个特别的情况,收录明显增加,而且最让人费解的是收录了一个非常特殊的页面,一个广告页面,之所以特殊,是由于这个页面是专程为放置广告设计的,没有多少含金量,甚至从我网站,其它网站都没有到它的链接,不应该被收录的,而且这个页面里面有流媒体和弹窗,应该说也不友好. 针对这个情况,我分析了一下,突然想起自己前不久

关于java继承的一点思考

关于继承的一点思考 在 java 中, 继承是实现复用的一种方法,虽然很多时候不建议使用继承, 但不可否认,有时候使继承,更容易理解某个设计 我碰到过这样一种情况,一般的操作对象 类 A 实例,但是会间或操作一些类 B 的实例,B 大部的属性 A 都包括,这个时候使用继承,应该没什么问题的(至少我现在的理解是没什么问题,各位多指教),现在把A 和 B的一些实例放到 一个数组中 A[] as 中 ,现在要轮循 as ,并对 B进行一些操作,这个时候,可以用 instanceof 判断是不是 B ,

关于对象之间通信的一点思考

经典的DDD的告诉我们如果一个领域概念是一个跨多个聚合的动作,比如转帐,那么就应该用领域服务来实现这样的业务概念.领域服务的输入和输出参数都是聚合根,领域服务内部按照业务逻辑规定的执行顺序,按照面向过程的方式,逐个调用相关聚合根的相关方法完成整个业务操作.这种方式的优点是:1)清晰的表达和封装了业务逻辑:2)代码清晰,容易理解,代码可读性强:缺点:1)基本的OO思想告诉我们,对象与对象之间应该是通过发送消息和接收消息的方式来通信的.但是通过前面这种方式,对象之间不再像我们想的那样会通过发送消息和

拥抱新技术的一点思考 & 对大数据处理的一点思考

拥抱新技术的一点思考 末经本人同意,严禁转载,徽沪一郎. 概要 无论是github上还是Apache基金会,每过一段时间都会有一些非常优秀的项目出现.如何在较短的时间内比较好的学习和把握住新项目的精髓及要点呢? 就这个问题,本人做了些微的总结,主要集中于较短时间内会使用该项目,会进行相关的应用编程,能够结合实际情况进行系统调优. https://yq.aliyun.com/attachment/download 对大数据处理的一点思考 概要 2014大部分的时间都花在了Spark这一大数据领域的

关于Redis的一点思考与总结

关于Redis的一点思考与总结 Redis是一个复杂而又设计优良的系统,说它复杂是因为整个系统涉及到了很多方面的问题,比如:哈希存储.网络模型.集群特性等等.说它设计优良是因为这些问题它都提供了深思熟虑的解决方案. 我们花大量的时间学习一个技术,不仅为了能更好的使用它,同时希望学习它设计上的一些思路,这样在解决日常工作碰到的各种各样的问题的时候思路会更开阔.以下是对Redis一小部分内部机制的思考与总结. Slot机制 Slot机制的运维收益 Redis早期是不支持集群功能的,如果需要做数据分片

一个苦逼工程师对大数据的一点浅谈

2012年12月13日中国云计算大会在中关村软件园开始了第二天的日程,由于同事无法参加,于是我便趁此机会感受一下IT领域的前沿科技,做为公司里一名普通工程师的我,也比较喜欢关注IT互联网领域里的最新动向,尤其是近几年涌现出了很多名词,比如云计算.虚拟化.大数据,这些披着华丽外衣的新鲜事物被各个厂家炒的不亦乐乎,有时候和同行们交流的时候,不整点新鲜词汇好像都被时代淘汰了一样. 对于一个每天埋头苦干的我来讲,接触最多的就是系统.数据库.应用等等,我们每天要很努力的保证他们不出意外,否则就要丢掉饭碗,

会写程序还不够,硅谷杰出软件工程师都有的 5 种能力

曾任职于Google和Quora等公司.现任Quip软件工程师的Edmond Lau,于 <The Effective Engineer> 一书中访问任职于Facebook.Instagram和Google等知名网路公司的资深软件工程师,归纳出他们眼中高生产力的杰出软件工程师都具备的五种能力. 一.不害怕探索陌生程序语言 接触新专案或是转换工作跑道时,都有可能需要学习全然陌生的程序语言,许多人对此感到害怕,甚至未尝试就先放弃.其中,跳脱舒适圈的恐惧往往多于学习程序,会担心是否无法重现过去工作的

PHP工程师面临的成长瓶颈

作为Web开发中应用最广泛的语言之一,PHP有着大量的粉丝,那么你是一名优秀的程序员吗?在进行自我修炼的同时,你是否想过面对各种各样的问题,我该如何突破自身的瓶颈,以便更好的发展呢? PHP工程师面临成长瓶颈 先明确这里所指的PHP工程师,是指主要以PHP进行Web系统的开发,没有使用其的语言工作过.工作经验大概在3~4年,普通的Web系统(百万级访问,千成级数据以内或业务逻辑不是特别复杂)开发起基本得心应手,没有什么问题.但他们会这样的物点: ◆除了PHP不使用其它的语言,可能会点shell

硅谷高科技公司软件工程师薪酬比拼:Twitter排第一

软件工程师已经成为高科技公司最为重要的财产,因此他们往往也拿着非常高的薪酬.那么在硅谷这个http://www.aliyun.com/zixun/aggregation/9993.html">科技创新的重镇,他们的薪酬怎样呢,我们来看看GlassDoor针对初级工程师做的一个排名,结果可能有点出乎意料: 排名第一位的为Twitter:平均年薪114917美元 Facebook:平均年薪111428美元 LinkedIn:平均年薪110902美元 思科:平均年薪105562美元 苹果:平均年