由扁鹊三兄弟谈软件人才
10年前偶看扁鹊治病的古典故事,突然联想到自己的工作,当时正在为系统遗留下来的bug发愁,我问自己我到底是要做一个救火英雄,下了火线受人追捧;还是做一个无名英雄,不让系统风吹草动。
魏文王问名医扁鹊说:'你们家兄弟三人,都精与医术,到底哪一位最好呢?'
扁鹊答说:'长兄最好,中兄次之,我最差。'
文王再问:'那么为什么你最出名呢?'
扁鹊答说:'我长兄治病,是治病于病情发作之前。由于一般人不知道他事先能铲除病因,所以他的名气无法传出去,只有我们家的人才知道。我中兄治病,是治病于病情处起之时。一般人以为他只能治轻微的小病,所以他的名气度只及于本乡里。而我扁鹊治病,是治病于病情严重之时。一般人都看到我在经脉上穿针管来放血,在皮肤上熬药等大手术,所以以为我的医术高明,名气因此响遍全国。'
这则故事形象地说出了中医追求的最高境界'治未病',所谓'上医医未病之病,中医医欲起之病,下医医已病之病'。这个故事也引起了我的两个思考:
1、 怎样在根源上去消除问题,做到'治未病'
2、 作为软件开发者,我们是做上医,还是中医,甚至是庸医。
在软件团队中,每个人都有每个人的角色,每个人都有着不同的思考方式和解决问题的方法。像故事中描述的一样,我们看待软件人才也会存在着误解。我们经常会看到一些救火队员,他们常年游走在救火第一线上,解决了一个又一个棘手的问题,这些人在用户眼里都是牛人,拿着高薪解决问题的能手。然而一些设计人员和优秀的开发人员只能在幕后默默的工作,而被人们所忽视。这也是为什么国内很多的软件公司轻架构设计重实施的原因。我一直在思考,为什么我们的系统会出现这么多的问题?为什么我们对解决问题乐此不疲享受别人的无限瞻仰?解决问题最好的方式是什么?
也许我们都希望像扁鹊一样名声在外,享受着崇高的待遇,都不希望像他哥哥一样成为幕后的英雄,于是我们大家都争当在出现问题时显示自己的才华和寻求别人的赞扬。如果我们把焦点都集中在善后工作上,这就是为什么系统会出现很多问题的原因。我们都是为解决问题而生,但是我们又该怎样去解决问题呢?诚然,我们不能缺少这样高质量的救火队员,他们一次次的在危难关头给我们挽回了损失,但是古语说得好,'防患于未然',它告诉我们,解决问题最好的方式是在根源上消除问题,我们更需要这样的人,他们虽然不能像扁鹊一样风光无限,但是他们确实是英雄,是为我们节源减流的无名英雄。
回到题目,我们讨论什么是软件人才?
首先我们必须要做好下医,治病救人这是医生的责任,而我们也是,系统出现问题是我们的责任,消除这些问题更是我们的义务。做好本职工作,解决出现的问题,这是软件人才最基本的要求。如果一个软件开发者不能很好的解决出现的问题,我们又何谈人才。如果在解决问题的过程中,我们不能运用正确的方法,我们又和庸医有什么不同呢。所以作为一个合格的软件人才,就要不当庸医,去快速的,行之有效的解决问题。通往罗马的道路有很多条,优秀的人才应该找到一条最便捷、平坦的道路。这就要求我们去触类旁通,学习更多的知识,在解决问题的同时,要避免在一个坑里栽倒两次,提供一套完整的,长期有效的解决方案。
我回到家看见乱糟糟的屋子,视而不见,没有不舒服的感觉。但是我妈却不行,看见我乱七八糟的房间,就眉头一皱,忍不住开始打扫。在软件开发中,一个更加优秀的软件人才会主动的发现问题,并主动解决问题。在小问题还没有变成大问题的时候就主动解决掉,这就是中医上说的:'中医医欲起之病',否则当问题扩散开来,将为时晚矣。在欲起之病之时解决问题,更需要我们考虑该问题所带来的延展性的问题,而不是仅仅聚焦一个点,这是一个层面上的问题。同时,此时的问题是预见性的问题,既然我们已经知道问题所在,我们除了提供完整的解决方案外,我们更要注重我们开发的质量,以一种高度责任感去开发,从代码规范,代码的质量,思考的深度,技术的合理运用上去下功夫。这一层次上,我们应该努力做一个优秀的开发人员,精进我们的技术,提升我们的思想,将问题扼杀在摇篮之中。
上面说过我的观点:解决问题最好的方式就是在根源上消除问题。这就是所谓的'上医医未病之病'。如果说解决问题是一种义务,发现问题是一种责任,那么思考怎样避免问题则是一种品德。最优秀的软件人才应该是一个品格高尚的人,这种品德表现在他利用自己多付出的努力来减轻其他人的工作,来降低系统的风险。如果将'下医'比作系统实施人员和维护人员,将'中医'比作优秀的软件开发人员的话,那么'上医'则是优秀的系统架构设计人员。一个好的架构和设计是杜绝问题的根源,一个好的架构师和设计师也应该是软件开发团队的灵魂。为什么我要强调设计,包括业内都是推崇重设计,轻实现。设计阶段就像房屋的根基,如果根基不好,我们在上层做再多的工作也不能从根本上解决问题,最后很有可能形成一个烂尾房。问题在开发之初到开发结束这个过程中,是无限放大的,之初的一个小小的问题都会导致项目的失败。我们不可能人人都去做设计架构人员,但是如果我们有意向这方向发展或者已经从事这方面的工作,首先要怀有一个高度责任感的态度去工作,讲问题限制在胚胎之中。这就要求我们不仅仅是发现问题,而是积极的预见问题,站的更高,看的更远,将未来之事呈现在脑海之中,从而思索改变未来的解决方案。优秀的设计人员不应该过分的关注细节,而是规划一个未来,描绘一个蓝图,像扫雷游戏一样,在可能的雷区插上红旗,而不是身先士卒的奋战在排雷第一线。'治未病'是每个软件架构设计人员必须铭记在心的准则。
在一个软件团队中,我们不能完全要求每个人都是孙悟空,这样的团队无法取得真经,我们也不能都像猪八戒一样好吃懒做,这样的团队都没有上路的可能,我们需要的是一个和谐的团队,一个优化配置的发动机。在这个团队中,扁鹊三兄弟都是我们需要的人才,缺一不可,我们需要合理的使用。作为软件开发者,我们怎样才能成为合格的人才我总结了三句话:完成自己的义务,增强我们的责任,升华我们的品德。在做好本职工作的基础上,不断的学习提高,以团队目标为重,不计个人得失,享受成长的过程,体会成功的快乐。
2009年9月2日
作者简介: