注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

50年前的波拉岛

 
 
 

日志

 
 

技术路线的核心竞争力  

2012-07-30 01:00:49|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
起了一个不好听的标题。

工作一年多了呗,也已经开始带新人了。听到那些比我年纪大的人叫我导师,我经常忍不住翻白眼。
我想写一些见解,写一些如果我上大学的时候看到会受益的东西。

首先澄清一点,千万不要听信有些过来人所谓【学算法在工作中基本用不上,但学它可以锻炼你的思维】这种褒贬参半的话。确实有些技术人员不太懂算法,但也伴随着产品的成功发了家 —— 还有人不懂算法能中六合彩呢。真正从技术角度来看,在现今【big data】时代,越核心、越高档的职位,对算法的要求就会越高。这就是为什么大公司校招最喜欢考算法,大公司喜欢自己培养人(而不是招打杂的),管理方向另说,技术方向的话,算法不过硬不可能走得远。

为什么算法重要?
我认为技能分为两类,一类是可现学现卖的,一类是需要系统学习的。后者更值钱,算法正是属于后者。举个例子,有人突然给你一份java或者perl代码,让你加个啥功能,即使你没接触过这些语言,对于聪明的程序员来说google一下语法两下子就解决了;但如果有人给你一份代码跟你说这个推荐引擎的效果好像不太好,而且性能有些差……

对于需要系统学习的东西,假如它是你的短板,就极其容易让你在解决问题的过程中走错方向。哪怕你把问题拆分得很好,逐一请教google或者大牛,也不见得可以得到合理的方案,毕竟问题一般都具有特殊性,只有你自己才能把握全局信息。比如之前有个同事问我一个很复杂的匹配问题,想得我天昏地暗血肉模糊,但后来我了解了他的完整需求之后,发现他归约到匹配问题本身就丢失了一些有用信息,换个方式直接就解决了。

那除了算法,需要系统学习的东西还有什么?我认为是组成原理和设计模式。

组成原理是算法的强力后援。
程序的性能可以看作是算法理论复杂度乘以硬件性能,不要以为后者只是一个常数的问题。把寄存器、内存、硬盘的调度玩好,你的程序甚至会跑出让普通算法滚蛋的performance。另外我们知道,【big data】时代伴随着高机器损耗率,不懂组成原理是没办法让服务稳定的。组成原理这块我在大学荒废了,工作后一直在补。

设计模式。
不懂设计模式,就只能老老实实去写面向过程的代码,否则你看似规整的class会成为毁灭性的垃圾。但是你能只玩面向过程吗?不能,因为很多开源的艺术品都是面向对象的。
但对于没毕业的人来说学设计模式是很矛盾的事情,因为没经过大量的工程实践,很难理解那23种模式的意义何在。
这个矛盾的唯一解决途径还是多动手。你做到了别人没做到,这块会产生巨大优势。

资历有限,不继续深入。
就目前来看,这3点炼成后足以扳倒一大片。
  评论这张
 
阅读(2323)| 评论(10)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017