顶级程序员的思维方式评《代码之美》第五条牛逼
扫描二维码
随时随地手机看文章
公司里曾在北美作为产品研发经理的资深人物某日和我闲聊,说到中美程序员的差别,北美的程序员,尤其是发明那些根本性东西比如JAVA, 比如Message机制,用得都是非常简单的办法,一方面,英语作为母语,与程序设计语言更加靠近,比中国的象形文字来的近,另一方面,这些北美的程序员似乎都深谙大道至简的道理,代码都写得很简单,当然问题的思维方式更为系统。相对的来说,国内的技术人员总是习惯把问题复杂化,不仅理解问题复杂化,解法也复杂,有时正是因为没有理解核心代码的设计,反而使得解法更加背道而驰。 《代码之美》这本书,刚好给了一些关于北美(但不限于)的顶级程序员的例子,与其说它是讲代码之美,到不如说是讲他们的思维方式,我们甚至可以窥见他们的价值观,个人的体会是,这本书里面的顶级程序员们体现了以一系列思维习惯值得国内同行参考:
第一:非常认真全面的研究问题/客户需求,比如在为霍金开发只用一个按钮的交互软件时,他们很快意识到按钮不止表达01,按扭的时长可以成为一种模拟输入,从而为长按和短按分别设计更细化的选项,由此简化了后面的设计。
第二:总是希望用一个个案抽象一种模型,并用于更大的范围,前面的程序可以服务给盲人,Google著名的MapReduce算法开始用于统计百万亿网页上的词频率,后来用于所有分布式环境
第三:永远寻求简单的方式来解决问题,不过有个技巧,就是可以把复杂的难题恰当的分割。MapReduce算法体现了一种简约之美,如同我们常讲的中间件,屏蔽一切分布式,普通的程序员都可以依靠MapReduce和GFS来写用于上千台机器的分布式应用。 在另一章开源ERP5的项目中,复杂的ERP项目的一级类仅有五个,Resouce, Node, Path, Movement, Item, 这些概念加上Order和Delivery的业务基本项构成了基础业务模型,这个设计思维有点像说宇宙是四大元素组成的。 另一个不错的案例来自Linux内核小组关于驱动的研究。 这个模型的抽象能力的缺乏,估计是中国工程师的软肋,也是思维复杂化的原因。硅谷软件人才IC(India/China)比比皆是,但能够定义软件行业的,还都是白人。或许,这个删繁入简的抽象能力,早在中国人学语文的时候被虚情假意的形容词淹没了。
第四:对于技术难题的灵感需要等待,从这本书看起来,软件天才是不存在的,几位顶级程序员都遇到一筹莫展的问题,有些几个月也没有解法,有的是某次喝咖啡的灵光一闪,或者干脆关键的程序都是在喜马拉雅山下的山村写的。
第五:他们都怀有程序改变世界的信心,在关于安全通讯的一章结尾,作者深信他们对于世界的民主化在做贡献,在他们看来:人类文明的代码,越来越需要程序员对其进行重新编程,然后重新接入社会这个操作系统中。比如,基因序列分析,商业软件,计算机建模,更不要说互联网上的多次革命,Email, Blog, SNS, VoIP。
这下理解为什么Google敢于对抗各国政府。
PS:但是对抗不了中国政府啊。