银弹和我们的职业

编程是不是有前途的职业?30岁以后一定得转行?工作外包到越南怎么办? 新技术层出不穷,怎么才能跟上技术发展的趋势?工具越来越牛,以后编程像组装乐高积木怎么办?也许俺比较孤陋寡闻,看到的消极观点多。比如这里,还有这里。积极的观点少。像云风那样的铁杆编程迷更为罕见。嘿嘿,我没有答案。前天重读Frederick P. Brooks的《没有银弹》,有点感想而已。

《没有银弹》的中心思想是软件开发的困难分为两类。一类是暂时困难(accidental difficulty) ,另一类是本质困难(essential difficulty)。暂时困难可以通过技术的进步来解决。比如说检查句法错误就是暂时困难,写出绘制窗口的代码也是暂时困难。现代IDE基本解决了这些问题。而本质困难没有工具或技术可以消除。B老大争辩道,软件的本质是一堆互相作用的抽象结构:数据,算法,关系,函数调用。。。这些抽象结构应该尽量独立于表现它们的具体形式。所以说,软件编程的本质困难在于写出这些抽象结构的规范,设计这些抽象结构,和测试这些结构的正确性。注意哈。B老大说,如果上述判断正确,那么世上便没有银弹。幸好,到目前为止B老大的判断颠扑不破。

银弹和我们的职业发展有什么相干?很简单:我们得把时间用于学习解决本质困难。新技术给高手带来方便。菜鸟们却不用指望被新技术拯救。沿用以前的比喻,一流的摄影师不会因为相机的更新换代而丢掉饭碗,反而可能借助先进技术留下传世佳作。因为摄影的本质困难,还是摄影师的艺术感觉。热门技术也就等于相机。不停追新,学习这个框架,那个软件,好比成天钻研不同相机的说明书。而热门技术后的来龙去脉,才好比摄影技术。为什么推出这个框架?它解决了什么其它框架不能解决的问题?它在哪里适用?它在哪里不适用?它用了什么新的设计?它改进了哪些旧的设计?Why is forever. 和朋友聊天时提到Steve McConnell的《Professional Software Development》里面引了一个调查,说软件开发技术的半衰期20年。也就是说20年后我们现在知识里一半的东西过时。相当不坏。朋友打趣道:“应该说20年后IT界一半的技术过时,我们学的过时技术远远超过这个比例。具体到某人,很可能5年他就废了”。话虽悲观,但可见选择学习内容的重要性。学习本质技艺(技术迟早过时,技艺却常用长新)还有一好处,就是不用看着自己心爱的技术受到挑战的时候干嚎。C/C++过时就过时了呗,只要有其它的系统编程语言。Java倒了就倒了呗,未必我不能用.NET?Ruby昙花一现又如何。如果用得不爽,换到其它动态语言就是了。J2EE被废了又怎样?未必我们就做不出分布系统了?这里还举了更多的例子。

一句话,只有人是真正的银弹。职业发展的目标,就是把自己变成银弹。那时候,你就不再是人,而是人弹。

项目进展有所变故

    昨晚yangrh说驱动已经延期,我们项目有可能挂起,如果挂起,那要等到1月上旬才能过去,这对我们来说,还是有点不爽的,1月份能去的也就几个人了,对我们很不利,晚上请刘老师跟周部长沟通了一下,今天收到消息:由于H3设备还没有稳定,驱动也还在系统测试阶段,经过和周部长商议,决定H3组暂时不去北京,按计划在武汉完成系统测试,系统测试之后我们只负责协助解决问题,按需要派人去北京,并不会强制性的要求我们去北京。这样的变动对我们极其有利,但却要辛苦了yangrh了。
    呵呵,不用离开武汉了,圣诞篮球赛、年终茶话会都可以参加了,^_^,但宝贝仔的希望泡汤了,她好希望跟我过一个圣诞节的。

05级种子杯决赛宣讲

    昨天晚上05级种子杯决赛,我作为Dian团队老队员,到现场宣讲。
    我选的题目是:大学怎么才能不虚度?
screen.width/2)this.width=screen.width/2;>
    这个题目显然比较大,而且我相信每个大学生,对这个问题都有着不一样的回答。所以,我引用了某一年的高考作文题来回答这个问题:   
screen.width/2)this.width=screen.width/2;>
    当然,我必须列举出很多可能的答案:
screen.width/2)this.width=screen.width/2;>
    那么,我的答案是什么呢?我觉得当今高中教育虽然越来越“素质教育”,但是学生除了关注学习之外,对其他东西关注不多,学生除了证明了自己学习方面的能力外,其他方面的能力亟待挖掘,所以,我的答案是:
screen.width/2)this.width=screen.width/2;>
    接着,我讲述了自己的经历,回想自己大一的时候,600多人,只有一个辅导员,没有人指导,再到大二立志做好程序,做出了一个opengl程序,赢得了尊重和信心,到最后在dian团队实现自己的飞翔……
screen.width/2)this.width=screen.width/2;>
    正所谓对症下药,我接着指出了大家在现阶段很容易犯的错误:
screen.width/2)this.width=screen.width/2;>
    最后,送给他们一句经典的话,希望他们在大学里面广泛实验,发掘自己的潜力,实现自己的价值:
screen.width/2)this.width=screen.width/2;>


聚了聚了,_

    加入团队聚合站点,^_^
    之前一直比较犹豫,是因为我blog上面什么都有,时不时迸出个“宝贝仔”、“小不点猪”,恐怕贻笑大方,这与我建这个blog的初衷有关,我当初是想完全不公开的(所以我没有用xbull,而用了cawk),可是到了后来越写越多,不公开都不行了。
    hello everybody!

机遇属于那些有准备的头脑,钱也是,_

       昨晚竞选优秀项目组,下午在hyxxl组开完例会,花了20分钟草草做了个ppt,现场一讲,比起其他组的精心准备来说,逊色不少。空手而归,我心服口服,^_^。不过我很自豪的一点,我没有任何浮夸,说asile那一段,的确是动情的说~~~~
       昨晚cmzb发来一个短信:“送你一颗红色“炸弹”,我很感激能够成为你的组员,谢谢你….你是一颗永远散发光芒的金子”,^_^,作为组长,能够得到组员的认同,才是最大的承认!谢谢cmzb<
       ppt制作能力和煽动力亟待提高!200k = 200w

班头,我想加入dian团队

班上一个非常优秀的学生来信:
  
     班头,我想加入dian团队,能给我提点建议、出出主意吗。

回复如下:

     很高兴你想加入Dian团队,团队也非常欢迎大家,我的建议是:大家不要急,先在团队外面就打好基础,进了团队才能游刃有余,05级的一个同学这个学期加入了团队,但由于他的技术能力太薄弱,顶不住压力,前段时间不得不退出了团队,我不希望这样的现象发生在我们班。好几个同学都向我表示过要加入团队,但很抱歉的说,有些同学并没有做好准备,团队的门槛是很高的,不要奢望到了团队,会很轻松,与其进了团队跟不上趟,不如在进团队之前就准备好。
     种子杯编程比赛一过,大家又失去目标和动力了,我希望大家能够寻找新的目标,团队在以下几个技术方向上非常看重:C/C++、数据结构、MFC、OpenGL、模拟电路、数字电路、电路理论、高频电子线路、单片机、数据库、网络通信,我希望成立兴趣小组,在这几个方向上做一些积累。
     在这里我要特别强调一下软件和硬件的关系,一句话概括就是:硬件是基础,软件是灵魂。电信系的学生,对软件和硬件都必须拿得起放得下,我自己既做过软件,又做过硬件,最后找的工作虽然是做软件,但是我觉得做硬件对我做软件帮助很大,当然,我觉得做软件对做硬件帮助也很大,两者就像我们经常提的物质文明和精神文明一样,相辅相成,互相促进。做硬件,可以让你了解软件的工作平台和工作原理,比如我们在C语言中遇到的指针,初学者可能很难理解,它在硬件实现上,就是你们在微机原理里面将要见识的“间接寻址”,学完微机原理以后,我相信你们会对指针有着非常深入的了解的。
     我个人对软件更为亲睐,它的学习成本比硬件低,只要有电脑就可以做了;它的学习门槛也比硬件低,大家现在都已经具备所有的基础知识了。大家现在处于大二上学期,正是积累软件编程经验的大好时机,正所谓过了这村没那店,一步领先步步领先,笨鸟先飞早入林,大家要抓紧时间做好技术积累。
     很多同学可能还沉浸在数据结构考试的恶梦中,对软件编程还心有余悸,我在这里要奉劝这些同学,或者说再一次强调我的两个观点。第一个观点:大家对于C语言/数据结构感觉很难学的根本原因在于计算机思维和大脑思维的差异,弥补这个差异的唯一办法是不断的practice,不断的去体会计算机思维方式,不断的体会面向过程/面向对象方法,不断的积累自信和经验;第二个观点:没有谁是编程天才,在大家尽力弥补计算机思维和大脑思维的差异之前,大家不要说自己不行,大家首先要掌握一门语言,之后再谈天才不天才的问题,大家现在就对自己自暴自弃,为时尚早!
     最后,回到我提到的兴趣小组这一点上来,我建议从现在开始,大家成立各种兴趣小组,在C/C++、数据结构、MFC、OpenGL、数据库、网络通信等方面进行探索,每个小组3-5人,我们班每个人都必须有一个小组,我会给大家布置作业,解答问题,并且会给大家请这些方面的牛人进行实际指导。我可以想到的小组有:
     1. 数据库小组:做一个班级学生信息管理数据库系统,使用平台:VC6.0 + ODBC数据库 + MFC ,使用语言:C++语言;
     2. 网络通信小组:做一个类似QQ的聊天工具,使用平台VC6.0 + socket编程 + MFC,使用语言:C++语言
     3. OpenGL动画小组:做一个三维汽车模型(支持光照、三维观察等),使用平台VC6.0 + OpenGL + MFC,使用语言:C++语言
     4. CAD小组:做一个能够绘制直线、圆、矩形等简单图形的CAD软件,使用平台VC6.0 + MFC,使用语言:C++语言

     ……大家可以想到什么,我就可以给大家任何帮助,^_^。

     从上面我列的小组来看,大家很容易发现,我们其实都需要C++和MFC,大家可以花2周时间学习C++,再花2周学习MFC,最后花4周完成作业。

     同意的举手,^_^!

cactus,加油!

    foxmail出问题了,今天一下子收到了cactus的blog上的n多rss订阅,才知道一些她father的细节。
    她father出事的那天,我正好打电话给她,那天marilyn和qja准备把她叫上去吃酸菜鱼锅仔,电话那边的她传来很无助的声音,我就知道她家出的事情肯定是大事,因为cactus一直都是一个乐观、坚强的人,她轻易不会这样的。
    我一直都不太会安慰人。当时我挂断电话前,想到要说点什么,但最终还是没有说。吃完饭后,还是觉得应该跟她说点什么,但不想问她到底出了什么事情,怕她伤心,就给cactus发了条短信:“take easy, everything will be ok”。后来见了cactus,我只是告诉她,一定要多回家!我做到的,只是密切注意合适她的公司,催促她参见笔试和招聘会。
    cactus一直都是我忠实的饭友和亲密的战友,团队所有队员都难出其右。我只能默默的祝福她,希望她更加加强,能过得更加快乐!

小不点猪居然抠了一个晚上的手指头

    躲在后面桌子上,抠了一个晚上手指头,7:00我看她看到206页,刚才一看,居然看到204页了,真拿她没办法,^_^
    这几天都没让她吃肉,晚上买了个油饼给她吃,后来抢了她1/3吃了,俺要让她体会劳动之辛苦,革命之不易。

[转]小说《输赢》之序

人生本是过程,结果并不重要。

一位老人带着爱犬行走在乡间小路,看着沿路的风景,突然间老人意识到自己已经离开了人世。他不知道这条路通往何方,只是茫然地向前走着。走了一段路程,只见前面高耸着大理石的围墙,围墙的中间是流光谥彩的拱门,上面装饰着各种珠宝,门前的道路由金砖铺就。老人兴奋不已,他想自己终于到了天堂,带着狗走到门前,遇到了看门人。

“请问,这里是天堂吗?”老人问道。
“是的,先生。”看门人回答。
“太好了,里面一定有水喝吧?我们已经赶了很远的路。”
“当然有,进来吧,我马上给你水。”看门人缓慢地推开大门。
“我的朋友可以一起进来吗?”老人指着狗问。
“对不起,我们这里不允许宠物进入。”

老人沉默了一会儿,想到狗多年来对自己的忠诚,自己不可能这样扔下它。他谢过看门人,带着狗继续前进。长途跋涉之后,老人看到路边破烂的木门,通向木门的是坑坑洼洼的土路。老人带着狗过去,看见一个人在树下看书。“打扰一下,”老人对看书的人说:“请问,你这里有水喝吗?我们很渴。”

“当然,那边有水龙头,你可以喝个痛快。”看书人指着门内说。
“我的朋友可以进去吗?”老人指着自己的狗问。
“欢迎。”看书人说。

老人带着狗进了大门,老式的水龙头旁边有一个碗。老人先用碗盛了满满一碗水,让狗喝个痛快,然后自己又重新加满,也喝了个够。他们满足地离开水龙头,回到看书人的旁边。 
“这是什么地方?”老人问。
“这里是天堂。”看书人回答。
“呃,这可奇怪了,这一点也不像啊,而且我们刚路过天堂。”
“你说的是那个黄金铺地、有漂亮的拱门的地方吗?”
“对,那里非常漂亮。”
“告诉你吧,那是地狱。”
“原来这样,你为什么不介意他们盗用天堂的名义呢?”

“当然不,他们为我们省了很多时间,替我们把那些为了自己利益而舍弃自己良心和原则的人都挑走了。”

签约趋势

       上午面完回去,12:20就收到趋势hr电话,叫我下午2:00带三方协议书去五月花签约,当时我跟小不点猪在百味小吃城吃饭,以前我答应她去北京,后来说服她去上海,结果却要去南京,她一听到这个消息,就非常生气。
       的确,我当初没有想过去趋势,原因有二,一是之前面过nsfocus,感觉去趋势,还不如干脆去nsfocus算了,另外,是因为我趋势笔试的确考得太烂了,当时根本就没有考虑趋势会给面试。所以一直没有把趋势列入计划中,一直在准备autodesk。
       这两天一想,其实趋势更适合我,趋势正处于发展期,技术范围包括windows、linux平台,c/c++多个方向,而autodesk的产品已经很成熟,技术范围仅限于windows平台,c++方向。我当然更倾向于更宽泛一点的技术路线,^_^。
       趋势是计算机+通信,而autodesk就是计算机,我当然想尽量留在通信行业咯,^_^,更何况,autodesk要2个礼拜以后才能出结果,我等不起。
       要签趋势,当然首先要说服小不点猪,我的话她向来不听的,我只好求助于她妈妈。小不点猪把我的就业协议书藏起来了,后来被她妈妈说动,才把协议交出来,这个时候已经快1:00了,我匆忙忙的赶上公交,去了五月花。小不点猪真可爱,^_^。

       上去1018之前,刚好碰到alias张,他说我今天面试表现非常不错,看来我的判断没有错,趋势需要的,不是中庸的人。签约的过程看似神圣(毕竟是我有生以来第一次签聘任协议书),其实平淡;找工作的过程看似漫长,其实也不过2个星期。我要做的,就是看着前方,相信自己的判断!

       这次趋势招聘在武汉录了5个人,华工3个,都是电信系的,其他2人估计会去做qa,我应该会去做r&d;武大2个,都是计算机的;还有2个华工计算机的,是上次趋势百万程序设计大赛的,他们被提前录取了,所以总共在武汉录了7个人。

       晚上趋势hr请我们在巴山夜雨吃饭,celebrate我们的相聚,我们喝了47瓶酒。趋势有个传统,就是在同事聚会的时候,都要带上自己的另一半,他们认为家属的认同,其实也是趋势能够留住人才的一部分,我深深的认同这一点!在他们的强烈要求下,我们把自己的男/女朋友叫过去了,小不点猪晚上9:00多才打车过去,看到我喝得通红的脸,甚是心疼,但同时看到趋势员工真诚的态度和优雅的风度,她也对趋势变得满意起来了。
       三位趋势员工中,一位alias张,台湾人;一位是r&d的老大,也可能是我以后的上司,他是我第一面的面试官,他说第一次面我,就知道我肯定可以过关斩将,拿到趋势offer,为了他的赏识,我喝了好几杯;还有一位是老大的老大,john李,经历非常丰富的一位,他提到两点,其中一点是,everything is philosophy,什么事情都是哲学,他叫我们要学会取舍,得到什么,必定会失去其他东西,这也可以成为我放弃nsfocus和autodesk,放弃北京和上海的很好的注脚。
       明年的7月,我就会成为趋势一员,期待着与趋势共同成长,也希望我能在最后一段时间内,为团队贡献我的所有才智和精力!