软件的永恒之道

去年看了GIGIX的书评,也跑去买了那本《建筑的永恒之道》(Christopher.Alexander著),据说GoF的《设计模式》就是从这里来的灵感。DP我是没研究多少,如我在令狐的BLOG里留言所说的,最熟的就是SINGLETON,用过的也不过几个而已。然而大概是历史看多了一些,有一点考据癖,所以也跑去看这个《Timeless way of building》,学GIGIX来探寻一下Timeless way of software^_^

Alexander说,一个有活力的建筑是自然的,而自然的一个大的特征就是短暂的,无论是花草树木,都有诞生,生长,繁荣,消亡的过程。其实软件又何尝不是,而且相对来说,软件的生命远比建筑要短得多(当然,它的生命有时也比我们想像的要长一些,比如Y2K问题^_^)。与其在设计时绞尽脑汁去想如何让软件去满足日后所有的发展需要,不如让软件尽量满足现在的需要,以后再根据情况随机应变。这也正是XP所请的:“拥抱变化”

你做的软件有活力吗?

关于亲情与爱情的问题—-转自某论坛贴子

这个问题……

发言者:一件新马甲
发表时间:2004-4-9 10:37:24

其实不会有答案的

如果亲情与爱情是同等的,无论你选择哪一个,都将失去另一个(即使如WHALER所说,最后亲人就算会原谅你,那你也已经伤了他们的心)。

那些说选择亲情的有两种情况:
1、大概都是没有经历过这种事,把问题看得太简单了
2、是曾经经历,选择了爱情,现在后悔了

秋水说的是:亲情是无私更是自私的!代沟是客观存在的事实,后代的事总是有很多是上一代不能理解的,在这种情况下,有些被亲情认为是好的事,事实上未必是好事,反而成为伤害,至少也是压力。现代人的压力已经很大了,这一点就是上一代人所不能体会的,所以他们总是会在无意中增加这种压力。

爱情是脆弱的,它很容易就会被亲情的压力或其它什么事所摧毁。长辈的观点不能说是错误,他们也是真心为你好,他们也是希望后代幸福,少走弯路。但是人生在世,如果平平淡淡波澜不惊地走完一生,并不是所有人的愿望。如同一个故事所说:几个年轻人登山,在半山碰到一个下山的老头,就问老头山顶有什么,老头说山顶上没有什么,不用上去了,但是年轻人还是上去了,虽然上面的确没有什么。
更何况长辈总是不可能照顾子女一辈子,孩子最后总不可避免要和别人一起生活下半辈子。幸与不幸都是他们自己的选择,如《追妻三人行》里牛爸的口头禅:“儿孙自有儿孙福”问题是绝大多数长辈不会认识到这一点。

讲几个真实的案例:
A,三十多年前,她父亲认为那个男人没出息,反对她嫁过去。虽最后还是嫁给她现在的丈夫。事实证明那个男人是不怎么样,她受了很多苦,但三十多年还是走过来了,现在已经抱孙子了。但她父亲至死没有与她再有往来。

B,十多年前,她全家包括父母兄弟姐妹都反对她嫁给那个男人,同样是因为那个男人没出息,她最后还是嫁了,后来家里人也原谅她了,并接受了她丈夫,但是在她儿子小学没毕业的时候,还是离婚了。

C,几年前,他们高中时开始恋爱,女方的家长从一开始就反对,男方的家长知道后也很不支持,但他们一直坚持了下来,即使是没在同一座城市上大学,但大学毕业后,女孩到了男孩所在的城市,远离双方的父母,他们开始过同居生活,然而才过了两三年,他们终于还是分手了。

D,男方是福建某市公务员,北方人,两个姐姐也嫁在同一城市,但父母在北方,女方是自由职业者,男方母亲知道后,认为女方学历低,没有稳定工作,强烈反对。大家认为这个问题如何解决?

E,我自己的事也好不了多少,就不说了。

碰到几个XML的问题,真麻烦

我想用XSL来转一个XML,那个XML里有很多NODE,下面有一个ID的值不一样,类似于这样:

<Node>
  <ID>1</ID>
  <Value>xxx</Value>
</Node>

<Node>
  <ID>1000</ID>
  <Value>bbb</Value>
</Node>

想通过XSL转换后,去掉其中几个指定ID的NODE,可是我现在只会把指定ID的NODE导出来,因为大多数ID都要导出,不导的是少数,如果用这样的方法来做的话,XSL就太罗嗦了:(

麻烦啊

让人痛恨又不得不用的密码

因为有个朋友要用,花了两天时间把四年前写的一个用BDE的程序改成用ADO的,昨天改完想发MAIL,结果怎么也发不出来。于是就想用FTP上传,结果发现FTP密码忘记了(因为很少用)。于是又想拿pc-AnyWhere连到公司的服务器上,放上去,结果发现密码也不对了,不知道什么时候改的:(

上了这么些年网,干什么事都要密码:Email,FTP,论坛,BLOG,还有其它一些网站注册用户什么的,算下来需要密码的地方数以百计。虽然不可能每个密码都不相同,但根据安全要求的不同等,还是有十几二十个不同的密码,常常是为了安全起见,想了个和以前不同的密码,可是由于很少用,等到要用的时候却往往怎么也想不起来。郁闷啊……

余世维就是大师啊

研究了几天的EXIF,昨天终于有一点成果了。于是休息了一下,把一个老片翻出来再看一遍–著名的法国喜剧片《虎口脱险》,这么多年过去了,再看还是那么爆笑,经典就是经典啊。

看完电影又看了一节余世维的讲座(时代光华版),老余的课就是好啊,虽然不敢说经典,但至少也算是最好的管理学讲座之一。

这节课里老余说了一个事很有意思:

他在雅思兰黛做副总的时候,有一次在一个口红调色师的桌上看到一个样品,随口说了一句:“这个颜色好看吗?”,那个调色立即对他说:“余副总,您为什么说这句话?第一,这个还是试验品,还没有定稿;第二,我是专业人员,如果余副总您认为您可以调得更好,那明天请您自己来调;第三,这个口红是给女人用的,听说余副总您是男人,我想我不用考虑您的意见吧?”老余立即向这位叫做Lancy的调色师道歉。

很久以前,在软件业曾经有过一次大的争论,某些人提出一个观点:国内软件业之所以没有大的发展,在于软件开发人员不服管理,并且用一个问题来质问所有的软件开发人员:你是否能服从一个技术不如你的人的管理?并由此炒作起所谓的“软件蓝领”概念,让一大批做培训的公司发了一笔财。

现在看来,那完全就是一个阴谋。这次运动的结果直接让所有失败的软件公司找到了背黑锅者–所有的开发人员。并最终实现了逐步降低开发人员薪资的目的,同时提高了所谓管理人员的薪。其实事实上,最应该承担这个责任的就是这些所谓的管理人员。

技术不行可以理解,问题他们管理也不行,这还不算,还要去干涉技术的事务。就像老余对那个调色师说废话那样,而老余能很快意识到这一点(当然也跟那个Lancy能据理力争有关),但软件业的大多数所谓管理者都做不到。

其实前面那个质问很好回答:不懂技术可以,但你至少要懂管理,并且不能干涉技术的事。

我们常常说到团队,按老余的话说,team有三个traits,不具备这个条件的就不能叫team,只能说是“一群男人和女人”(软件业里大概可以简称为“一群男人”^_^)。而我们那些所谓的管理者们大概连哪三个traits都不知道,还敢厚颜无耻地自称是一个team。

而一个team之所以是team,很大的原因在于team leader。一个leader要领导别人,用的是权力,按老余的分法有五种:三种弱权,两种强权。那些所谓的管理者大概从来也不知道他们所用的都是弱权,所以他们才会管不住手下。

呵呵,这篇文字里出现最多的词就是“老余说”,所以这个不能算偶的随笔了,只能算是偶学习老余的课程所记的笔记^_^

BTW:以上未详细说的部分请自行参考余世维时代光华版讲座,我要再说老余要告我的^_^

MS DevDay 2004就素那浮云啊

昨天没去参加MS DevDay 2004挺可惜的,我都收到了MS的确认函了,没办法,公司事多,昨天还加班了两个小时,累S淫鸟。

今天听一个去参加的朋友说,每人都送一张光盘,带Together for VS.net,好爽啊。而且据说李维做的讲座也相当不错,很值得一听,真是亏大了。

现在看来,Borland和MS走得越来越近了,Black.Stone离开Borland,JBuilder看样子也希望不大了。前两天大致看了一下Eclipse,感觉上比JBuilder舒服,至少可以打上简体中文的语言包,看着都舒服的说。

现在看来,Borland也就剩一个Together还值点钱,干脆Borland的董事会把Together卖给MS,把本钱捞回来,然后把其它产品都拿来开源了,散伙完事,对大家都有好处。^_^

在家里用IE5.5写的格式跟在公司用IE6写的不一样啊,还要来改一下:)

自娱自乐

今天是愚人节,孤独的人的节日同样也是孤独的。连个可以作弄的人都没有,只好给人乱发一些短信。无聊啊无聊

今天开始,公司的午餐改在旁边的软件园餐厅去吃了,环境虽然还好,菜却不怎么样,最关键的是:诺大的一个餐厅里,连个像样的MM都看不到,影响食欲啊。

今天把自己写的那个相册软件升了一下级,也不知道除了我自己,还有没有别人在用:P 不过这个东东本来就是为了自己管理图片方便而写的,自己用着好就行了:)就如同现在这个BLOG,也不知道有几个人会看,但是我照样会继续写“博”下去一样,自己写着开心就好。

今天已经是四月了,CSDN已经很久没去了,论坛上吵吵闹闹的日子已经离得很远了,原来那帮子了色虽然还没离开CSDN,不过也很少在那出没了,大家都有事要忙,IT业的日子一天比一天难混了,工作压力下哪里还有空灌水。不过个人专栏还是要维护的,一会要把那篇线性插值的文章COPY过去。技术文章一般是没多少人看的。

古人云:敝帚自珍。大概就是指我这种情况吧,才写了不到一个月的BLOG,就开始想要怎么备份的问题:P

如此考试

朋友“李木勺”的GF要考计算机二级,昨天问了我几个C语言的题目,本来我想我怎么说用C也用了快十年了,写的程序也有几万行了,应该没有什么问题吧。虽然我知道这类考试通常都是很BT的,毕竟我也考过高程的考试,没想到还是出乎我的意料。

比如这一题:

main()
{int a=2,b=-1,c=2;
if(a if(belse c++;
printf(“%dn”,c);}

该程序输出多少?

看看这出题的人写的什么程序,完全是有意对读程序的人造成误解,故意降低程序的可读性,当然也有可能是他根本不知道什么叫编程风格,按老郑的说法就是:“在中国,所谓的考试就是一群水平不如你的人,背着你看了答案以后,编了一些问题来折磨你”(大致如此,记不准确了)。

这就是中国的所谓人才选拔的考核。记得有人说过:国外的考试总是拿最常用的内容来考,以检验你学会了没有;国内的考试总是拿最不可能用到的内容来考,以证明你没有学会,或者说存心让你出丑。

比如下面这题就很典型:

若变量a,i已经正确定义,且i已正确赋值,合法的语句是:A;a==1    B,++1
   C,a=a++=5  D,a=int(i) 

有这样的教育者和考核者,不难想象中国软件业现状的成因了。

软件的目标

昨天与朋友讨论myIE,一扯就扯到那个原作者头上了(关于这个作者是什么人物,myIE的开发初衷等问题就不在这里扯了),以及那个导致SourceForge被封(当时和它一起被封的还有Google)的软件FreeNet。

单纯从技术角度上说,这两个软件算是相当不错的,那些开发人员的能力也是很强的,只是其目的不妥。我不禁感慨:“人还是需要有精神寄托的”,他们能做出这样东东,在于他们有着非常明确的目的性,在此驱动下,他们才能很好地达到目标。

其实失败的软件开发在很大程度上是因为目标不明确或与最终用户的目标不一致而造成的。

当然的确有些白痴用户自己都不知道自己想干嘛,这也正是目前软件开发所面临的困境之一。正好今天看到一篇非常精屁的文章:

http://www.eping.net/fourm/dispbbs.asp?boardID=13&ID=1259&page=1

正如文章中所说的那样,用户有用户的思维定式,所以一些很重要的事情被认为是理所当然而没有被提出(至少是没有被准确地提出),而造成了开发人员的误解,直接埋下了最后造成软件项目失败的隐患。

所以,只有解决了如何准确全面地获取用户的需求并为开发人员建立明确的目标的问题,软件项目才有可能获得成功。

然而目前国内的软件企业中,承担这部分职责的人好像都很失职,因为有开发人员为他们顶缸(反正软件项目成功的,功劳是他们的,失败了,责任是开发人员的),他们只要坐在这个位子捣捣浆糊就行了,难怪现在人人都想往“管理”上靠。这个现在看来已经成为目前国内软件业发展的一个瓶颈了。