程序员的独立思考能力
sum_z 2003-02-24 10:23:48 程序员的独立思考能力
以前和现在的学校中,学生们往往被告知学习后将全部成为合格的接班人。通过排斥、隐瞒、丑化任何非接班人所需要的东西,教育获得了极大的成功(至少是从它的出发点来看)。我们也都是从学校里走出来的,虽然脱离了学校,但是又无时无刻不被学校留给我们的思维方式所左右,习惯性的接受权威的思想,很多人忘记了自己与生俱来的思辨能力。。
让我们来看两段网上常见的话:
其一:不懂…(一般是指系统分析),你就只能永远是个程序员!
这是典型的“万般皆下品,唯有分析高”论调。这句话通常是技术论坛中的大哥级人物的杀手锏,大有此言一出谁与争锋之势。这话反反复复的听人说,好象已经变成了真理,大家床头放的书一下子都从unp变成了软件需求。具体的理由大概可以归纳如下:
# 分析员挣的多
# 分析员是白领,程序员是蓝领
# 迟早要走分析员这条路
蛮有道理,不是吗?为了向更高层次发展,为什么不尝试一下呢?可是现实是什么样子的呢?你所在的开发团队目前是否迫切需要一个系统分析员?用系统分析员作为关键字到招聘的网站上去查一查,有多少公司在虚席以待?这是现实需求角度的问题,还有我们可以从现在国内软件公司的现状再来分析,是否有了一个系统分析员后,就可以让开发团队脱离目前的窘境?是否现有的系统分析员在做外行指导内行的事(不懂具体业务,或者不懂具体的技术问题)?一个即使是称职的系统分析员对公司在技术方面的决策以及对团队中的程序员又有多大的影响力度?
从人力资源的需求角度来说,我所在的几个公司都没有对系统分析员的强烈需求,一般公司很少会从外面找项目经理及以上的技术人员,培养自己的人(提升常作为对技术人员的一种认可或者奖励)不是更好么?如果要从外面找这样的人,最关键的还是看应聘者对本公司业务领域的熟悉程度,一个做金融领域的公司,干什么非要找个做电子政务的“高手”来分析?
从系统分析员在软件公司的作用来说,现在国内软件公司的问题是一个综合问题,系统工程,远非换一两个零件就可以解决的。一个优秀的系统分析员在一个乱烘烘的公司,作用未必比一个优秀的程序员大。
从个人提升的角度来说,如果你希望通过走程序员-系统分析员-项目经理-部门经理-CTO这样的路,那么我劝你还是要慎重。首先,如果希望当官,当初就不应该跑来设计程序,干别的当上的官比写程序当上的官可爽多了。其次,迫不得已,已经走上这条路了,也用不着费尽心思妄图通过个人的技术提升(包括在分析、设计方面的提升)做出一两个漂亮的项目来博得上司青睐。这基本上也是不现实的,因为在大多数公司中,阻碍项目的都是你所不能控制的问题,即使你是CTO,什么O都没用。你得想别的办法,又能当上官,又不负责任,挣钱又多。你别笑,这样的人不是没有,而是很多,但人家都不是走你想象的那条路的。
我的意思并非因为有大哥贬低程序员而我就要贬低分析员,只是提醒大家如果再有大哥说鄙夷程序员的话,我想每个人是否都应该想一想,不一定是想想我这里的话,而是用自己的方式去考虑一下?
这还关系到另外一个话题,就是很多媒体鼓吹的蓝领程序员的事,这里就不批驳他们了,有机会再说。
现在再来说说第二个常见论调:“一定要有面向对象的思想”。言必称面向对象,也是现在比较流行的。这个实在不值一哂,在Unix世界里,一直是C一统天下。谁又能说Unix因此而不优秀呢?在没有面向对象的“黑暗”年代,人们一样在软件领域创造出无数辉煌。怎么现在又突然变的没有面向对象地球就不转了呢?举个简单的例子,电信领域的操作支撑系统(OSS),是有几十年历史的系统,在这个系统的需求下,还曾催生了诸如IPC这样伟大的技术。多少年来不知道全世界有多少OSS在跑,但有多少用是面向对象来解决业务领域问题的呢?Internet上成千上万的服务器程序,又有多少是面向对象技术的成果呢?
我不否认面向对象技术所取得的巨大成功,但是我们是否一定要跟风?现在新技术很多,我们是否也必须要每阵风来了都哆嗦哆嗦?计算机领域,甚至只是软件领域,分支学科也非常多,为什么一定要厚此薄彼呢?为什么遇到问题都要祭出“面向对象”来拉大旗做虎皮呢?
我所说的不一定有道理,只是希望借这两个问题来给日益浮躁的软件行业同行降降温,给忽略了自己的思考能力的朋友们提个醒。
张笑猛
2003-2