星期六, 十二月 31, 2005

我是穷人,我还有理想

我很穷,上班要蹬车,好不容易混上辆电动自行车,最近还坏了。
我有理想,虽然听起来很缥缈,它激励着我,让我在为了不迟到而猛蹬车最后腿都麻木的时候还能在打完卡之后自信地坐在自己的座位上。我想做一些事情。钱,够活就成,我只希望环境不要逼我为了活计而对理想打折。可是现在看来,连做一点实在的事情看起来都很困难。一封email,让我觉得我的2006年一瞬间虚无起来,又重新充满了各种各样的不确定。
从家到公司的路很特别,像是精心设计过似的,能让我看到很多。
上班的路总是很挤,车水马龙,一些自行车道旁边总是树着“禁止停车”的牌子,但在和平保育院附近的路段,接送孩子们的父母们总是会不约而同地忽略这些牌子。总是有天真的孩子从高档的轿车里面兴奋地钻出来,每当看到这样的情形,我的感受都很复杂。这个年代,有人为了生计去挖煤,就算死在煤井里也不会有人用生命去偿还,还有人是真的做到了笑贫不笑娼。这些孩子从出生就比大部分孩子优越,吃好喝好,上学放学也都是专车,他们应该不会知道有的地方的人只是听说过汽车这么个东西。
看得多了就觉得很反感,而且这些父母的车把本来不该他们行驶的很窄的非机动车车道搞得很难走,于是我只好提前几个路口拐弯。
拐弯后的那条路上集中坐落了很多机关单位,路修得很美,路边的建筑看上去很威严。就在这些威严的建筑的对面,我看到总有一两个人,手中拿着写有诸如“申冤”、“冤枉”之类的字牌,举好了站在路边。现在是冬天了,瑟瑟的冷风,卷起路边枫树的落叶,看起来和字牌的内容很搭调。
每天上班我都庆幸我能看到这些,庆幸我还能意识到这些的存在,起码证明我没有麻木。
回家的路上会路过一些看上去氛围很暧昧的日本料理店,路边都是停着各种的高档轿车,有时可以看到美貌的女人跟着男人钻进这些车里的某一辆。霓虹灯红红绿绿的,香车,美女。我还得注意着别让那团散发着酒气的尾气熏到。
有时在家因为看不惯一些事情而破口大骂时,爸妈总是会说,现在说话总是没意义的,对那些人而言我的话连个屁都不如,闻到屁人家还要皱一皱眉头。所以要想让自己的话让更多的人听到,至少要自己有地位了再说。
地位怎么得到?钱?权?名声?权是没戏了,名声也不可能一夜暴发,只有钱,还可能奢望。
问题是,我能不能保证,当我得到这些时,我还会不会像现在一样一尘不染?

星期日, 十二月 25, 2005

从“软件蓝领”想到的

在我看来员工与公司之间总存在着一些不可调和的矛盾,按说是应该一同同舟共济的,可有的时候就是…比如如果公司让你放弃你的完美主义,你会不会乖乖地听话,然后去做一些以往很不齿的类似体力劳动的工作呢?
“软件蓝领”这个概念已经不是新生事物了,它刚刚出现的时候我只感觉是一种玩笑,这种技术密集型的产业怎么可能出现蓝领。在我的印象里,某某大牛对一些需要具备“蓝领精神”才能完成的工作感觉到厌烦后,一种很牛的技术或框架或语言随即应运而生,而不像某些人宣称的那样,派一个听话的软件蓝领过去像机器人一样按最平淡无奇最白开水最没技术含量的方法做出来。但是现在这软件蓝领的概念倒是搞得很热闹,俨然像在说中国软件之所以发展不起来完全是因为没有基础性的软件蓝领“人才”似的。
Perl,PHP,Java的出现无一不是因为其作者觉得有必要开发一门语言来解决那些他每天都要与之打交道的烦人的问题,那些支持软件蓝领说的人们不觉得自己观点的苍白么?
很多软件公司比较支持软件蓝领这样的概念,也难怪,从一个管理者的角度来看,如果手下人的表现比较一致,至少比较稳定,他才有可能按照一定的规律预测公司的运作情况,否则如果这个月产值超额下个月又萎缩,我想大部分管理者是没工夫去下到底层考察一下为什么会出现这样的情况,而是终日惶惶不安,然后正巧听到了软件蓝领这种概念,恨不得大笔一挥,把手下的白色领子刷成蓝色。另外,软件蓝领们的工资显然要低一些——都承认自己是蓝领了,还好意思漫天要价么?所以这个概念受到很多人的欢迎,一方面软件公司的老总们很高兴,仿佛软件人如果都是蓝领,软件生产也可以进入工业化时代,可以对生产量进行预测和规划了似的;另一方面,呵呵,鼓吹蓝领概念的机构很大一部分都是培训机构,软件蓝领的概念无疑意味着从业者门槛的降低,来培训的人就更多了,多得让人足以怀疑这些人鼓吹软件蓝领概念的初衷。
很多人虽然不赞成软件蓝领,但在平时开发时却总是有意无意地做蓝领才做的事情,比如宁可copy-paste也不去extract method,宁可繁衍出很多相似的类也不愿意做抽象,所有这些鲁莽的行为虽然看起来很笨拙,但却确实可以达到目的,把个应用像模像样地搞出来。诚然,这种笨拙的方法可以解决问题,而且看上去很直接,不用费任何工夫去做额外的工作,所以有人冠以“实用主义”的名号。很多公司存在外行领导内行的现象,领导们在下属可以按时完成工作的情况下自然也不会去做code review,谁不想活得容易些呢,他们只是希望deadline到来的时候自己可以毫无顾虑地把手下人的工作交给上司,然后喘口大气冲一杯咖啡,而对手下人到底如何完成工作的,大部分领导们才懒得去管。
记得微软刚推出.Net没多久(那时我还在学习C#,我着手学习.Net的时间还算比较早),很多人都为使用VS.Net+C#/VB.Net所带来的开发效率(不如说是开发速度)所沾沾自喜,有的人说他们公司的所有项目组里就数使用Java的组最拖沓。当时回复这个话题的人群里面有很多Javaers,他们反击的主要观点就是.Net开发群体普遍只顾RAD而不重视设计的这个事实(.Net Framework 1.x整体上就已经不顾设计单纯封装底层API了,也难免Javaers们对.Net开发者对待设计的态度上做出同样的置疑),我记得又有个人说,“我只在乎能按时完成,不在乎通过什么途径,作为一个员工难道不该为公司着想,尽快完成工作吗?”——大意如此。
“为公司着想,尽快完成工作”,听起来多么让人感动,公司的老总们,有这样的员工为您们卖命,夫复何求?这样实用主义至上的想法,是不是真的可以尽快完成工作还难以取证,我想说的是,一个公司如果只是追求实用主义是难以发展的。很多开发者实际上在初学开发以后都是完美主义者,都想做一些努力让自己的代码更漂亮,让自己的应用运行起来更畅快更高效,不幸的是很多人的完美主义都被逐渐地磨损逐渐地消耗殆尽,转而投向“实用主义”,更不幸的是我发觉很多这样那样的“实用主义”其实只是“蓝领主义”罢了,都不过是在公司的影响下衍生出的一种对代码不负责的态度。在这样的主义的影响下,开发者真的像蓝领一样,眼中只有任务而没有代码,与进度赛跑,与deadline单挑成了开发工作的全部,让我真的很难想像这种态度能够帮助造成什么样子的代码。
完美主义与实用主义真的格格不入么?换句话说,完美主义就一定不实用么?
首先很多人认为崇尚完美主义的人总是会浪费开发时间,拖延开发进度,我说这种说法真是对不起古人,对不起人家Nk年以前就知道的道理:“磨刀不误砍柴功”、“工欲善其事,必先利其器”。我们既然承认开发的先期设计的重要,就是已经承认了完美主义,但同时又对先期设计之后的设计过分地曲解,认为没有必要,认为会拖延进度,好像只要再动一动脑筋就肯定会拖别人的后腿一样。在这样的想法的左右下,不知道多少的代码段被copy了然后paste到其他地方而埋下隐患,不知道多少可以抽离出来形成类的逻辑被死死地塞到一段代码的上下文中,不知道多少相似的业务逻辑实现了一遍又一遍,更不知道多少人被枯燥的活动磨灭了创造的动力。如果对于公司而言,只有经济损失能算作损失的话,这些损失当然可以忽略不计了。
其次,完美主义肯定不会是华而不实的。看看我们每天在用的框架和库,哪一个不是那些作者们追求完美的结果?为什么我们就不能完美主义一下,把常见的逻辑抽离出来,形成自己的技术积累或者业务积累呢?OO专家们总在谈重用,CMM等级评价也把重用放在很重要的位置,于名于利,重用总是重要的,如果追求所谓的实用,使得重用变成一遍一遍的重复,那无异于把OO的价值降到最低了。
软件蓝领与其说是软件的一种出路,不如说是一种阴谋。工作的时候站起来伸一下懒腰,你可以看到周围其实有很多蓝领,严格地审视自己的代码,更会发现有时自己也表现得像个蓝领,所以,咱们的软件业实际上不缺蓝领,缺少软件蓝领的只是那些培训机构罢了。
胡乱地说了很多,我承认,在行文叙事这方面,自从高中毕业我就彻底沦为蓝领了…

星期六, 十二月 24, 2005

Model 1?Model 2?Model N?还是去他妈的Model?

我知道我知道,Model 2代表的开发搞起来总是感觉那么费事儿,无论经典事儿妈Struts,天才的作业WebWork,还是组件组建的Tapestry,再加上EJB大叔或者Hibernate、JDO,我为什么必须遵守这些婆婆妈妈的框架定的那套routine?为什么搞一大堆xml或者其他什么东西,才能请得动这些大仙们为我的webapp显一显灵,即使我的webapp简单得让人不好意思拿出来?
为什么?说得铜臭一些,为了降低维护成本。是,您水平很高,从js、jsp、Action到业务逻辑、持久层大小通吃,但这并不是规范的过程,因为没有任何团队协作在里面,在这种环境下大可把什么Model都忘了,咱一个jsp甚至一个servlet全搞定。为什么要分层开发?废话,不把jsp提出来,美工怎么设计?不把Action提出来,页面流、控制流所体现的用例怎么才能成真?不把业务逻辑分离出来…难道做这么个webapp是为了拿来看的?分层开发不是老一辈们总结出来为了被人们当作屁话的,我们都有体会,一个框架、库之类的东西,分层越细致,定制越方便,用起来也就更灵活,当然这都是在分层没有细到让人想砸键盘扔显示器的前提下,相比之下定制每一层的工作量趋于不变,而且定制一次以后很可能不需要再次定制——是,确实,写Java代码照样可以完成定制的任务,不过同样都是一套套的routine,我不觉得写Java类就比写xml、properties文件高明多少,至少,Java类改动了还得麻烦您编译呢。
那些都是公司的事,对,我们打工的也懒得理,现在我就想快速完成任务,难道这样的想法错了么?没错,但是正如一个前辈同事说的,工作永远是做不完的。更多的任务不在最初的开发甚至原型开发阶段,而是在维护,对,又说到了维护。维护不是说不停地patch,也包括应付后期更多的需求更多的变更,而且维护的工作很可能不是由大牛您完成的,所以,不管分层然后敲出来那样好像泞成一锅糨糊似的代码…至少我见过的接手其他人工作的人们没有一个赞叹其前人的代码的优良的,鸡蛋挑骨头是人的天性。但是,HOWEVER,当然也不能因此就破罐破摔:乱就乱呗,反正怎么着也没人说好。老一代的程序员也说过,代码是程序员之间交流的语言,工整、注释得当的代码是作者对阅读其代码的人的尊重。是啊,代码都成了语言了,乱七八糟的代码不就跟乱七八糟的话一样,相当于骂人么?而且,就算这段代码一直由您维护,如果您一年没见它的面儿了,您还保证得了您看得懂自己原先天马行空不拘一格的作品么?拿Perl举个例子,这是以混乱出名的语言,很多人对其以前写的perl script都已经是很头大了,看不懂,这咋整,自己都看不明白了…
所以,任何时候也不要沾沾自喜于别人看不懂自己的代码,也许人家骂骂咧咧之余已经不想去看了…
自勉。

星期三, 十二月 21, 2005

专家

要想出头,当个专家是必须的,而前面无非是这么几种选择:技术专家,产品专家,和业务专家(不知道可不可以叫领域专家,貌似很多地方对领域专家的定义很模糊,有参与开发的也有不参与开发的)。
技术专家是我一直梦想成为的角色,在大家对某个问题焦头烂额时这个人一出现往往就意味着问题即将不是问题了,很cool的角色,uh?想当这么个牛人,每天跟踪技术是必需的了,我每天倒都会花很多时间在这上面,自然,还要看那些开源疯子的代码,然后自己生成一些东西来试验,跟踪调试等等。做这样的专家肯定是最爽的,因为面对的东西都是很客观的东西,1就是1,0就是0,不像跟人打交道似的。
产品专家也不错,尤其是商业产品的专家。乍一看上去这样的专家好像没什么意思,不就是用某种产品用得多么——恩,只到这个水平的人我一般称之为Power User成为产品专家的人一要对这个产品的安装、使用、设置、除错等等了如指掌了,而且对不同版本之间的兼容性也要了如指掌,甚至对构建在这个产品之上的一些扩展或者其他产品也要了解,etc.。大型商业产品的专家是需要一定环境的,比如Oracle,WebSphere家族,Lotus Notes等等,这些东西没有一定的运行环境的话都很难看清楚人家长什么样子,哪里还谈得上混个专家当当。现在好像DBA们特别值钱,大概就是因为DBMS可能是最难用顺的东西了吧,细节太多,内涵很庞大,外延也是绵延不绝…
业务专家这个角色我认为是技术和业务的枢纽人物,他们肯定了解业务的各个方面,同时技术也说得过去,没有他们的话项目当然也可能完成,但有他们在的话他们所发挥的作用一定很惊人。
废这么话主要是因为一个刚认识不到一个月的同事离职了,去做工作流相关的事情了。这对公司来说不能不算是个损失,因为一些琐事吓走了可能为公司带来收益的人。我也不知道做工作流是算做技术还是做业务,也许算是技术与业务的桥梁?技术专家与产品专家所要面对的都是很客观的东西,而业务专家则不一定,所以,暂时我不会希望做个业务专家,把每一天消耗在去跟形形色色的什么什么打交道的破事儿上,而且业务总是多变的,有些变化与其说是变化不如说是扯淡。再者我认定和越多的人打交道,知道的事情越多,就越会看到社会的黑暗,而这些黑暗我已经看得够多了,不想再看了而已。

星期日, 十二月 18, 2005

JibJab - 2-0-5 Year In Review

扯得让人受不了…歌词如下:

With hurricanes and terrorists,
It's been hard to just get by.
Here's hopin' the year 2-0-6,
Turns out better than 2-0-5!

Well, Kim Jong is throwin' fits,
And the shuttle's on the fritz,
There's an intifada brewin' in the Gaza Strip.
Oh, the deficit's a risin',
Half a' Europ hates my guts,
And industrial America is goin' bankrupt!

There is a great sense of urgency!
We've got to squash the insurgency!
My approval rating's in a dive!
I hope it's not another year like 2-0-5!

Oh, a leak investigation's
Got my White House in a snarl,
There's a special prosecutor
After my friend Karl.
And our energy dependency
Has put me in a bind.
Ah, don't worry about Alaska
It'll be just fine!

My appointee was a big flop.
The housing market is 'bout to pop!
"With record profits at the pump,"
"I drive an SUV and take it in the rump!"

"All of our jobs, gone overseas!"
"Each week I make one dollar seventy-three!"
From Katrina, FEMA, GITMO, too!
The last thing I need now is the Avian Flu!

'Cuz every problem in the world,
Lands right here on my desk!
I tried to get to Crawford,
Even there couldn't get no rest.

From pirates in Somalia,
To that nut job in Iran!
It's hard to rule the free world,But I'm doin' the best I can!

With same sex marriage,
Stem cells,
Scooter Libby,
Tom DeLay!

Here's hopin' the year 2-0-6,
Brings a few more brighter days!
-------------------THE END-------------------

ED2K链接:ed2k://fileJibJab%20-%202-0-5%20Year%20In%
20Review.wmv8762994A60E4500C9A5F78921B316461B2800
ECh=IB4TSGVHTYBKCA2XLL3CYBXVCMLRGTRQ/

晒太阳

这几天用的MSN昵称让我感觉听起来很解气:去他大爷的,谁他大爷的愿意当他大爷的软件蓝领谁他大爷的当去,别他大爷的拽着我~
我不崇拜跳来跳去的人,不求跳一次让薪资上浮几倍,当然也不追求因此带来的安逸,我只希望,在能养活我自己的薪水水平上,老大您给我一个安静的环境充裕的时间,当然还有牛X的机器和带宽,让我在干活时有机会好好看看那些开源疯子们的代码。
家里的小狗在晒太阳,用很懒散的眼神在屋里瞟来瞟去,我想去陪陪它,在太阳下发会儿呆。