从这周开始,我被彻底调离原可以吃喝玩乐看窗外风景温馨的小窝,发配到大教室做培训一周。那里每两个人虎视眈眈看一个电脑,还要认真学习老师讲课内容,做练习。最发愁的事情是要打乱我目前晃悠上班晚来晚走的作息时间,要提早起床一个小时。
今天是培训第一天,我尽最大努力做到了没有迟到。结果到了之后,后排的好位置电脑已经被早起的鸟儿占用了。我四下观望半天,每走到一个位置,就有人提醒我,“那个位置已经被人占了。”果然,我看见一些笔记本占着位子,就好像大学自习室占位置一模一样。我很有把他们的笔记本扔到一边的冲动,想了想还是忍了。终于,在走过N个我认为的好位置之后,只能坐在头一排,和老师脸对脸了。这意味着我想利用培训时间做些私活的计划,彻底破产了。
培训照例一来就大家自己介绍自己,说明自己到底想通过这个培训达到一些什么目标。教我们的老师J眉清目秀的,看着还算顺眼。另一位是他们的VP,也是负责回答问题,控制进度,查看学生做练习的。我们一个班,大概10多个学生,都是从不同组凑过来的。大家都纷纷介绍了自己项目,很自豪。我发现来的程序员分成了两个阵营。红方就是我方,属于JAVA阵营,蓝方是微软那套.NET阵营。双方互相看不起对方,也有悄悄向对方转型的,打算脚踏两只船,以后见风使舵。
培训是关于一些自动检测的方针,自动检测的工具等等。上面想让我们把这部分做好,加强我们写的软件质量。很久没有做培训,发现目前IT行业还是与时俱进的有些新名词。比如,今天学的就是TDD,全称为Test Drive Development,当然还有BDD。这个老师喜欢捉对写程序的方式。我也喜欢,因为可以一边聊天一边写程序,还可以显摆一下自己聪明的地方。而且,主要是承担责任的人,一下就多了一倍。不过,最好还是能和聪明人配对,要不还是自己累。
我们练习了一种叫乒乓球模式的写程序方法。这个真是好玩啊,不过效率其低。比如,我们练习写一个做阶乘的程序。要一个人先把测试程序写好,另一个人写真正的程序,但是只要写到刚刚能够让这个测试程序通过就可以了。然后这个写程序的再写一个测试程序,让测试程序失败。然后让头一个人在去修改原程序,然后再写一个测试程序,也让测试程序失败。就好像打乒乓球一样,你推我挡。直到最后一个人,实在懒不下去了,写好真正的程序。这样测试程序已经在这个过程中全面建立,而且双方都用了脑子,想到了很多种可能的情况。
和我配对的是以前我们一起做过一个特复杂问题的另一个组的.NET程序员。我们一听这个比试聪明的办法,就叫上劲儿了。这个和大家玩过那种搭积木,每次抽出一个方块,看谁把这个积木最后弄倒谁输的游戏一样,就看谁写不出很多很多if else,必须写真正的代码了。我和这个.NET的程序员推挡了至少7个回合,最后还是以他先低头了告终。我们还为阶乘可不可以用负数争执起来,我说不可以用负数,他说是可以的。官司打到老师那里,老师推荐清官Wiki,再仔细阅读了Wiki的定义之后,他心服口服的认输了。
这种培训都很讲究互动,老师每讲一段就让大家做练习,还总结一些我们应该接着做些什么,少做些什么等等。大家都写了小条贴到前面的白板上。老师一个个读给大家听,采纳建议。在一个我们应该更多的有什么的栏目下,竟有人写了:我们要更多的好吃的,要提供我们免费午餐。这本来是我的风格啊,看来这个班里真是卧虎藏龙不少喜欢吃的人。结果,老师看了这个条子,想了想,说周四带大家去好好吃一顿,他们公司请客。班上一片欢呼雀跃,觉得民主就是好。
培训还是学到了很多东西,班上有些同学知道很多偏门黑道的技术,让人叹为观止。学无止境,的确如此。
做test其实是门学问的,行行出状元的。最重要还是要学深学精一些。市面上还有很多关于测试的书,讲得也很科学全面。做软件难得是理论和现实需要平衡。大家都知道完美的应该怎么做,可实际解决,全都受各种限制,执行起来就不是那么回事了。
阶乘可以推广的,程序就没有那么好写了。
回复sorrowman的评论:
:) 你看样子在干很fundamental的东西,我是一点都不懂得。但是,如果你要做一个什么graphical visualization的,我可以给你一些pointers。比如, OpenGL 当然可做 orthographic projection,更简单一些。
关于阶乘是不是可以有负数,你的对手如果是学数学出身的,也可能可以解释。
呵呵,Mousa,我觉得写程序大多都这样的。
探长,你可以有以下选择,1,写个小程序,实时监控这个你要去的博客,用httpstream 传回来contents,比较更新,送出个alert,可以发你邮件,然后你抢沙发。先进一些的,还可以自动post你的占沙发评论,甚至可以每天用不同评论占沙发。
2. 掐着孤草的脖子,让她告诉你沙发出来了没有。:)
阿贝,我新学了个dynamicProxy,貌似很有用。:)
punny,我们决心去clyde大吃一顿了。我这就预订。回来向你汇报战果。
墨浅,呵呵,是啊。不过不好一对多,那真成了天桥卖艺比武啦。:)
周四可以大吃一顿,好!回来汇报一下哦。
p.s. 我小时候最喜欢玩这个抽积木的游戏了,还有游戏棒 :)
我爸爸妈妈快要回去了,5555~~~
这样的培训真好玩儿,明亮好厉害,两次让你的partner认输。我对你们课堂间交流的偏门黑道的技术有很强烈的好奇心。:)
做系统之前一定要先做构架,好的构架要有open,flexibility等等特性,大系统里面会有小系统,再往下分模块。每个模块也要有好的设计,容易读,容易改动,稳定等等。做好一个系统,和建一个漂亮的大楼一样,可以有自己的“艺术”风格的。:)
我很喜欢去参加培训,学习新东西总是好的,不好的是要学以致用。
还有阿贝姑娘,上次见了没好好说上话,你父母也要过来了陪你了啊?恭喜。还有别气孤草了,她本来就林黛玉,回头她悲秋嗑血咱们可是担当不起啊。:)