程序员修炼法则
程序员的修炼法则
一,你适合当程序员吗,你知道编程序是怎么回事吗
1, 程序员意味着要编程序.
(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)
2,你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和
严谨.(说坦白点就是,在你没有找到乐趣以前,它很枯燥)
3,你有对新技术追求的热情吗 你有刨根问底的探索精神吗
(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗 )
4,当程序员决不是什么好差事,时刻需要学习,需要思考.
(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5,程序员的未来很迷茫.
(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃.因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 BjarneStroustrup,我会说你没有追求.有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:
一,你适合当程序员吗,你知道编程序是怎么回事吗
一,你适合当程序员吗,你知道编程序是怎么回事吗
一个程序员对自己的未来很迷茫,于是去问上帝.
万能的上帝呀,请你告诉我,我的未来会怎样 上帝说我的孩子,
你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的 Lippman说程序员的未来就是驾驭程序员这个程序员对这个未来不满意,于是他又去问上帝.万能的上帝呀,请你告诉我,我的未来会怎样上帝说我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的于是他去问Gates. Gates说程序员的未来就是榨取程序员这个程序员对这个未来不满意,于是他又去问上帝. 万能的上帝呀,请你告诉我,我的未来会怎样上帝说我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的于是他去问侯捷. 侯捷说程序员的未来就是诱惑程序员这个程序员对这个未来不满意,于是他又去问上帝. 万能的上帝呀,请你告诉我,我的未来会怎样上帝摇摇头唉,我的孩子,你还是别当程序员了)
6,当程序员还是很有乐趣的.
(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗 )一,你适合当程序员吗,你知道编程序是怎么回事吗
7,当程序员不易也不难.
(世间事有难易乎 为之…;不为….你有决心和信心吗 )
8,你真的要当程序员 是你自己的想法
9,你舍得花钱买书吗 (读好书绝对是学习编程的最佳捷径.你一定会说,现在电脑书籍真***贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀.要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时
看看,如果好就买下,记住要读,别光买不看.)一,你适合当程序员吗,你知道编程序是怎么回事吗
10,我告诉你,程序就是:
任何有目的的,预想好的动作序列,它是一种软件.一,你适合当程序员吗,你知道编程序是怎么回事吗
11,编程序就是编写程序.
12,你想好了吗
(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了.)
二, 一个程序员应该具备的基础知识和概念
1,机器语言和微指令集的概念.
2,程序的概念.
3,计算机是有什么组成的,CPU是什么东西,其工作原理是什么.
(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)
4,汇编语言是低级语言但不是机器语言.
5,高级语言主要有那些
(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语)
6,编译程序和解释程序的概念和其原理.
(编译器是高手和专家编写的)
7,HTML,XML等是标识性语言.
8,Prolog是人工智能语言.
9,操作系统OS的概念和原理.
(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)
10,Windows编程说白了就是Windows API的调用.(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)
11,VC++,VB,BC,BCB,Delphi,VF等都只是编程的工具和环境,不是编程语言.
12,面向结构的设计概念.
13,面向对象的概念.(好好理解,兄弟,这个东西还是很重要的)
14,软件工程的概念和原理.(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个
等级,薪水也高哟)
15,数据库的概念.
(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)
16,了解网络概念.
17,了解多媒体概念.
18,熟悉和掌握数据结构和基本算法.
是不是要求太高了,别着急慢慢来,进步在不知不觉之中.(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了.也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧.要有信心和耐心.沉不住气怎么能成大事 !)
三,程序高手是怎样练出来的
1.2 高手是怎样练成的
程序员怎样才能达到最高境界 最高境界绝对不是你去编两行代码,或者是用什么所谓的可视化工具产生最少的代码这些工作,这都不是真正的高手境界.即便是这样的高手,那也都是无知者的自封.我认为,一个程序员的成长可分为如下六个阶段
1.2.1 高手成长的六个阶段
第一阶段
此阶段主要是能熟练地使用某种语言.这就相当于练武中的套路和架式这些表面的东西.
第二阶段
此阶段能精通基于某种平台的接口(例如我们现在常用的Win32的API函数)以及所对应语言的自身的库函数.到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用.
第三阶段
此阶段能深入地了解平台系统的底层,已经具有了初级的内功的能力,也就是手中有剑,心中无剑.
第四阶段
此阶段能直接在平台上进行比较深层次的开发.基本上,能达到这个层次就可以说是进入了高层次.这时进入了高级内功的修炼.比如能进行VxD或操作系统的内核的修改.这时已经不再有语言
的束缚,语言只是一种工具,即便要用自己不会的语言进行开发,也只是简单地熟悉一下,就手到擒来了,完全不像是第一阶段的时候学习语言的那种情况.一般来说.从第三阶段过渡到第四阶段是比较困难的.为什么会难呢 这就是因为很多人的思想转变不过来.
第五阶段
此阶段就已经不再局限于简单的技术上的问题了,而是能从全局上把握和设计一个比较大的系统体系结构,从内核到外层界面.可以说是手中无剑,心中无剑.到了这个阶段以后,能对市面上的
任何软件进行剖析,并能按自己的要求进行设计,就算是MS Word这样的大型软件,只要有充足的时间,也一定会设计出来.
第六阶级
此阶段也是最高的境界,达到无招胜有招.这时候,任何问题就纯粹变成了一个思路的问题,不是用什么代码就能表示出来的.也就是手中无剑,心中也无剑.此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁看一下少林拳的对战,就能把此拳拿来就用.这就是真正的大师级的人物.这时,Win 32或Linx在你眼里是没有什么差别的.
每一个阶段再向上发展时都要按一定的方法.第一,第二个阶段通过自学就可以完成,只要多用心去研究,耐心地去学习.要想从第二个阶段过渡到第三个阶段,就要有一个好的学习环境.例如有一个高手带领或公司里有一个好的练手环境.经过二,三年的积累就能达到每三个阶段.但是,有些人到达第三个阶段后,常常就很难有境界上的突破了.他们这时会产生一种观念,认为软件无非如此,认为自己已无所不能.其实,这时如果遇到大的或难些的软件,他们往往还是无从下手.现在我们国家大部分程序员都是在第二,三级之间.他们大多都是通过自学成才的,不过这样的程序员一般在软件公司也能独当一面,
完成一些软件的模块.但是,也还有一大堆处在第一阶段的程序员,他们一般就能玩玩VB,做程序时,去找一推控件集成一个软件.现在一种流行的说法是,中国软件人才现在是一个橄榄型的人才结构,有大量的中等水平的程序员,而初级和高级的程序员比较少.而我认为,现在中国绝大多数都是初级的程序员,中级程序员很少,高级的就更少了.所以,现在的人才结构是方塔形,这是一种断层的不良结构.而真正成熟的软件人才结构应该是平滑的三角形结构.这样,初级,中级,高级程序员才能充分地各施所长.三,程序高手是怎样练出来的
1.2.2 初级程序员和高级程序员的区别
一般对于一个问题,初级程序员和高级程序员考虑这个问题的方法绝对是不同的.比如,在初级程序员阶段时,他会觉得VB也能做出应用来,且看起来也不错.但到了中级程序员时,他可能就不会选择VB了,可能会用MFC,这时,也能做出效果不错的程序.到高级程序员时,他绝对不是首先选择以上工具,VB也好,VC也好,这些都不是考虑的问题.这时考虑的绝对是什么才是具有最快效率,最稳定性能的解决问题的方法.程序员到达最高境界的时候,想的就是我就是程序,程序就是我.这时候我要做一个软件,不会有自己主观的思路,而是以机器的思路来考虑问题,也就是详,就是以程序的思考方式来思考程序,而不是以我去设计程序的方式去思考程序.这一点如果不能比较高的层次是不能明白的.你设计程序不就是你思考问题,然后按自己的思路去做程序吗其实不是的.在我设计这个程序的时候,相当于我钻入这个程序里面去了,这时候没有我自己的任何思维,我的所有思维都是这个程序,它这步该怎么走,下步该怎么走,它可能会出现什么情况.我动这个部分的时候,别的部
分是否要干扰,也许会动一发而牵全身,它们之间是怎么相互影响的也只有到达这个境界,你的程序才能真正地写好,绝对不是做个什么可视化.可视化本身就是我去设计程序,而真正的程序高手
是我就是程序,这规程方法绝对是不同的.比如,我要用VB去设计一个程序,和我本身就是一个程序的思维方式,是不一样的.别人也许觉得操作系统很深奥,很复杂,其实,如果你到达高手状态,
你就是操作系统,你就能做任何程序.对待软件要有一个全面的分析方法,光说理论是没有用的.
如果你没有经过第一,第二,第三,第四这四个阶段,则永远到达不了高境界.因为空中楼阁的理论没有用,而这些必须是一步一步地去做出来.一个高级程序员应该具备开放性思维,从里到外的所有的知识都能了解.然后,看到世界最新技术就能马上掌握,马上了解.实际上,技术到达最高的境界后,是没有分别的.任何东西都是相通的,只要你到达这个境界以后,什么问题一看就能明白,一看就能抓住最核心的问题,最根本的根本,而不会被其他的枝叶或表象所迷惑,做到这一步后才算比较成功.
从程序员本身来说,如果它到达这一步以后,他就已经形成了开阔的思维.他有这种开放性思维的话,他就能做战略策,这时他将来做任何事情都有好处.事实上,会做程序后,就会有一种分析问题的方法,学会怎么样把问题的表象剖开,看到它的本质.这时你碰到任何具体的问题,只要给点时间,都能轻而易举地解决.实际上,对开发计算机软件来说,没有什么做不了的软件,所有的软件都能做,只是看你有没有时间,有没有耐心,有没有资金做支撑.这几年,尤其是这两三年,估计到2005看前,
中国软件这个行业里面大的软件公司就能形成.现在就已经在形成,例如用友,它上市后,地位就更加稳固了,其他大的软件企业会在这几年内迅速长大.这时候,包括流通渠道,经稍商的渠道也会迅速长大.也就是说,到2005年以后,中国软件这个行业的门槛比现在还要高很多,与美国不会有太大的差别.此时,中国软件才真正体现出它的威力来.如果你是这些威力中的一员,就已经委厉害了.所以程序员要能达到这样的目标,就要有非常强的耐心和非常好的机遇才有可能.事实上,现在的机会挺好的,2005年以前机会都非常大,以后机会会比较小.但是,如果有耐心的话,你还是会有机会的,机会都是出在耐心里.我刻有句话详雄心的一半是耐心,我认为雄心的三分之二都是耐心.如果你越有野心,你就越要有耐心,你的野心才有可能实现.如果你有野心而没有耐心,那都是胡思乱想,别人一眼就能看穿.最后在竞争中,对手一眼就看到你的意图,那你还有什么可竞争的
1.2.3 程序员是吃青春饭的吗
很多人都认为程序员是三十岁以前的职业,到了三十岁以后,就不应再做程序员了.现在的很多程序员也有这种想法,我觉得这种想法很不对.在20世纪80年代初,那时软件还没有形成行业,程序员不能以此作为谋年的手段时,你必须转行,因为你年轻的时候不用考虑吃饭的问题,天天玩都可以,但是以后就不可能了.据我了解,微软里面的那些高手,几乎都是四五十岁的,而且都是做底层的,他们是上世纪70年代就开始玩程序的,所以对于整个计算机,他们是太清楚了.现在有些人主观臆断地希望微软第二天倒闭就好了,但那可能性太小了,因为那些程序员是从CPU是4004的时候开始,玩到现在奔腾IV,没有哪一代东西他们没有经历过.你知道他们现在正在玩什么吗 现在正在玩64位的CPU.你说你普通的程序员,有这个耐心吗 没有这个耐心,你绝对做不了,你也绝对当不了高手.他为什么能做 因为他不仅是玩壹的,而且他还非常有耐心,每一步技术他都足得上,所以对他来说,没有任何的难度和压力.因为计算机技术没有任何时候是突变不会很大,但是回过头来看三年以前的情况,和现在的距离就很大.所以说,如果你每年都跟着技术进步的话,你的压力就很小,因为你时刻都能掌握最新的技术.但是,如果你落下来,别说十年,就是三年,你就赶不上了.如果你一旦赶不上,就会觉得非常吃力;如果你赶不上,你就会迷失方向;如果你迷失了方向,你就觉得计算机没有味道,越做越没劲.当你还只是有个思路的时候,别人的产品都做出来了,因为你的水平跟别人相差太远,人家早就想到的问题,你现在才开始认识.水来越低,想的问题就越窄.所以,追求技术的最高境界的时候,实际上是没有年龄限制的.对我来详,现在都三十三了,我从来没有想过退出这行,我觉得我就能玩下去,一起玩到退休都没有问题.我要时刻保持技术的最前端,这样的话对我来说是不困难的,没有任何累的感觉.很多人说做程序员不是人干的事情,是非人的待遇.这样,他们一旦成立一个公司,做出一点成绩,在辉煌的时候马上就考虑退出.因为他们太苦了,每天晚上熬夜,每天晚上烧了两包烟还不够,屋子里面简直就缺氧了,好像还没有解决问题.白天睡觉,晚上干活,那当然累死了,这是自己折腾自己.所以,做程序员一定要有一种正常的心态,就是说,袋子我做程序的时候,不要把自己的生活搞得颠三倒四的.如果非得晚上烧好多烟才行,这样你肯定折腾不到三十岁,三十岁以后身体就差了.事实上,我基本上就没有因为做程序而熬夜的.我只经历过三次熬夜,一次是在学校的时候,1986年刚接触计算机时,一天晚上跟一个同桌在计算机室内玩游戏,研究了半天,搞着搞着就到了天亮,这是第一次.然后在毕业之前,在286上做一个程序.还有一次就是超级解霸上市前,那时公司已经吹得很大了,那天晚上没法睡觉.一般来说,我也是十二点钟睡觉,第十天七点就起了.所以说,只有具有正常的生活,正常的节奏,才有正常的心态来做程序员,这样,你的思路才是正常的,只有正常的东西才能长久.搞疲劳战或者是黑白颠倒,时间长久后就玩不转了,玩着玩着就不想玩了.只要你不想玩,不了解新技术,你就会落后,一旦落后,你再想追,就很难了.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hkbyest/archive/2007/07/27/1710883.aspx