论码工的素质和层次# JobHunting - 待字闺中
S*r
1 楼
半年前写了一篇关于码工和发考题的长文,
http://www.mitbbs.com/article/JobHunting/32137997_3.html
今天再来讨论讨论码工的素质和层次,这也算是一个姐妹篇吧。
看到版上大部分人都在讨论做题,我就剑走偏锋,谈谈除了练好编程这些基本功以外,
一个专业码工需要注意的其他的大方面,算是自己毕业后工作几年的一点经验之谈。
因为自己初出茅庐,体会感想肯定难免有肤浅的地方。这里如果有几十年经验的潜水老
码工, 您老也就奖就看看,俺就在这班门弄斧,贻笑大方了。
以前听过某句老话:本科硕士解决问题,博士发现问题,大牛导师定义问题。说得很贴
切,其实做research如此,工业界也是同样道理。
合格的入门级码工对应于做research 的本硕士,最基本的素质就是分配了任务,能够
自己独立解决。就算是博士毕业的码工,也要经历这一阶段,打好基础很重要。这一阶
段,我个人的体会主要是三点:1。凡是布置的事情不要嫌小,不管多小的事情都要花
心思做好。 这点尤其对于博士毕业的码工,如果你是吃定这碗饭了,还是要早早放下
身段。 俗话说,devils hide in details,考虑周全,滴水不漏,其实是一种很高的
境界。有时候你不一定要都做到,但是要尽量都提前想到。2。遇到问题之后莫急于请
教别人。比如起码Google一下,时间允许的话甚至读读源代码。一开始可能显得你很慢
,效率不高。但是你学得深刻,以后事半功倍。3。做事情不要求快。如果想在同事面
前表现好,留个好印象,求快大多时候是要事与愿违的。留给同事印象最深的,判断一
个人的水平高低的方式,往往是看你个别活的质量或者发表的观点的高度深度。深思熟
虑,慢工出细活,然后才能熟能生巧。
对应于有经验的硕士和博士,那就是成熟有经验的码工。这类码工对于如何解决问题已
经有一套自己的方法了。这时候提升自己的主要途径是发现问题了。这需要对整个产品
线有个比较清晰的理解,同时能够主动发现值得解决的问题,然后开发出新功能新
feature。这期间需要掌握的是熟悉产品开发整个周期的各个步骤,然后决定什么是应
该解决的问题以及如何对解决。一个比较经典的流程大致如下:分析用户日志,归纳用
户行为模式,设计UI mock,? 分析学习用户反馈,书写设计文档,细分任务,优先调配
资源,实现原型系统,必要时还需要跑小规模试验,分析真实用户反馈,质量分析,? A
-B测试,直至最后产品发布等等。总而言之,这些具体任务你不一定要样样身体力行,
全部精通,但是熟悉了解这个基本流程中的每一步,你就掌握了一个产品开发的完整链
条,要推动去做一件新的事情那就成竹在胸了。
当然,真正的大牛是不局限于也厌倦了老产品的维护和诸多细节问题的解决方案的。大
牛更多着眼于定义新的产品,开创新的开发模式等。这需要对工业界该领域的现状(软
硬件)有很深刻的理解。从产品角度,理解为什么这个产品会成功,满足了用户的什么
需求,符合了哪些硬件发展的趋势,具体到为什么某个UI feature work得最好等等。
从开发角度,什么样的编程模式更高效,什么样的infrastructure能满足未来5年的需
求等等。从产品角度,拿Pinterest做一个很好的例子。正常人想不出这么个点子,即
使告诉你这样的点子你也觉得这是个很贫庸的点子,没戏,甚至开发出来让你用你都还
不想用。但是结果呢?人家火得一塌糊涂。碰到这类情况,多问问一些为什么?想想它
为什么火,满足了什么样的需求,为什么人有这样的需求,这个产品的ecosystem是怎
么build 起来的等等。从开发角度,Google已经有很多很好的例子了,大规模的廉价服
务器搭建的数据中心,改用闪存做二级内存的存储模式,以及现在正在试验的Google
Brain项目等等。大处着眼,平时稍稍关注这类问题可以有助于培养自己的判断力和
common sense,为自己创造好等待机会的条件。归根到底,机会属于准备好的人。
现在再说说国人码工的现状吧。中国人做码工,混得好混到高层的极少。主要是两方面
限制,一个是水平,一个是语言。先说水平。你跟人家老美那些顶尖的geek比,你又不
够geeky,人家毕竟是从小完美主义者+偏执狂的自由培养方式发展起来的。所以技术上
做到一定程度就到头了,只能是到一种唯手熟而的阶段。再说语言。绝大部分成功人士
都不是geek,靠的是social学习能力了。国人重理轻文,往往看不起“不踏实”爱夸夸
其谈的人。其实很多时候是我们自己太狭隘了。比起你一个人自己学的东西,人家跟5
个人聊天学到的可能是你一个人自己学到的2^5次方的信息量。为什么很多老外显得知
识渊博但是基本功不扎实就是这个道理。而基本功扎不扎实其实到一定阶段就不那么重
要了。人脑子本来就是个搜索引擎,信息量这么大的现代,只要存储index就行了。遇
到问题,知道去哪里找答案就足够了。大多数时候,只要定义好问题,如何解决问题其
实都已经不是问题了。如果细节扣得太死太牢占用太多大脑内存,导致context
switching cost太高,往往影响吸收学习新事物的效率。
现在回头来说说计算机研究专业选择对码工前景的影响。据我的观察,IT界最混得开的
计算机专业,按编程和动手能力可以排名如下:操作系统,网络/数据库应用,算法,
PL,人工智能/机器学习,计算机视觉,图形学(已死),纯理论(计算复杂度)。因
此,如果你将来很有可能到IT界,在选择研究专业的时候,这可以作为一个参考,而不
是简单地被自己一时的兴趣所迷惑。
最后提醒一下,找工作的同学不要把思维模式限在代码里面。诚然,写好程序是基本功
,是现阶段找工作最重要的一环,但是也只是万里长征的第一步,IT事业后面发展的路
还很长,需要学习的东西还有很多很多。
写这么长,主要是想趁自己还血气方刚,年少轻狂,愿意跟正在找工作的同学BSO一点
想法。 老码工肯定应该不屑与我为伍,所以如果有人觉得有帮助那就最好,没有就当
笑话看看吧。
再次与大家共眠。
http://www.mitbbs.com/article/JobHunting/32137997_3.html
今天再来讨论讨论码工的素质和层次,这也算是一个姐妹篇吧。
看到版上大部分人都在讨论做题,我就剑走偏锋,谈谈除了练好编程这些基本功以外,
一个专业码工需要注意的其他的大方面,算是自己毕业后工作几年的一点经验之谈。
因为自己初出茅庐,体会感想肯定难免有肤浅的地方。这里如果有几十年经验的潜水老
码工, 您老也就奖就看看,俺就在这班门弄斧,贻笑大方了。
以前听过某句老话:本科硕士解决问题,博士发现问题,大牛导师定义问题。说得很贴
切,其实做research如此,工业界也是同样道理。
合格的入门级码工对应于做research 的本硕士,最基本的素质就是分配了任务,能够
自己独立解决。就算是博士毕业的码工,也要经历这一阶段,打好基础很重要。这一阶
段,我个人的体会主要是三点:1。凡是布置的事情不要嫌小,不管多小的事情都要花
心思做好。 这点尤其对于博士毕业的码工,如果你是吃定这碗饭了,还是要早早放下
身段。 俗话说,devils hide in details,考虑周全,滴水不漏,其实是一种很高的
境界。有时候你不一定要都做到,但是要尽量都提前想到。2。遇到问题之后莫急于请
教别人。比如起码Google一下,时间允许的话甚至读读源代码。一开始可能显得你很慢
,效率不高。但是你学得深刻,以后事半功倍。3。做事情不要求快。如果想在同事面
前表现好,留个好印象,求快大多时候是要事与愿违的。留给同事印象最深的,判断一
个人的水平高低的方式,往往是看你个别活的质量或者发表的观点的高度深度。深思熟
虑,慢工出细活,然后才能熟能生巧。
对应于有经验的硕士和博士,那就是成熟有经验的码工。这类码工对于如何解决问题已
经有一套自己的方法了。这时候提升自己的主要途径是发现问题了。这需要对整个产品
线有个比较清晰的理解,同时能够主动发现值得解决的问题,然后开发出新功能新
feature。这期间需要掌握的是熟悉产品开发整个周期的各个步骤,然后决定什么是应
该解决的问题以及如何对解决。一个比较经典的流程大致如下:分析用户日志,归纳用
户行为模式,设计UI mock,? 分析学习用户反馈,书写设计文档,细分任务,优先调配
资源,实现原型系统,必要时还需要跑小规模试验,分析真实用户反馈,质量分析,? A
-B测试,直至最后产品发布等等。总而言之,这些具体任务你不一定要样样身体力行,
全部精通,但是熟悉了解这个基本流程中的每一步,你就掌握了一个产品开发的完整链
条,要推动去做一件新的事情那就成竹在胸了。
当然,真正的大牛是不局限于也厌倦了老产品的维护和诸多细节问题的解决方案的。大
牛更多着眼于定义新的产品,开创新的开发模式等。这需要对工业界该领域的现状(软
硬件)有很深刻的理解。从产品角度,理解为什么这个产品会成功,满足了用户的什么
需求,符合了哪些硬件发展的趋势,具体到为什么某个UI feature work得最好等等。
从开发角度,什么样的编程模式更高效,什么样的infrastructure能满足未来5年的需
求等等。从产品角度,拿Pinterest做一个很好的例子。正常人想不出这么个点子,即
使告诉你这样的点子你也觉得这是个很贫庸的点子,没戏,甚至开发出来让你用你都还
不想用。但是结果呢?人家火得一塌糊涂。碰到这类情况,多问问一些为什么?想想它
为什么火,满足了什么样的需求,为什么人有这样的需求,这个产品的ecosystem是怎
么build 起来的等等。从开发角度,Google已经有很多很好的例子了,大规模的廉价服
务器搭建的数据中心,改用闪存做二级内存的存储模式,以及现在正在试验的Google
Brain项目等等。大处着眼,平时稍稍关注这类问题可以有助于培养自己的判断力和
common sense,为自己创造好等待机会的条件。归根到底,机会属于准备好的人。
现在再说说国人码工的现状吧。中国人做码工,混得好混到高层的极少。主要是两方面
限制,一个是水平,一个是语言。先说水平。你跟人家老美那些顶尖的geek比,你又不
够geeky,人家毕竟是从小完美主义者+偏执狂的自由培养方式发展起来的。所以技术上
做到一定程度就到头了,只能是到一种唯手熟而的阶段。再说语言。绝大部分成功人士
都不是geek,靠的是social学习能力了。国人重理轻文,往往看不起“不踏实”爱夸夸
其谈的人。其实很多时候是我们自己太狭隘了。比起你一个人自己学的东西,人家跟5
个人聊天学到的可能是你一个人自己学到的2^5次方的信息量。为什么很多老外显得知
识渊博但是基本功不扎实就是这个道理。而基本功扎不扎实其实到一定阶段就不那么重
要了。人脑子本来就是个搜索引擎,信息量这么大的现代,只要存储index就行了。遇
到问题,知道去哪里找答案就足够了。大多数时候,只要定义好问题,如何解决问题其
实都已经不是问题了。如果细节扣得太死太牢占用太多大脑内存,导致context
switching cost太高,往往影响吸收学习新事物的效率。
现在回头来说说计算机研究专业选择对码工前景的影响。据我的观察,IT界最混得开的
计算机专业,按编程和动手能力可以排名如下:操作系统,网络/数据库应用,算法,
PL,人工智能/机器学习,计算机视觉,图形学(已死),纯理论(计算复杂度)。因
此,如果你将来很有可能到IT界,在选择研究专业的时候,这可以作为一个参考,而不
是简单地被自己一时的兴趣所迷惑。
最后提醒一下,找工作的同学不要把思维模式限在代码里面。诚然,写好程序是基本功
,是现阶段找工作最重要的一环,但是也只是万里长征的第一步,IT事业后面发展的路
还很长,需要学习的东西还有很多很多。
写这么长,主要是想趁自己还血气方刚,年少轻狂,愿意跟正在找工作的同学BSO一点
想法。 老码工肯定应该不屑与我为伍,所以如果有人觉得有帮助那就最好,没有就当
笑话看看吧。
再次与大家共眠。