2006年12月25日星期一

不该忘记的忘记

(俗话说”三天不练手生”,快有一年没有写过java程序,今天替别人做个jsp网站作业,竟然发现自己甚至连if的用法都给忘了,不过自己还是有很多东西记得比较牢的,轻易不会忘记,下面的一些东西写给需要的人来看吧)

什么是软件工程?在大学时也有很多朋友和同学有志于软件工程,大致的原因估计也是因为想去当”管理者”吧。在我看来,软件似乎是一件非常麻烦的东 西,就真正的商用级别的软件项目,很多都是最后草草收场的,里面蕴含着无数的bug和不完美的地方。普通的软件项目可能不用太注重,因为这些东西都是”玩 具”,根本谈不上是软件;商用级别的软件之上是要五个人以上的队伍,不停的面临着客户要求的修改和变化。在这样的项目里面,你可能经常发现,才刚刚完成的 代码被别人修改了;几天前自己写的东西自己都不知道到底是什么意思了;一处小小的改变竟然引起了一场地震般的代码修改,你要不停的”查找”"替换”;你看 到同事小王写的代码根本无法跟自己的代码融合,真想骂他是个SB;客户提了一个小小的功能上的要求,被销售的哥们一口保证没问题以后,你发现你们的团队如 果想在原有的一堆千疮百孔的代码上面完成这个修改之后系统莫名出现各种问题和毛病,怎么查都不知道是什么原因。等等等等,你会发现自己好像掉进了一个泥潭 里面无法动弹,总有一种无名的业火想要把显示器砸烂。在这种情况下,我们就需要软件工程了。

传统的或者现在教科书所流行的软件工程是CMM,源自于美国麦卡基.梅隆大学。当时他们做这个标准的原因也很简单,就是因为美国军方在做很多项目是 发现了上面我所说的那些问题,于是就请麦大设法解决这个问题。在我看来,估计当时制定这个标准的麦大的教授肯定不是软件工程师出身,在制定的过程中想当然 的把软件工程认同为普通的”工程”,认为只要把各种问题”标准化”以后就能大量量产软件了,就像福特发明了汽车流水线一样。于是,CMM就规定,每位软件 工程师在完成每条编码时都要写出你写的这些编码的原因和结果,于是CMM里面就有了大量的文档,文档的数量远远超过了代码的数量,在整个过程中你会发现你 是一值的写文档而不是写代码。

麦大的教授想法不错,但是没有考虑到软件其实根其他的工业是很不一样的,因为软件有很强的自由性。建筑上完全可以按照各种文档和图纸来完成工程,因 为其中可供建筑师自由发挥的空间不是很大。比如你建了一间房子的墙肯定是四面都有的;但是在软件上就不一定是这样了,看似一堆堆的代码,其实是充满着漏洞 的,甚至比盖房子更加复杂,因为在代码里面,出现了问题很难解决,尤其是那些大的项目里面。使用其他工业的管理过程来管理软件这个极其特殊的“特殊”的工 业,成功的可能性当然是非常的小。

几千年来,世界上一直延续着这样的工艺:工程师设计工程,手工艺人完成设计。但是世界到了我们这个年代,特别是软件时代,会变化的这么快。软件工程 师既是设计者又是“手工艺人”,他们的工作贯穿于整个软件的过程中。特别的,由于软件的特殊性,软件的项目也就出现了很多的变数。比如在传统的汽车的装配 中,不可能出现自行车的轮子被装到劳斯莱斯的轮子上的事情;但是在软件中,你就可能出现一个基类“轮子”的指针,本应当被用在劳斯莱斯中,最后引用的竟然 是一辆自行车的轮子?!这样的劳斯莱斯能开吗?!当然,暂时可能还可以用,一旦用于大规模的应用,这样的劳斯莱斯肯定要玩完。但是,在软件工程中,这样的 例子非常多。因为,软件不是那么的直观,一班人很难发现数千行的代码中隐藏的自行车轮子。

所以,我们要问,到底怎么才算的上是“软件工程”?是UML图吗?我想不是,因为UML不能告诉我隐藏在代码中的自行车轮子。是CMM?文档告诉我 们什么?它不过是机械的告诉我某某个地方要用劳斯莱斯的轮子,但是天知道在服务器的内存里面运行的到底是自行车轮子还是劳斯莱斯轮子?

所以,真正的“软件工程”不应当是那些不懂编程的人评经验规定的,而是要用真正熟悉这个领域的专家来制定的。很高兴,现在很多“敏捷”领域的专家已 经发现了这个问题。比如TDD(Test Develpment Driven)就是个不错的“软件工程”,他的原理也很简单,就是Test Case.劳斯莱斯是什么?不就是在高速公路上面能够跑到230公里吗?我们就写一个这样的Test case,只要通过这个case的车都是装着劳斯莱斯轮子的车。这样,我们就完成了软件中最为迷人的部分:未知性测试。通过测试的代码都是经的起考验的代 码,既是在以后的重构中也没有问题。

2006年12月19日星期二

我们的商学院

我现在突然有了个做做个网站的想法,这个网站是关于管理学的–或者更详尽的说是关于公司治理和公司金融的,名字或许该叫做“我们的商学院”?呵呵, 当然也是业余时间非盈利性质的东西。我发现其实很多像我一样的朋友不是缺少资料,而是缺少一个像样的环境,这个环境就是讨论问题或者发表问题的地方。还 有,很多被时下的“管理学”给欺骗的同学被欺骗的原因很简单,就是应为不知道甚么是“管理学”。当然,在我看来管理更注重于公司金融财务和信息管理。很多 高深的的东西我们可以不用考虑,但是还有有很多东西我们可以感兴趣的讨论和发表的。这些东西可以使我们自己写的东西,总结的;也可以是从《商业周刊》上面 摘抄的;也可以是自己从书上翻译出来的。

首先,这个网站该怎么作?当然,我不会选择那些恶俗的asp新闻网站;以前的java网站自己当然也不能用,因为java生来就是企业级web的应 用,用来作互联网网站真是太浪费并且费力,其次主机和空间也很难找;Ruby on rails虽然不错,但是自己不是太了解,可能会在以后使用,现在可能不会用。结果无疑就是用PHP了,下面就是使用那种形式的问题。论坛?不太合适,因 为这个社区的目的是文档共享的形式,论坛更适用与骂人和贵族特权化;joomla之类的CMS?我感觉也不是太妥当,这样的系统太复杂并且难以修改,并且 CMS的形式也不是太适合用在这里;blog的形式?听起来不错,但是现有的很多blog程序用起来不太合适,不能做成一个社区。所以,我印象中的这个 “社区”的模式应该是如下的:
1 文档共享。这个文档是光以上的文档,表示“一切有内容的东西” 2 自由平等。没有特权和贵族,只有在爱好的前提下平等的讨论和创作。 3 形式的新颖。我是非常讨厌论坛这种形式的。在这种web 2.0 的时代,我们应当有些创新。

或许是digg的形式,大家可以对某种问题进行探讨,然后得出某种结论?不过对user的界定将是一个非常困难的问题。过于低端话的user的结果 就是无聊的口水战,这正是我的眼中的中国网民;要是仅仅寻求高端user估计在中国还不多。最后,估计还是那些正在大学或者刚刚毕业的想对公司治理或者公 司金融有所了解的人吧。

不知道大家有什么意见?

2006年12月18日星期一

流行就是王道

最近看到一则评论“最近, 似乎人人都在谈论《越狱》. 这部在美国收视率早已跌出前20名之外的电视剧, 意外在中国受到狂热追捧”。说 实话越狱我倒是没有怎么看,原因有二个:1 时间宝贵。现在实在不敢把自己的时间放在这些电视剧上面了,怕自己接着上瘾。 2 我看过了《肖申克的救赎》了,刚开始看的时候感觉完全就是抄袭,也或者是《肖申克的救赎》实在是太经典了,所以开始对这个《越狱》的印象不是很好。

最早看过的美剧还是《firends》消磨时间之外还是练习纯正美国口语的不错的机会,所以现在偶尔也继续看。但是《Firends》流行的时候大 多还都是DVD盗版盘的时候(甚至比这还要早,我记得在高三的时候就听到过介绍,后来上大一的时候买了DVD盘),即使是这样,中国的《Firends》 还是比美国的晚了很多,应为美国的是在92年就开始开播的。但是这次《越狱》的时差就不是那么的长了,尽管已经不是美剧中的热门了,但是和中国流行的时差 也不过是半年左右。

看来,果然是“世界是平的”了,互联网的流行能够使很多世界上其他地方的东西迅速的传播到世界的每一个角落。比如说计算机教材,我前几年的师兄们还 不得不看那些土的掉渣的,国内教授们“抄袭”的美国几十年前的教材,但是我现在就可以通过电骡下载最新的斯坦福大学的java编译原理的教材;可以通过 IBM的developerworks网站了解到最新国际流行的东西,这其中的时差对我来说几乎可以为零了。从某种意义上来说,其实在互联网的时代已经没 有重点和非重点;专业和非专业的分别了。对于有心的人来说,即使身在三流学校但是同样可以第一时间接触到国际顶级学院的东西,关键看他是不是愿意找了。

2006年12月13日星期三

狼的另一面

“男人往往有很多面,你有多少面?”—金牌七匹狼!

我没有买过七匹狼的男装,但是我估计任正非肯定买过。这位号称领着一群狼的头狼几天前表现出了狼性一位的另一面,凡是看过任正非写的“祭母文”的 人。印象中的华为是这样的公司,任正非站在高台上用着大喇叭跟台下的程序员们讲话“同志们,现在咱们的任务重呀!爱立信,思科这样的帝国主义列强不仅侵占 了国外的市场,也占领了中国的的大部分领土,咱们哪什么根他们拼哪?只有靠同志们加班了!!!”。虽说华为的加班如此的厉害,但是大部分原来跟任正非出来 打天下的老程序员大多还是有不错的结局的,而且相对于中国其他的吸血外包公司而言,华为的薪水还算是很不错的,甚至即使是在慧通也有可能进入华为,已经是 很人道了。

从任正非的文章里面我才看到其实任正非也是个普通的孝子,并非原来我所想象的“铁人”;其次任正非的做法看似粗狂,其实也很义气,从对老员工就可以看出来。

任正非肯定买了很多七匹狼男装。

2006年12月12日星期二

你会管理吗?

中国人现在很喜欢管理。

现在去科技市场,那么买MP3和盗版光盘的摊位的电脑上放的几乎都是余是维的“管理学”的视频讲座,真是令人叹为观止。其实从传统上说,中国人更喜 欢管理学,更喜欢管理别人而不是被别人管理。曾经问过几个不知道该干什么的师弟师妹准备干嘛,结果都是很简单“学管理!”这样的回答也几乎让我的耳朵模出 来茧子来了。当然高中的很多同学也是学的管理学,但是结果却偏偏是一些学习什么“印刷技术” “机械设计”之类看似工人阶级的专业的同学纷纷找到了不错的工作。“工商管理”“电子商务”之类看似牛B的专业到并不是那么牛B。

我的很多同学没有想到,起码在中国,能够去管理的并不是学管理的。你看清华北大的什么管理学MBA班那么多的高管,拜托人家是有了钱才去“交朋友”外加“混文凭”的,并不是进了MBA班出来就是“工商管理硕士”了。

所以,从我这狭窄的观点来看,不要再被中国的“管理学”给蒙蔽了。大学里面的管理学虽然是骗人的,不过还算是会有一些值得学习的东西;余是维之流的 管理学不过是篇那些刚刚爆发起来的“高管”的,对这些文化水平不是很高但是在社会上面混的及其圆滑的人来说正统的管理学里面的财务,金融,法律,IT之类 的东西如果全部都学了的话几乎就是要了他们的老命了,余是维的“政治管理学”倒是很合他们的胃口,学起来也比较开心,无非就是刷耍心眼罢了;如果真的想学 习的话只有去国外了“西天取经”了,能不能取道真经还得看你的运气,一不小心去了“小雷音寺”之类的三流学校学的话,受伤的还是你父母的血汗钱(政府官员 子女不在此数,要不就白被“双规”了?)。

2006年12月9日星期六

看《世界是平的》

很早的时候听小资们的偶像潘石屹说过一定要读这本书,大致也看过英文版的,感觉还是一些关于外包和世界当今贸易格局的一些文章,不是非常感冒。毕竟 自己知道到底什么是“外包”,印度的软件神话也好,中国的对外加工贸易也好,总是让我感觉到相当的不舒服。前几天把书买到以后仔细看了,感想比较多。

弗里德曼(这个弗里德曼跟上篇的可不是一个人)在开始的时候举了一个印度的呼叫中心的故事作为引子。在印度的一家专门对欧美外包的呼叫中心里面有很 多的印度年轻人在努力的工作着。首先,这些呼叫中心里面的年轻人最开始的时候要学习英美式的口语,改掉他们自己的印度式的英语,这样的话当一名美国人在家 收到一个推销信用卡的电话时才不会明显的感觉到推销的那个小姑娘是印度人。这些印度年轻人在工作的时候要遇到很多尴尬的事情,比如说电话被人无情的挂掉n 次,但是他们仍然很喜爱自己的工作,因为这样一份工作能够给他们带来不错的收入和广阔的见识。还有印度的软件业,当然以我看来软件外包根本就是 摧毁这个民族科技竞争力的“有力武器”,但是外包还是给印度带来了很多机会。相对于印度大多数的“智力”外包,中国更多的是“劳动力”的外包。富士康之类 的公司在支撑着中国的对外出口。

很有意思,在印度大学生毕业了去的都是软件外包企业;在中国大学生很多去了富士康这样的企业(刚刚有个大四的朋友签了类似于富士康的一个企业)。如 果从我原来作为软件从业人员的观点来看,软件外包简直就是扼杀人的毒药,因为外包对于从业人员来说纯粹就是毫无意义机械性的重复,会毁了这个行业的创新能 力;但是对于国家来说外包确实能赚钱的不二法门。

2006年12月5日星期二

思考之前首先看看自己的位置

以前跟人讨论房价问题的时候总是痛击开发商的良心,怎么TMD房价那么贵?! 其实自己忘了自己在讨论的时候是把自己的利益放在讨论问题的前提之上的。因为自己还没有房子,所以当然希望房价能够越低越好,最好一天一个跌停才好哪,自 然自己很正常就成为了“泡沫论”的坚定支持者,当然买过房子的人自然反对我的观点,认为楼市才刚刚开始。一旦问题与你自身的利益关系很大的话你的思考就不 是那么理智了。

人一旦不理智的时候就是容易判断出现错误。比如说楼市是不是有泡沫。现在的楼市是肯定有泡沫的,不过这个泡沫到底到什么时候结束?可能是三年之后, 也可能是五年十年之后。所以,现在就大喊楼市要崩盘的人太冲动,高唱楼市大涨的人也很冲动。像现在有个朋友马上就要结婚了,当然要买房子,然后我是不是就 应当对人家说“别买了,到时候房价跌下来套牢你们一辈子!”有用吗?婚是一定要结的,房子也是一定要买的,所以现在没有办法,只能这样硬撑着,谁让这是刚 性需求哪。

比如我要买房子了,可能买房之前我是坚决认为房价太高;但是一旦我付了首付买了房子,我就可能变成了坚定的支持派。推而广之,现在的中国是不是“狄 更斯时代”?是不是大部分沿海地区的工厂都是“血汗工厂”?这就要仁者见仁了,关键是要看你站在那个立场上,你自己的思考这件事情的时候的位置了。