程序员的独立思考能力

sum_z 2003-02-24 10:23:48
程序员的独立思考能力

以前和现在的学校中,学生们往往被告知学习后将全部成为合格的接班人。通过排斥、隐瞒、丑化任何非接班人所需要的东西,教育获得了极大的成功(至少是从它的出发点来看)。我们也都是从学校里走出来的,虽然脱离了学校,但是又无时无刻不被学校留给我们的思维方式所左右,习惯性的接受权威的思想,很多人忘记了自己与生俱来的思辨能力。。

让我们来看两段网上常见的话:
其一:不懂…(一般是指系统分析),你就只能永远是个程序员!
这是典型的“万般皆下品,唯有分析高”论调。这句话通常是技术论坛中的大哥级人物的杀手锏,大有此言一出谁与争锋之势。这话反反复复的听人说,好象已经变成了真理,大家床头放的书一下子都从unp变成了软件需求。具体的理由大概可以归纳如下:
# 分析员挣的多
# 分析员是白领,程序员是蓝领
# 迟早要走分析员这条路

蛮有道理,不是吗?为了向更高层次发展,为什么不尝试一下呢?可是现实是什么样子的呢?你所在的开发团队目前是否迫切需要一个系统分析员?用系统分析员作为关键字到招聘的网站上去查一查,有多少公司在虚席以待?这是现实需求角度的问题,还有我们可以从现在国内软件公司的现状再来分析,是否有了一个系统分析员后,就可以让开发团队脱离目前的窘境?是否现有的系统分析员在做外行指导内行的事(不懂具体业务,或者不懂具体的技术问题)?一个即使是称职的系统分析员对公司在技术方面的决策以及对团队中的程序员又有多大的影响力度?

从人力资源的需求角度来说,我所在的几个公司都没有对系统分析员的强烈需求,一般公司很少会从外面找项目经理及以上的技术人员,培养自己的人(提升常作为对技术人员的一种认可或者奖励)不是更好么?如果要从外面找这样的人,最关键的还是看应聘者对本公司业务领域的熟悉程度,一个做金融领域的公司,干什么非要找个做电子政务的“高手”来分析?

从系统分析员在软件公司的作用来说,现在国内软件公司的问题是一个综合问题,系统工程,远非换一两个零件就可以解决的。一个优秀的系统分析员在一个乱烘烘的公司,作用未必比一个优秀的程序员大。

从个人提升的角度来说,如果你希望通过走程序员-系统分析员-项目经理-部门经理-CTO这样的路,那么我劝你还是要慎重。首先,如果希望当官,当初就不应该跑来设计程序,干别的当上的官比写程序当上的官可爽多了。其次,迫不得已,已经走上这条路了,也用不着费尽心思妄图通过个人的技术提升(包括在分析、设计方面的提升)做出一两个漂亮的项目来博得上司青睐。这基本上也是不现实的,因为在大多数公司中,阻碍项目的都是你所不能控制的问题,即使你是CTO,什么O都没用。你得想别的办法,又能当上官,又不负责任,挣钱又多。你别笑,这样的人不是没有,而是很多,但人家都不是走你想象的那条路的。

我的意思并非因为有大哥贬低程序员而我就要贬低分析员,只是提醒大家如果再有大哥说鄙夷程序员的话,我想每个人是否都应该想一想,不一定是想想我这里的话,而是用自己的方式去考虑一下?

这还关系到另外一个话题,就是很多媒体鼓吹的蓝领程序员的事,这里就不批驳他们了,有机会再说。

现在再来说说第二个常见论调:“一定要有面向对象的思想”。言必称面向对象,也是现在比较流行的。这个实在不值一哂,在Unix世界里,一直是C一统天下。谁又能说Unix因此而不优秀呢?在没有面向对象的“黑暗”年代,人们一样在软件领域创造出无数辉煌。怎么现在又突然变的没有面向对象地球就不转了呢?举个简单的例子,电信领域的操作支撑系统(OSS),是有几十年历史的系统,在这个系统的需求下,还曾催生了诸如IPC这样伟大的技术。多少年来不知道全世界有多少OSS在跑,但有多少用是面向对象来解决业务领域问题的呢?Internet上成千上万的服务器程序,又有多少是面向对象技术的成果呢?

我不否认面向对象技术所取得的巨大成功,但是我们是否一定要跟风?现在新技术很多,我们是否也必须要每阵风来了都哆嗦哆嗦?计算机领域,甚至只是软件领域,分支学科也非常多,为什么一定要厚此薄彼呢?为什么遇到问题都要祭出“面向对象”来拉大旗做虎皮呢?


我所说的不一定有道理,只是希望借这两个问题来给日益浮躁的软件行业同行降降温,给忽略了自己的思考能力的朋友们提个醒。

张笑猛
2003-2
...全文
81 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
newdongkui 2003-02-25
  • 打赏
  • 举报
回复
个人意见:
系统分析 相对程序员来说担负更多责任,经验要求更多,职业素养要求更高,理所当然,需要精英,并且给予令人惊讶的待遇.
但是程序员和系统分析从事关键工作的同样是分析和抽象,只不过系统分析更概括、影响更大,也更为关键。
项目经理 多从事的是人和项目本身的工作,是管理工作。同样是脑力工作,但和前二者不同。
程序员的发展,因个人能力和性格不同:我觉得标准的路线是 程序员->系统分析->CTO
catmike 2003-02-25
  • 打赏
  • 举报
回复
二者说的都有一些道理,我也赞成楼主所说的做程序员的前提是你首先不是为了钱和利,而是因为我喜欢这职业.否则你在这条路是走不远的.
yestoall 2003-02-25
  • 打赏
  • 举报
回复
对于Jinq0123(金庆) 的意见:
1、严重同意!
2、再次严重同意!
3、没有什么纯正的东西,不可能把面向对象和面向过程绝对分割,在框架上是要求遵循面向对象,但在内部函数或者方法上,不能摆脱面向过程的约束。
sum_z 2003-02-25
  • 打赏
  • 举报
回复
Jinq0123(金庆):
您所列的几个问题中,有哪些是从书上看来的,有哪些是听别人讲的,有哪些是自己实践并思考得到的呢?
Jinq0123 2003-02-25
  • 打赏
  • 举报
回复
1.即使程序员不作需求分析,同样要有需求分析的概念。除了系统分析员和程序员,项目经理和用户代表都有必要进行需求分析的培训。
2.管理和技术是两条不同路线,一个高级系统分析员一般不会成为项目经理。
3.面向对象是一种分析方法,而不是某种编程语言。在纯C的世界如Linux内核,同样有面向对象的思想,请见众多的函数指针。
sum_z 2003-02-25
  • 打赏
  • 举报
回复
我在文中一再提及本文并非是为了贬低系统分析员而做,请不要误解。

一些观点也许不对,但是我要说的是,作为一个程序员,不一定非要走分析(或者项目经理或者什么别的被人追捧的职位)这条路,自己适合什么工作应该结合自身情况冷静分析,不能跟风。

谢谢你的分析,给了我一些启发。
sum_z 2003-02-25
  • 打赏
  • 举报
回复
w102272(Wonder):
我原来很担心发了帖子之后变成骂架,因为刚到csdn来大概有1个月吧(注册倒是有两年了,不过从来没上来过)不了解这的风气。但是看到了大家的回贴,我非常欣慰,觉得以后应该多来跟大家学些东西。

我本意也是不应该千篇一律,千军万马过独木桥,每个人应该有自己的定位,不应该跟风。楼上有朋友说:不走系统分析的路,还有其它路可走吗?我觉得:就做一个程序员不好么?计算机软件分支学科非常多,哪个学科上面积累出一定的经验都是“值钱”的。而且国内软件行业这么落后(没有的东西太多了,很多方面也仅仅是刚刚起步),实际是大有可为的。举例来说,我有个朋友在方正,按说方正排版应该算是国内顶尖的吧?但跟日本NEC等大公司(据说这些公司什么都做,十分恐怖)10年前的同类产品相比,还是有很大差距的,只不过国内吹的凶,外国公司又无法进入这个市场罢了。

感谢上面所有朋友的关注,都散点儿分儿吧:)
w102272 2003-02-25
  • 打赏
  • 举报
回复
To sum_z(网络阅读机) :
不同的人有不同的路。lynxliu希望搞研究作纯IT,我认为应“深入行业”。
这涉及到一个个人定位的问题。并没有绝对的对错,只有对某个个人来说,适合不适合,
有没有足够的毅力坚持到成功出现。

我很同意LYNX上面关于程序员的评论。其实广义的说,任何人都需要定位。也需要找出路。
有独立思考能力,就能少走一些弯路。
从发展上来说,程序员不是终止,系统分析员不是终止,领域专家不是终止,CTO也不是。

CSDN上有些观点过于吵闹,其实任何事情都应该多方面看待,自有定论。
不被这些嘈杂的声音干扰,本身就是独立思考。


aliangshaohua 2003-02-25
  • 打赏
  • 举报
回复
受益非浅
w102272 2003-02-25
  • 打赏
  • 举报
回复
所在的开发团队当然需要系统分析员。
你描述的问题根源何在?下面几种可能性。

1. 缺乏CTO
首先你们缺乏的不是一个优秀的系统分析员,而是一个优秀的CTO。
所以你们公司的产品和项目缺乏头绪,缺乏体系思考,缺乏战略方向。
不要把这个问题怪到系统分析员头上。他不是万能的,他也不是最后的老大。

2. 角色重合。
CTO,项目经理,领域专家,系统分析员本来就侧重在不同的方向上。
整体缺乏人才,当然效果就不明显。

“一个做金融领域的公司,干什么非要找个做电子政务的“高手”来分析?”
在软件架构和设计上,SA的经验是可以重用的。这些东西不太涉及业务。
但让政务的搞金融,
1.可能人家确实懂这个业务,
2.只好问你的CTO是不是有问题了,SA本身最好是领域专家,但一般都不会是。
大项目是需要进一步划分角色的,这么安排,说明项目组织本身有问题。


3. 合格的SA也少
还有一个原因,依然在于合格的系统分析员太少。
因此难免在具体操作的时候让大家觉得名不符实。进一步导致在考虑成本的时候,
自然不如直接由程序员DIY来得方便是不是? 这种做法短期是省钱,长远的危害写
出产品来就知道了。

4. ....还有很多原因,累了,让别人说吧。企业里头本来就充满了不称职的人,各种
角色不称职的都很多。有空你去看看彼德原理中描述的:“在层级组织制中,不再
向上升迁的人都是不称职的人”呵呵...再对比一下你身边的那些人,你会发现得更多


“走程序员-系统分析员-项目经理-部门经理-CTO这样的路”,路线画的好象不对。

项目经理一般不会成为部门经理。PM和软件开发经理是两个职位。
合格的系统分析员目前的职位一般都已经是部门经理或CTO。怎么跑到PM下面去了?
PM一般都是一个服务角色,不是支配角色。
小公司的PM和部门经理的角色是重合的,但一般也和SA的角色重合。是:
程序员->(pm+sa+部门经理)->(cto).

“即使你是CTO,什么O都没用。你得想别的办法,又能当上官,又不负责任,
挣钱又多。你别笑,这样的人不是没有,而是很多,但人家都不是走你想象的那条路的。”

这个情况是有的,但人家O们赚钱多,“又能当上官,又不负责任”显然是你的盲目猜测。
你怎么知道O们都在吃干饭? 你是不是先定义一下他们的工作内容和职权先?


其它的不说了,你说的一些现象存在,但是没那么严重。
比如:“程序员是蓝领,分析员是必由之路”这样的话。
比如:“为什么遇到问题都要祭出“面向对象”来拉大旗做虎皮”
比如:“不懂…(一般是指系统分析),你就只能永远是个程序员!”

好象公司里头有点脑筋的人都不是这个看法。
该干吗干吗吧,看到别人浮躁,自己不浮躁就可以了,何必激动。

最后重复一次,
1. 系统分析员不是软件公司里头最后的老大,不必贬低其价值,
也不必认为他们是万能的神。别把失败的学校教育的怒气发泄到SA身上,
他们可也没惹你。
2. 光提出问题是不够的,既然“国内软件公司的问题是一个综合问题,系统工程,
远非换一两个零件就可以解决的”,
那如果把你放到O的位置,SA的位置,你能否解决问题,避免
他们现在的问题? 还是作的更烂还不如现在这些人? 还是只能空谈?
yaoylguest 2003-02-25
  • 打赏
  • 举报
回复
如果已经是程序员了,不走系统分析的路,还有其它路可走吗?
sum_z 2003-02-25
  • 打赏
  • 举报
回复
lynxliu(lynx):
你的看法我深表赞同!行业经验是现实中更加需要的,但是好象很少有人提到。
lynxliu 2003-02-25
  • 打赏
  • 举报
回复
同意Jinq0123的观点,不过,只是说一点,程序员有两种,一种是有自己的头脑,依照自己的计划来学习和实现自己价值的人,一种是为了实现一个一个的功能,到处找出路,找方法的人。后一种人是需要领导,需要规范的。现实里面,几乎每一个程序员身上都有上述两种人格的影子,不过是哪一个更多罢了。编程专家肯定也会分析,只不过不会那么推崇什么OO,设计模式之类的概念。SA不过是为没有头脑和理想的程序员服务的。wonder说的只是领域软件项目里面,SA也许比较重要,实际上,此时更加重要的是领域的业务专家,连业务都无法深入的了解,还设计个屁。通用的设计不过是掩饰自己对于业务没有深入理解的借口而已。我发现,现在对于业务专家和代码实现专家的需要是否得到满足往往决定项目的质量。可惜,哪个技术人员愿意深入学习领域的业务知识呢?我就不愿意,宁愿去搞一些通用的理论。我们公司的情况就是需要了解IT技术架构的QA(需求分析人员),也需要了解业务的实现专家。

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧