大师都有扎实的基本功
我要站出来批评一下那个名为“去他的算法内功基础,对于程序员,实用主义才是王道” 的评论(我的评论对事不对人)。
首先我要说,这个观点绝对是错误的。表面上这句话好像抓住了“实用主义”的大旗,但却借此抨击算法等基本功的重要性,太误人子弟。就拿Google Fellow Jeff Dean来说,他绝对算得上是实用主义的大师了吧?可是如果你去看看他关于Google整个系统架构演变过程的讲座,你就会发现把Google的那些诸如MapReduce、GFS之类的看家法宝化繁为简之后都可以还原成最基本的算法、数据结构之类的问题!Google整个架构的发展也是根据需求的变化而产生的,MapReduce之类的不就是在遇到需要解决大规模并行编程这个问题时产生的实用的解决方案吗?没有扎实的基本功它能被设计出来么?哪一个大师没有扎实的基本功?哪怕是你说的Jamie Zawinski,如果他算法基本功没有十分纯熟他能被称为大师么?别以为他标榜实用他就没有扎实的基本功了。
我的观点是,想真正成为杰出的程序员,没有扎实的基本功是绝对不可能的,因为你会发现当你需要解决一个没有现成答案的问题时,你的基本功就是最可信赖的武器。所以,如果你不想只做一个码农,好好学好算法打好基本功是绝对值得的!当然,如果你只像做一个只能靠google搜索答案过活的程序员,就当我这话没说。
这本书最大的益处就是帮助广大程序员了解大师是怎么成长过来的,学习他们的宝贵经验。我觉得对于程序员来说,大师的成长经历都隐含了一个基本规律:他们都是编程至少十几二十年以上才最终成为大师的,“十年学会编程”并不是什么天方夜谭,而是确确实实的事情!同理,任何人如果想要成为大师(或者至少是杰出的程序员),那么他首先要做的就是打好基本功:08年图灵奖得主Barbara Liskov博士在回答“什么素质是研究者必不可少的素质是”她毫不犹豫的说是扎实的基本功最重要。对于学生来说,基本技能和解决问题的能力很重要,非常重要!这个道理对程序员来说是一样的!
成功的方式有很多种,事实上很多商业上的成功案例中技术仅仅是其中最不重要的一环,在中国这个讲究关系的环境中更是如此。我认同市场>管理>技术。我建议大家根据自己的特点来选择合适的职业发展路线。
随着中国IT行业的发展,科技创新将会变得越来越重要,而超级程序员也会越来越成为香饽饽,如果各位同学确实热爱编程,愿意一辈子编程,我希望你坚持下去,因为只要你成为超级程序员肯定会有赏识你的公司。以IBM中国为例,技术路线的最高级别IBM Fellow,年薪是以百万人民币计算的(当然很多人抱怨Band10以下的收入);很多成功的技术型小公司也都靠被大公司收购的方式实现了自我价值;而一个反例就是不依靠科技创新的公司(例如团购网站),它们确实是不怎么需要高端技术人才,这样的公司不是靠技术取胜。
感兴趣的朋友可以看看我这篇文章:Erlang User Conference 2010见闻(兼谈程序员职业生涯) http://www.parallellabs.com/?p=867
首先我要说,这个观点绝对是错误的。表面上这句话好像抓住了“实用主义”的大旗,但却借此抨击算法等基本功的重要性,太误人子弟。就拿Google Fellow Jeff Dean来说,他绝对算得上是实用主义的大师了吧?可是如果你去看看他关于Google整个系统架构演变过程的讲座,你就会发现把Google的那些诸如MapReduce、GFS之类的看家法宝化繁为简之后都可以还原成最基本的算法、数据结构之类的问题!Google整个架构的发展也是根据需求的变化而产生的,MapReduce之类的不就是在遇到需要解决大规模并行编程这个问题时产生的实用的解决方案吗?没有扎实的基本功它能被设计出来么?哪一个大师没有扎实的基本功?哪怕是你说的Jamie Zawinski,如果他算法基本功没有十分纯熟他能被称为大师么?别以为他标榜实用他就没有扎实的基本功了。
我的观点是,想真正成为杰出的程序员,没有扎实的基本功是绝对不可能的,因为你会发现当你需要解决一个没有现成答案的问题时,你的基本功就是最可信赖的武器。所以,如果你不想只做一个码农,好好学好算法打好基本功是绝对值得的!当然,如果你只像做一个只能靠google搜索答案过活的程序员,就当我这话没说。
这本书最大的益处就是帮助广大程序员了解大师是怎么成长过来的,学习他们的宝贵经验。我觉得对于程序员来说,大师的成长经历都隐含了一个基本规律:他们都是编程至少十几二十年以上才最终成为大师的,“十年学会编程”并不是什么天方夜谭,而是确确实实的事情!同理,任何人如果想要成为大师(或者至少是杰出的程序员),那么他首先要做的就是打好基本功:08年图灵奖得主Barbara Liskov博士在回答“什么素质是研究者必不可少的素质是”她毫不犹豫的说是扎实的基本功最重要。对于学生来说,基本技能和解决问题的能力很重要,非常重要!这个道理对程序员来说是一样的!
成功的方式有很多种,事实上很多商业上的成功案例中技术仅仅是其中最不重要的一环,在中国这个讲究关系的环境中更是如此。我认同市场>管理>技术。我建议大家根据自己的特点来选择合适的职业发展路线。
随着中国IT行业的发展,科技创新将会变得越来越重要,而超级程序员也会越来越成为香饽饽,如果各位同学确实热爱编程,愿意一辈子编程,我希望你坚持下去,因为只要你成为超级程序员肯定会有赏识你的公司。以IBM中国为例,技术路线的最高级别IBM Fellow,年薪是以百万人民币计算的(当然很多人抱怨Band10以下的收入);很多成功的技术型小公司也都靠被大公司收购的方式实现了自我价值;而一个反例就是不依靠科技创新的公司(例如团购网站),它们确实是不怎么需要高端技术人才,这样的公司不是靠技术取胜。
感兴趣的朋友可以看看我这篇文章:Erlang User Conference 2010见闻(兼谈程序员职业生涯) http://www.parallellabs.com/?p=867
有关键情节透露