荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: huhaiming (一生只爱她), 信区: Program
标  题: 修炼一名程序员的职业水准4(林庆忠__署名原创)
发信站: 荔园晨风BBS站 (2005年04月08日09:01:11 星期五), 站内信件

【 以下文字转载自 CIE 讨论区 】
发信人: dreamway (美洲豹), 信区: CIE
标  题: Re: [转帖]修炼一名程序员的职业水准(林庆忠__署名原创)[2]
发信站: 荔园晨风BBS站 (Thu Apr  7 23:22:28 2005) , 站内信件

四、天生神力:成为系统分析员
本来就论述如何成为一名职业程序员而言,本文已基本完成任务了,但《菜根谭》有言:竭
世机枢,似一滴投于巨壑,穷诸玄辩,若一毫置于太虚。既已乘兴到此,何妨多置一毫于太
虚呢,作者不才,干脆尽兴写算了。你要是运气好,直接进入了一个严格规范生产的软件企
业就业,刚开始就应该是按别人做好的软件设计来实现编程,你可以有机会直接学习软件设
计,当你积累的足够多了,能够对其中的一些设计提出好的改进建议,而且干得又快又好,
就会渐渐地展露头角,我相信你终有一天成为一名软件设计人员(注意,不是软件产品设计
人员),步入系统分析员的行列,但这还需其它的一些条件和自我修炼。如果你在一个不规
范的软件企业工作,那也不错,你很可能直接就有机会进行软件设计,然后开发、测试,甚
至还不得不自己定义需求,把软件开发过程的各个环节走一个遍,当然这样对你的要求更高
,而且你也不容易得到及时有益的指点,在正态分布的情况下,你应该是成长的很慢。但不
管就业的单位如何,如果你决心要成为顶尖软件职业选手,通常什么客观困难都阻挡不了你
,然而你个人的因素可能会阻止你的前进。下面提出的观点纯属一己之见,伤人自尊之处作
者在此提前道歉,并建议你除非对本文有强烈的兴趣,否则就请直接看第五节或放下别看了
。丑话已说在前头了,在各种软件开发组织的发展过程中的事实也证明,只有少数程序员能
成为系统分析员,我想这一点不是我杜撰的吧,因此你要是在看接下来的部分时感到气愤难
当,那也实在没着,纯属活该,因为作者只是在说明自己的观点而已,你最多可以呲之以鼻
,表示一下你的轻蔑好了,但没有任何理由可以骂人!作者自己没有到微软面试过,但身处
软件行业,关于微软的许多东东当然还是有耳闻的,据说微软招聘一名程序员要过五个已经
成为微软程序员的面试关,而且是一票否决制,又据说大多数面试题并非编程,而是一些有
关逻辑和智力的题,作者私下也做过许多流传的微软面试题,并对此做法深以为然。程序的
本质就是逻辑,所以几十年前就有人提出编程是一门艺术,而艺术是要靠天份的,这一点少
有人反对。一个人的逻辑能力可以不断提高,但其能到达的终极逻辑能力的层次必定为其天
生智力所限制,这一点就让人不易接受了。好笑啊!人们可以公开承认自己没有某种或全部
的艺术天份,但要说自己逻辑天份不够,换句话说承认自己笨、IQ不够高,往往是要怒发冲
冠的,其实这又有什么区别呢?话都说到这儿了,再次建议你如果不够自信,就跳过这一节
吧,直接看第五节,好吗?好了,把话题说回来,你已经成为一门合格的职业程序员了,如
果要想成为从事软件系统设计的职业系统分析员,第一件事就是悄悄找一个标准智商测试的
网站或其它渠道,严格认真的测一测自己的智商,如果IQ低于130 (正常智商是110),就请
别费劲了,打消掉成为系统分析员的念头吧!好!好!先请你冷静一下,好好想想,其实微
软面试时就是在测你的智商和逻辑数学素质呢,这就是本节的标题为“天生神力”的原因,
因为设计就是从无到有地进行创造,无论是软件还是其它行业都一样,可以有借鉴的,没有
现成的,设计就是创造!如果你IQ在130以上,又决心要当一名职业软件系统分析员,其实
你不过是要准备好吃更大的苦而已,有什么好虚荣的呢?
修炼还是从基本功开始的,过程和成为一名职业程序员差不多。必须使用设计工具这一点是
不用多说的。在工作中,你基本上遇到的是两类方式的设计,一个是结构化设计,另一个是
面向对象设计,就个人经验而言,面向对象的设计更好。如果你工作中不得不采用结构化的
设计,你必须熟练地掌握数据流图和控制流图的分析和设计,一般来讲,如果你把一个软件
中用到的数据模型设计好了,针对功能化的流程,不难设计出数据流图,但下一步设计控制
流图才是挑战,如果你按照需求走不通设计好的控制流图,那么你或别人在按照这个设计编
程实现时,必定也走不通,没有奇迹会发生,还是在设计阶段严格要求吧,又有一点需要牢
记:返工是最慢的。当你在进行控制流图的设计时,也不要妄想得到需求人员提供给你明确
的指点,通常他们要是能够把需求的功能和操作次序写完整的话,你应该就感恩戴德了,从
需求中整理出功能、操作的拓扑次序和条件是你作为系统分析员的职责。看看,要是没有一
点图论的基础和拓扑学的入门知识,你是当不好一个职业系统分析员的,即使你天赋不错,
必要的数学和逻辑素质仍然不可或缺。也不用气馁,永远没有最好的设计,只有更好的设计
,反复地进行设计迭代,勇于推翻旧的设计,你将快速进步。如果你在工作中是采用面向对
象进行设计的,那就更有利了,有关面向对象设计的书太多了,不用作者在此多费口舌,建
议精读一本经典的书,比如北大邵维忠等编译的《面向对象的分析》,有些方法和技巧可能
过时,但其逻辑的基本原理是非常正确的,其本质是,你在逻辑上是如何认识这个世界的,
你就是如何设计软件体系结构的,然后读读其它书,触类旁通,自己创造机会多实践,成功
自然会到来的,总之,不管是结构化设计还是面向对象设计,评价一下自己的软件系统设计
方案吧,有好多指标呢,比如是否均匀和平衡?局部独立性强不强?有没有歧异的结构?有
没有层次太多或太少?有没有某个层次太大、太广?是不是逻辑结构先复杂了再化简的?还
是只会设计简单的,复杂不起来(这一点是笨哦,如果出现多次,请你不要意气用事,转行
吧)?最重要的一点,是否容易理解、实现和改进?你自己会得出评价的。如果有机会看到
别人的设计,一定不要错过学习的机会,自己推导一遍,认真比较比较,获益会较多。走到
这一步,你就应该关注设计模式了,首先还是学习,这方面的好书有的是,但一般在工作中
用到的设计模式较为单一,应该多尝试一下其它的设计模式。其次必须要明白设计模式不是
设计思路,也不能代替设计思路,比方你要从A到B修一条路,设计模式只是让你选择,是修
水泥的还是柏油的?是高架路还是普通的,但线路必须你自己定,而线路就是设计思路,模
式对思路是有影响,但不能代替,所以如果你的智商高达250,我相信你直接用汇编语言也
能写出面向对象的程序来。第三在此有一个陷阱,很多系统分析员生搬硬套设计模式,全然
不懂如何融会贯通,在你的一项具体工作中,往往是以一种设计模式为主,其它模式为辅的
,思维不拘泥于形式才是关键,而且也为你到达更高的软件设计的境界做好准备。唉!都不
知该怎么向下写好了,因为已达到作者水平的极限了,我胡乱说一点,你凑合看吧。软件设
计最终的层次是:以无法为有法、以无限为有限,这句话是李小龙说的,不是我说的。再拾
人牙慧一把,类比一个故事吧,金大侠在《倚天屠龙记》里讲到张无忌初学太极,学会的标
志是把刚学的招数全忘了,记住的是太极的道理和精神,和李小龙有些相似喔,软件设计也
一样,忘记所有的设计模式,随心所欲进行设计才是至高境界,所以你能到达多高的软件设
计的境界最终将取决于你的哲学素质,这一点实在是不好写啊,你自己领悟吧!作者只有祝
福了!

--
做了过河卒子,唯有拼命向前。
※ 来源:.荔园晨风BBS站 http://bbs.szu.edu.cn [FROM: 218.17.74.45]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.95.1]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店