1. Erlang User Confernece 2010
这是我第一次参加关于Erlang的技术大会,总来的说收获非常大,不管是技术上的还是非技术上的都是如此。首先不得不说的是会议举行的地点。我从别人那得知之前的会议一直都是在Ericsson的总部大楼举行的,但是因为参会人数越来越多,好像是从去年开始就转移到市中心一个很有历史的电影院ASTORIA举行了。由于这个举办地是电影院的缘故,从去年开始EUC就开始有电影海报了!去年海报是由哈利波特改的,今年的是星球大战。去年那张如下,有意思吧?
海报上面的四个人是Erlang最早的设计者们:Joe Armstrong, Mike Williams, Robert Virding还有当时的团队经理Bjarne Däcker。有了海报没有电影怎么能行?点这里观看Erlang – The Movie。
因为我赶早乘火车去的斯德,所以我到的时候已经快9点了,大会即将开始。在去之前我就很期待能见到Joe Armstrong本人,结果意外的是在签到处我就见到Joe本人了!不知道为什么,他出现在我面前时的形象与我之前想象的一模一样,后来我想明白了,根本原因在于他穿的就是他那件非常眼熟的紫黑线衫!哈哈!Joe爷爷人非常开朗,时不时从他坐的地方传出爽朗的笑声,此为后话。因为会议即将开始所以我就赶紧进去找座位坐下,正好赶上Bjarne Däcker在致开幕辞,这是每年的传统了。仔细看了下我的签到卡,这已经是第16届Erlang大会了!
Klarna无疑是这届大会最吸引眼球的公司。开幕第一个Talk就是关于他们怎么使用Erlang相关的工具来解决他们的CodeManagement,Translation,Testing等问题的。Klarna有两个中国程序员,我见到其中之一的Wang Jia。Klarna是由三位瑞典银行家在05年创立的公司,提供第三方电子支付解决方案。他们最早的开发者就是从当时提供Erlang咨询的公司(其实也是Ericsson前员工)跳出来的。传闻说当时创始人提出业务需求后,他们说这个太简单了,用Erlang几天就开发出来了,虽然最后花了大概一个礼拜,但是可见Erlang开发效率之高。现在他们应该是Erlang程序员最多的公司,而且随着业务的增长他们的开发团队也在快速扩张。一年前他们只有20个左右,现在已经解决60人了,听说还要继续招人。Good for them! 我还见到另一个在Mobile Art做Erlang开发的中国人张浩,他已经用Erlang做开发3年多了。我们聊了很多关于职业发展的问题,非常有收获。
此次大会的slides和talk都可以在这里下载。
2. 关于职业生涯
除技术之外我最大的感触就是看见一群爷爷级的人物仍然热衷于参加这样的技术盛会,让我很有编程编到老的冲动。Joe Armstrong老爷子是1950年生的,早年在英国念物理PhD,后来自己钱花光了,就跑去了爱丁堡做人工智能了。他的导师Donald Michie在二战时跟图灵一起工作过,所以收藏有图灵所有的论文。Joe就在满是图灵的论文的办公室里工作了整整一年多,难怪如此之牛。做研究讲究家谱,大师之所以成为大师还是需要一些机缘在里面的(当然,独力开创一片新天地的神牛除外)。关于Joe的更多趣闻可以看《Coders at Works》,中文版应该快出版了,但是如果有条件的话还是推荐大家读英文版,边学大师的经验边学英语,一举两得,岂不快哉?如果大家好奇Joe是怎么修炼到大师级的,他自己一句话很有代表性:“So I would characterize that period, which took 20 years, as learning how to program”。这句话的上下文我就不详述了,简单地说你可以理解成他花了20年学会了如何编程(注意,这个“如何编程”可不是指精通C++之类的)。这说明要想成为大师,没有十几二十年的功力肯定是不行的。十年学会编程不是空谈,而是实实在在的。说到程序员的基本功,我必须要站出来批评一下《Coders at Works》此书在豆瓣的一个不负责任的书评,这位同学说“去他的算法内功基础,对于程序员实用主义才是王道”,这完全是误人子弟,而且可悲的是这个观点竟然有很多人支持。表面上这句话好像抓住了“实用主义”的大旗,但是这位同学却借此抨击算法基本功的重要性,实在是荒谬。(Update:该同学已经把标题改掉了)就拿Google Fellow Jeff Dean来说,他绝对算得上是实用主义的大师了吧?可是如果你去看看他关于Google整个系统架构演变过程的讲座,你就会发现把Google的那些诸如MapReduce、GFS之类的看家法宝化繁为简之后都可以还原成最基本的算法、数据结构之类的问题。Google整个架构的发展是根据需求的变化而发展而来的,MapReduce之类的不就是在遇到需要解决大规模并行编程这个问题时产生的实用的解决方案吗?可是,如果没有扎实的基本功它能被设计出来么?哪一个大师不是编程十几二十年以上?他们的基本功可能差么?想真正成为杰出的程序员,没有扎实的基本功是绝对不可能的,因为你会发现当你需要面对一个没有现成的解决方案的问题时,你的基本功就是最可信赖的法宝。
我在国内念书时确实也不知道天有多高,国内IT界有多浮躁,到了瑞典之后我有机会在Nema Labs(创业公司),Ericsson(大公司)实习,跟我的导师Per Stenström学习,与John Hughes这样的大师交流,眼界真的开阔了很多。浮躁在中国是很普遍的社会性现象,就拿程序员职业生涯发展来说,中国现在很难找到有十几二十年经验的超级程序员,为什么?因为他们都转到管理方向去了,当CEO,CTO去了。我觉得这是由中国“官本位”的社会思想导致的。大家都觉得管人的比被管的等级高,要拿更高的工资,这实在是大错特错。实际上在外国公司里终身从事技术工作的超级工程师大有人在,而且这些超级工程师的工资往往比他们的Manager高得多。在瑞典,做基站的超级工程师时薪4K多克朗的都有(克朗跟人民币几乎等值,绝对真实),50W年薪的比比皆是,这样的待遇还会让你觉得当一辈子工程师没前(钱)途吗?我觉得走管理路线本身没有错,前提是你确实喜欢管理,善于交流,适合你的性格,而不是为了职业发展“被迫”往管理方向转。在现代企业中,管理者与被管理者本身没有高低贵贱之分,只是职能不同罢了。最顶级的程序员不仅受人尊重,更可以拿高薪。可惜国内社会风气普遍浮躁,这样的状况想要改变还需要很长时间。从供需的角度来讲,超级程序员的身价是由市场需求决定的。就拿华为来说,我上次跟他们在瑞典这边的一位技术负责人聊天时了解到他们在Kista最喜欢有十几年以上经验的超级工程师,因为这样的人才国内根本招不到。为什么他们需要招这样的人?因为华为的竞争对手也是世界级的企业(例如Ericsson),这个时候科技创新就是企业最重要的核心竞争力,自然就需要最顶级的工程师才能在竞争中胜出。我们看到的Google花250W美金挽留一位女工程师的例子(未经证实,可能是Facebook负责招聘的人炒作)不也刚刚发生么?国内不也出现了年薪200W的工程师牛新庄么?我觉得随着中国IT行业的发展,科技创新将会变得越来越重要,而超级程序员也会越来越成为香饽饽,如果各位同学确实热爱编程,愿意一辈子编程,我希望你坚持下去,因为只要你成为超级程序员肯定会有赏识你的公司。现在的盛大创新院好像做的不错,他们给高级研究员年薪能有30W+,可以算是一个招聘高端人才的例子。而一个反例就是不依靠科技创新的公司(例如团购网站),它们确实是不怎么需要高端人才的,这样的公司不怎么靠技术取胜。
当然,技术不是最重要的,哪怕对Google,对Facebook也是一样。再高端的技术也必须找到市场,满足消费者的需求才能创造财富。我现在相信的是市场>管理>技术。是走管理路线还是走技术路线最好是按照你自己的性格特点来,喜欢干哪个就做哪个,而不是跟风去做管理。只要你努力,做什么都会有回报。
3. 关于英语
关于程序员个人发展,我不得不提及英语能力。我个人感觉,英语是阻碍中国程序员提升眼界的一道非常重要的关卡。关于英语于程序员之重要性,Joe在此书里面说了一句“If you are not good at English you’ll never be a very good programmer.”在欧美IT企业引领科技潮流的今天我们不去学习他们的技术怎么可能追上甚至超越他们?我建议所有有追求的程序员一定要把英语当做最基本的一门编程语言来学习!我自己的亲身经历是:英语帮我打开了另一个更广阔的世界的大门,从此直接阅读原版书酣畅淋漓的学习新知识,从此随意阅读最新的论文了解新动态,从此直接与最厉害的程序员毫无障碍的交流!
4. 创新+创业
我在最近一次Ericsson Research Day上有幸与John Hughes在Demo Session成为邻居,所以才出现了我在推上征求推友关于Erlang问题的一幕。John是从Basic开始学习编程的,在牛津念博士时就做的就是函数式编程的研究,他也是Haskell的创始人之一,95年他来到Chalmers任教至今。他学术上最有影响力的论文之一“QuickCheck: A lightweight Tool for Random Testing of Haskell Programs”成为了他后来创办的Quviq的技术核心。这个公司目前只有四名员工,当然四个人各个都是教授(我知道另一个专做编译器前端的传奇公司EDG也只有5个人)。John为人非常亲切,我跟他聊的非常开心。他追求的编程之美(好吧,我本也不想再用XX之美,但是实在没更合适的词了)是make programming easier — I like my programs to be short, beautiful, and elegant, and I hate drudgery。我还问他你编程是不是有快40年了?他老人家(其实他跟Joe都是精气神特好,非常年轻的那种)想了半天说还真有四十年了。我最羡慕他一点是,他跟我导师Per Stenström一样横跨学术界与工业界,创新与创业双管齐下,互利互惠,既是学识渊博的教授,又是能给社会创造价值的企业家,人生如此,夫复何求?我跟他说真羡慕你真能享受双倍乐趣啊,他说是啊,真是太有趣了!其实中国教授也有在工业界与学术界都取得成功的例子,例如普林斯顿的Li Kai教授和UCSD的Zhou Yuanyuan教授,所以说主要还是环境问题导致的。我个人是龙芯的坚决拥护者,很多人说怎么用MIPS的授权,怎么浪费国家的钱什么什么的,我觉得这些都是扯淡。从我知道的情况来看,龙芯他们组最近把Micro, HPCA, ISCA, ISSCC这些最顶级的会议全发了一个遍,学术水平毫无疑问!胡伟武老师用毛泽东思想来带领团队是有效的(不管是否有失偏薄),而且也有Chen Yunji这样的青年才俊,我相信至少龙芯团队培养出来的这批人才已经足以对社会做出贡献。现在龙芯商业化还处在初期阶段,任重而道远,我祝福他们,看好他们!
中国的发展需要创新!需要最高端的科技人才!需要最顶尖的程序员!
LZ说的没错,在中国这个“官本位”极强的社会里,做个20多年的程序员是没有人愿意的。一面是养活整个家,一面是一直想当个程序员,两难啊。
中国的发展速度这么快,情况肯定会越来越好。肯定会有越来越多的公司会喜欢有20年工作经验的程序员。例如Kenny Yuan在Oracle就是Principal Engineer。所以走技术路线肯定有饭吃,只要努力就好。
这篇文章我仔细看了好几遍了,对于我非常有用,我身边的每位同事都是“实用”为王,什么都不重要,一度也动摇了我的信念~~~
感谢您的文章~~~同时也非常的惭愧,自己浪费了这么多时间~~~
大部分的程序员都只需要通过调用类似STL等库里面的算法做实现,这是社会分工决定的(二八理论)。如果你对技术有追求,自然需要好好打好基本功,这样才能成为能解决疑难问题,新问题的顶尖程序员。
对于英语学习,自己也感觉很重要,也花了时间去有意的做英语的补习工作:平时尽量读英文的文章,参加了英语的邮件列表讨论。但是感觉还有没有啥明显起色,尤其是日常交流用语,感觉查的比较多,在这个问题上,请问博主有什么切身的体会么,谢谢!
国内最缺少的就是英语环境。我学习英语的过程就两个字:多用。你现在看英语文章,看英文技术列表都是非常有用的,只需要注意两个字:坚持。学英语跟学编程语言没太大区别,坚持用,坚持学,自然而然就越来越好了。但是因为你这样的量不太够,可能需要一到两年。如果想更快点提高,可以只阅读影印版的技术书来加量,然后多听网上英文的讲座,开放课程什么的。刘未鹏一篇文章名为“如何不花任何时间学习一门语言”的文章很有参考价值,适合中国的程序员学习英语用。
正常的group的所有论文其实是只瞄准这些会议的,HPCA都属于不是很好的。 ASPLOS,ISCA,SOSP,OSDI,PLDI。 大家其实也只看这些会议的论文。龙芯不错,但不要用发到这些会议论文作为研究能力好的证明。发这些会议是应该的。
你在ANU啊,当时我还拿到录取了:)
你们组做的项目都是几个人合作的那种么?
我加你GTalk了 有空多交流
龙芯学术水平从无到有完成的只是第一步 现在他们的重点应该转到商业化上来了
博主写的非常好,谢谢分享。把合适的人才放在合适的位置上很重要,像中国一些公司这样把很多成长起来的技术高手拿去做管理造成了巨大的浪费:1,少了一个技术高手;2,多了一个差生管理者。不过我相信现在一些不错的公司都意识到了这点,并给程序员留了几条发展的路线。在中国大环境下,经理/部长这个称号的确比高级工程师/程序员要好听,尽管他们的收入可能是一样的。
英语的重要性不容置疑,简单一点说就是不懂英语不看英文不可能成为像样的程序员,就技术方面来说国内的书籍、paper、网站、文档、资料的价值是0,基本可以不看。
我的观点主要是呼吁那些真心想一直搞技术的同学们相信走技术路线是可行的。国内大部分资质不错的技术骨干干了三五年慢慢的就开始转向管理方向,直接导致十几年经验的工程师很少。如果做管理是这位技术人员本身比较喜欢的,那走这样的技术转管理的路线自然无可厚非。最怕的就是为了职业发展”被迫”转向管理,哪怕这个人本身只适合做技术而不适合做管理。这个根本原因我想应该是因为国内大部分的公司都没有提供完善的初级程序员->高级程序员->专家级程序员->首席专家这样的技术型发展路线。另一个社会深层次的原因跟中国传统的”官本位”思想肯定有一定关系。
我的愿景是,随着中国IT界的发展,越来越多的公司会注意到高级技术型人才的重要性(因为需要靠科技创新产生核心竞争力),华为所在的电信行业是一个烧钱的行业,一台测试仪器就要几百万欧,现在电信市场已经没几个玩家了,剩下的几个电信巨头都要靠雇佣顶级人才才能干活。所以我预测,将来的IT市场也是一样,当中国的IT企业需要全球竞争力的时候,他们对高级技术人才的需求也会越来越多,而不是像现在一样担心自己是不是明天就被老板新招的几个刚毕业大学生给顶替了。
做管理的也是一样,最顶级的管理人才照样是稀缺的,所以他们拿高工资跟超级程序员拿高工资是一个道理。人才的分布呈现的是金字塔型,如果按28理论来划分, 大部分程序员都不需要创新,只需要调用STL算法库,不需要自己实现/调优高级算法,这没错,社会分工从来都是这样。但是对那些对技术有追求的同学来讲,你的技术达到大牛级时你就可以产生新的工程实践,新的框架,新的架构,解决新的需求,这就是一种创新,这样的人才是有需求的,有市场的,有相应的回报的。所以对那些还在犹豫是否继续坚持搞技术的同学来说,如果你真的喜欢搞,而且只想搞技术,我绝对鼓励你坚持搞,搞的越深越好,因为肯定会有公司招你(当然,别去钻研那些没有市场的屠龙之技)。对那些想转管理的同学来说,如果他们勤奋努力,既有技术背景又能很好的管理团队,他们肯定也对公司是非常有用的人才,各司其职,分工明确,社会和谐。
写的真是太好了。我要收藏一下。做一辈子技术也是幸福的呀
谢谢!Follow your heart 🙂
哈哈,谢谢你对我们公司的夸奖
仔细看完,写的真好啊
哈哈 下次回北京一起聚聚:)
这是在中国,老拿外国说事,你可以一直在外国混,外国的空气交通都好。这是每个海龟的想法,要想在国内混,你周围都是这样的人,很难实现你的理想的
是的,你说得对,人必须面对现实。但是不管是在中国还是外国,没有理想的话社会不可能进步。
觉得可以的话还是算法这类的基础东西靠谱,虽说现在是大一但是感到很无奈,环境因素的不利应该只是个借口,暂且以为。VPsee的那楼您的回复很好,到什么时候社会分工中,高端的人才总是有需求的。话说高中时候看到《程序员》上面的Inter线程挑战赛,感到lnter都发力的领域应该是非常棒的吧。按照目前来说并行计算真的是主流。看博主的博文真的有点吃力,还好,逻辑很强的文章除许多陌生的名称外还是不算完全不懂。祝愿博主技术路上面走得更长。加油!
这篇文章写的真好,的确,环境糟不是借口,不能跟着一起浮躁了。又发现一个很好的技术博客,订阅了,保持关注。
thx..
谢谢冠诚的文章,从豆瓣过来看到你的文章,非常好,
给我们这些真心喜欢技术的Coders很大的鼓励。
为了做好技术,安静自己,沉淀自己,打好基础,学习,思考,成长,做好编程几十年的准备。
对我来说,我很看好国内这几年的环境,会越来越好的。
加油。
加油!