中国开发网: 论坛: 程序员情感CBD: 贴子 419952
haitao
朱仲傑:和Google 技术大师亲身相处的四天
朱仲傑:和Google 技术大师亲身相处的四天
2006.10.14  标签: neal josh bloch google 程序



这次Java 2006研讨会请来两位来自Google总部的Java大师Josh Bloch与Neal Gafter 来台湾参加,我和我找来帮我壮胆(从新加坡过来的,英文很好)的同事都获益良多。在联络感情、练英文、以及陪他们在台北吃喝玩乐四天之中,我们聊了不少关?于技术方面的话题。不过我们聊的内容不是在于技术本身怎么去使用,而是聊一些我们对于这些技术的看法,从他们的见解中,有些跟我心中的想法是一致的,只是?现在有大师背书,更加确认我的想法。这算是英雄所见略同吗??



其中,我们聊到AOP(Aspect Oriented Programming)。AOP这个概念打从它出生,就有许多人关注和推广。不可否认的,它确实对于面向对象程序设计(以下简称OOP)带来了许多好处?和影响,可是在实际的程序/系统开发上,使用的人并不多。其实这样情况是很自然的,OOP的概念也不是从Java之后才有,早在1970年代的 Smalltalk就是一套面向对象的程序语言,只是OOP演化了这么久,借着Java才大红大紫。何故?Java是个好的程序语言,但它并没有让OOP 变得多简单,主要是人们心态和逻辑上的「进化」,当传统的结构化程序设计(Structured Programming)无法满足对逻辑的需求时,OOP刚好弥补了SP的不足。虽然OOP的学习曲线颇高,但整个环境大势已让大家渐渐地朝这个方向走?了。



Josh和Neal也一致的认为,AOP是不错,但要发光发热还需要时间。目前底层的程序设计师,对于OOP都还不能全然的掌握,要他们再去学个AOP,写出来的程序只会更烂,不会更好。



我们还聊到另一个更新的概念 – DBC (Design By Contract)。事实上原本Java就有DBC里的interface概念,所以不靠外力的话,Java也可以利用现有的语法来达到DBC的实作。不?过就像之前Java语言本身没有泛型(Generic)之前,有许多外挂的套件或其它变通的方式来让Java达成泛型的功能,而iContract就是 DBC for Java的一种实作,有兴趣的读者可以上网搜寻,数据还不少,只是理论方面居多。DBC在学术里是很受欢迎的,但要走出这个象牙塔,一样得等待人们进化才?行。



我们这四天也不是全都在聊这种严肃的话题。我也基于个人的好奇,而问了他们一些有关程序开发人员最在乎的生涯规划的问题。



Don't Copy & Paste


很多初学者问我是怎么学习Java(或是程序设计)的?该怎么走才能到达我今?天这样的程度(成就?好像没什么特别的成就)?遇到这两位大师,当然未能免俗的也问了他们类似的问题。网络上最常出现的问题就是:我已经考上SCJP或我?已经会Java基本的语法了,接下来我该怎么走?



当然我不是问这么白烂的问题(其实也没有好到哪去),我问他们该如何提升自己的实力?

「Don't Copy & Paste」,?两位大师语气很重地说了这句话。他们说你在Copy & Paste的过程中,因为你不了解你copy的东西,它往往90%都是不必要的,而且以他们的经验来说,几乎都会出错!有重复性或可reuse的功能,就?把它们设计成library或framework。就算你非copy不可,也要确切知道每一行程序代码在干什么,这样将来出错时,才知道怎么找出bug来修?改。相信很多senior再带junior时,一定都遇到只会copy,而不懂到底copy了什么的junior;而最后当然是由senior边收边念地?收烂摊子。



此外,至于如何更上一层楼,两人的回答很一致:「Join Open Source Community」。 Join的方式从单纯的review code,到真正的贡献你所写的code都算,要join到什么程序,就看个人的功力啰。就像学习书法或画画,刚开始也都是临摹别人/前人的作品,有了基?础之后,进而发展出自己的风格。学习程序设计也适用这样的方式,review code就是这个用意!人家的code不一定写的好,初学时你可能无法看出不好的地方,或是还没有能力修改地更好。



Joshua Bloch: Google首席Java架構師(Chief Java Architect)
Neal Gafter:Google專任工程師兼Java講師

兩人在到Google之前都是Sun的資深工程師,對於Java核心及Class Library的開發與設計著有貢獻,合著《Java Puzzlers》一書。 Bloch並著有暢銷書籍《Effictive Java》。


Community除了code之外,另一个很重要的是mail list或是forum。经由大家脑力激荡,你可以在整个讨论的过程序学到很多。除了写程序功力上的帮助之外,你还可以学会team work、process、version control,而且志同道合的学习伙伴会让你在学习的过程中更愉快、更有信心。不过大家要join这些open source community第一个要克服的问题,可能是英文,读好还,因为你可以边读边查字典;写的话就只能多练习啰。



两位大师的程序设计生涯已经超过25年,是什么让他们能这样一路坚持下去?他们的回答是:「Passion」,依自己的兴趣做自己想做的事,这样才会持?久。但要怎样才能让这股热情一直持续呢?这就要看你所做的事情,是否能让你获得正面的回馈,Josh说,他觉得他能够写一本好书,让大家从这本书中得到很?多的帮助,他认为这样的成功对他的意义很大,进而更有动力继续写出更好的书。



四天的交谈中,我认为最有趣的是问他们如何从软件中赚钱?他们的回答也很妙。他们说,如果他们知道的话,现在早就是大富翁了。现在全世界能只靠纯软件赚钱的,应该只有微软吧?!其它像是Sun、IBM、HP早就转型做service,之前做IDE的大厂Borland,也早放弃了这块市场,虽然它曾经是个龙头。



除了做软件愈来愈难赚钱外,现在最难赚钱的是硬件,比尔盖兹好像在十年前的不知道什么场合说过,硬件将会是免费的。他的预言好像快要实现了,现在在光华商场,不用一万元就可以买到还不错的PC,最后真正的决战会是在软件上面。



而Google现在又正在打破软件的观念,Web Application愈做愈完整,功能也渐渐的取代了传统桌面软件。软件不太可能变成全部免费,但买套软件回来安装的行为,也许在不久的将来就会渐渐的?消失。我可以长期租用某项软件服务,或是临时租用某项软件功能,这样一来可以更落实使用者付费的观念,而使用者也不用常常追着新版的软件跑。



Google 20


关于Google的种种问题,之前大家早就问烂了,杂志也报导了很多。我问Josh说,「你们平常的工作?量就不小了,还要写书、演讲等等,你们真的有周末吗?大家都知道Google里很多东西都不缺,尤其是吃的,」但Josh说,礼拜五Google一定不供?应晚餐,目的就是要你回家陪家人吃吃饭,至于工作的事,就吃完饭再说吧。另外Google也不准员工夜宿辨公室,所以Google辨公室里什么都有,就是没有睡觉的地方,你可以写Code到天亮,但就是不能睡,要睡觉请回家。



大家都知道有名的Google 20,是指80%的时间你得做正事,另外20%的时间你可以自由发挥,?这是这家软件巨人对员工分配工作时间的管理原则。Josh说他就把20%的时间拿来写书、演讲,像这次来台湾就是用这20%的时间。而Google Calendar是Neal的宝宝,当初是他用20%所研发出来的,但现在变成他的80%。怎么利用时间,是每个Google人必需学会的课题。



这四天带着他们在台北东吃西吃,Josh开玩笑说,回去应该会胖个两磅,这又令我想起网络上流传的另类Google 20,?内容说Google的办公室里,在20公尺的范围一定会有吃的跟喝的,因为吃的、喝得都不缺,所以每位Google的员工都会胖个20磅。Neal笑说这?不是真的,他说Google的餐厅有各式各样的美食,在Google里待了这段时间,早就学会了控制饮食。因此,

虽然台北之行吃了许多好料的,但可影响不?了他的体重(果然是大师级的意志力!)。



Josh给我的感觉像个顽皮的大孩子,相对的Neal就严谨许多。但他们的共同特点是,当要办正事或是谈论到比较技术话题时,他们都会用很认真的态度来回?答你。我们不就是要学习他们两位这样的态度吗?工作时认真工作,休息时尽情玩乐。Think big, Think different and do your best!




作者:Jacky Chu

中正大學資訊工程研究所博士班肄業。專精Java技術開發,曾出任台灣Java 專業技術研討會六屆講師及JavaOne Tokyo 2005講師。知名Java工具書作家,已發表著作包括Palm應用程式設計、Java2全方位學習系列及譯有Java Puzzlers等暢銷書籍。
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录