做個合格的程序員

来源:互联网 发布:php序列化和反序列化 编辑:程序博客网 时间:2024/05/23 19:20
我个人有接三年的软件开发经验,也做过不少大中型的项目,尝过成功的滋味,也体验过失败的痛苦,自己感觉还达不到高手的境界,和真正的高手还有不小的差 距。要想提高自己首先不能满足于现状,我始终相信better enough is not better enough,要为自己树立一个更高的目标。有了目标还需要自己的不断努力,个人认为要成为高手还需要遵循以下条款。
1. 扎实的基本功
  离散数学、数据结构和算法、操作系统、编译原理等等,这些都是计算机专业最基本的课程。不要认为他们不重要,虽然这些书的内容更多的是一些理论性的东西, 但参与实际的项目很多时候还是需要这些基础知识来做支撑的。当然我们不能读死书,如果你没有编过什么代码也没有实际的项目经验,那么你所学的这些知识永远 只会停留在书本上,你也不能跟深刻的理解这些知识的内涵。一些有过一定项目经验的程序员可能经常会有“书到用时方恨少”的感觉,他们在个人能力的提升中会 遇到一些瓶颈,这些瓶颈正是由于基本功不扎实造成的。这时候再回过头去学习那些基础知识往往会觉得和当时的理解不太一样,理解的角度也不仅仅只是停留在理 论的层面上,而更多的是用自己的实际经验来理解这些知识,碰到一本喜爱的书会有一种如鱼得水的感觉,在读书的过程中也会对一些问题恍然大悟。  
2、多读源码
  程序每个人都能写,如何能让自己的程序写的更好呢?个人觉得提高最快的方法就是多看别人的源码,当然,并不能什么都看,我们需要有选择的去看,看一些经典 的源码。比如想研究操作系统的程序员可以深入的读一读Linux早期版本的源代码,想研究数据结构和算法的可以仔细研读STL库或者boost库。 读源码一定要读的细,要深入理解其中的涵义,要跟的上编写者的思维,这样久而久之你读的这些东西都会成为你自己的东西,在实践中得到应用。 
3、多思考,多交流
  程序员需要的不仅仅是coding,还需要大量的时间思考问题,有时候思考的时间甚至远远大于coding的时间。不要急于动手写代码,一个新的项目需 求,如果没有进行足够的分析和设计就动手写代码,后果可想而知。要给思考问题留足够的时间,直到把需求分析透了,把编码过程中可能遇到的问题都解决了,再 开始编码。另外多于别人交流,三人行必有我师,多问问别人对同一问题的看法会对你有很大的启发。  






4、良好的编程风格
  养成良好的习惯,变量的命名规则要统一,代码的缩进编排。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可 以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。  
  这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。 以上纯属个人观点,如有不同见解,可持保留意见。
在网上看到这文章<<开发人员间的效率差在哪里>>,觉得挺好的,把自己晒晒,做做总结:  
熟练人员  一般的开发人员  我 (2009.8)  经过多年的积累加上自己的 CodeSnip 的总结,基本不用额外再查找资料。 
在开发过程中会花掉 10-20% 时间去查找资料。  有一定的积累,但没有养成良好的习惯,总要花时间找资料。  注意代码复用,并且时刻注意重构和抽取公用代码。 
一般开发人员是代码拷来拷去完成功能。  开始注意复用以及重构,但总有吃力的感觉。 
非常注意查找,定位,标签等各种快捷键的使用,定位查找方便快捷, IDE 环境也根据习惯定义到最方便状态。 
   懂得使用常用的工具 
编码前先思考清楚整个流程,在头脑或纸张上规划好整个实现方式和方法函数的划分。 
想到哪里写到哪里。  在面对较大工程时,很难在遍码前将整个流程考清楚 
写了 50 行以上或更多代码才 Debug 一两次。  写了几行代码就要 Debug 多次,完全通过
Debug 来验证代码正确性。 
习惯于 Debug ,还没养成常思考的习惯 
注重代码的质量,单元测试和可维护性,注重各种业务逻辑的验证和边界条件的校验。 
只注重简单功能的简单完成。  开始注意代码的质量,单元测试和可维护性,但总会考虑不周  提交测试的代码 BUG 由于自测不完善 BUG
BUG 较少 






很少,返工工作量很小。  较多,造成大量的返工
工作量。 
合理分配自己的时间,规划好每天工作任务,开发过程各位专注。  一心多用,边开发边聊 Q 。  几乎没有规划 
善于知识的总结和积累,形成自我的知识库和经验库。 
则不善于这种总结。  经常总结 
善于发现问题,分析不足而自我持续改进。  在外力干预下被动改进。 
主动发现问题,但改进较少  熟练开发人员开发重点已经专业到对业务的深刻理解。 
考虑的是开发上编程的语言和工具。  都有考虑 
善于从各种影响自己开发效率的因素中挤时间,善于使用各种辅助开发工具。     有一定的经验 
       
以上只是作出了比较,说明了好坏,那么你是否有想以下问题:  
怎样才能提高效率?  
我想来想去,就有一个结论:工作之余要多看优秀的代码和设计,并且多思考、多总结。  
为什么工作的时候就不能做这些事呢?因为工作的时候来不及做了。如果说商场如战场,那么办公室就是程序员的战场,战场上都是性命相博的,哪有那么多 时间来想那么多事啊!做软件开发其实也类似,每天8个小时感觉是不够的,如果把这些时间都花在学习,总结上,那么完成工作任务的时间就被占用了,这样就很 难按时完成项目了。  






实际情况是这样的:总会在开发过程中遇到形形式式的难题,我们要花不少时间来解决这些问题,如果能够解决那就演化成常见的软件延迟发布(这样的例子有无数),不能够解决的就成了烂尾工程(这种情况也很多)。  
回到之前的结论,我必须在平时就做足准备,这样在工作的时候才能游刃有余。要知道,领导们可能在某天突然跟你说:客户们提出这样的要求,某某项目要在3个星期内完成。  
工欲善其事,必先利其器。所以,要在项目之前做足工夫;磨刀不误砍材工。所以,我们又不能使用工作的时间来学习,实际上,工作的时间总让人觉得不 足。其实,软件行业的加班文化是有其根源的,程序员花了大量时间来解决难题,而项目完成之后就把它一扔。下一个项目只是再次做这个循环而已。  
最后一句:好枪需要经常用,好的身体需要天天运动,好的大脑需要常常思考,优秀的程序员要经常"加班"。呵呵。
 
 
前段时间,不知在哪个网站上看到大概是诸如“程序员如何提高自己?”,感触颇深。在此处,贴出来以告诫自己,要努力做到下述内容中的若干点,尤其是1)总带一本书,不失为一件又雅又益的事情,俗话说的好“滴水可以穿石”,每天看几页书,没准,我也能成为Master。
1)总带一本书 
无论你花一年或者一周去读一本书,这都无所谓。随身带着它,当你有时间的时候就努力去阅读,通读。每天只需花挤出来的几分钟,一周就能读一本。那么一年至少就能读50本。 
2)建一个"要学习什么"的名单 
我们都有需要做的事情的清单。这些就是我们需要完成的任务。努力建立一个"要学习什么"的清单。你可以把想要学习新领域的思路写在上面。或许你想掌握一门新语言,学习新技能,或者读莎士比亚全集。无论是什么激励你的,都要把它写下来。 






3)寻找更多明智的朋友 
开始花更多的时间与那些善于思考的人在一起。并不仅因为他们聪明,而且是因为他们投入了很多时间学习新的技能。他们的好习惯也会在你的身上摩擦出火花。甚至更好的,他们可能会与你分享他的知识。 
4)指导自己的思想 
爱因斯坦曾经说过:"任何读多思少的人都会养成懒惰思维的习惯"。只是简单的学习别人的东西,这样的智慧是不够的,你要在此之上建立自己的想法。多花点时间写日记,把你对这些学到的知识的思考和想法记录下来。 
5)付诸实践 
如果不使用,学来的技能也是无用的。读一本C++的书,和写一个相同的程序,是完全不同的两码事。学画画可不是简单的拿起画笔。如果你的知识能被应用,那就付诸实践吧。 
6)教导别人  寓学于教。如果你能把知识教给别人,你也可以巩固学习。建立一个博客,开导别人或者与朋友们讨论想法。 
7)整理你的博客订阅 
有些形式的学习很容易消化,但往往缺乏实质内容。我就经常定期清理我订阅的博客。伟大的博客就是一个新思路的巨大源泉。但每隔几个月,我就意识到我总是收到那些我不关注的博客的信息。每隔几个月,清理你们的订阅,就可以节省时间,注意重点. 
8 )在群体中学习 
终身学习并不意味着让自己陷于一堆落满灰尘的课本。加入教授技能的组织。这种群体学习和小组学习活动,都可以培养自己的乐趣和社会经验。 
9)将假设忘掉 【把你脑中先入为主的观念忘掉】 
杯子满了就不能再往里面倒水了。所以我总是尽量与任何想法保持距离。学到了太多的信念,就意味着太少产生新想法的机会。积极寻找那些能改变你的世界观的想法。 
10)找一份能鼓励多学习的工作 
找一份能鼓励不断学习的工作。如果你的工作让你没有多少学习知识的自由,就该考虑换工作了。不要每周花40小时来做一项没有挑战的工作。 
11)开始的一个项目 
列举一些你不知道该从何做起的事情。强迫这样去学习才能得到乐趣,并具有挑战性。如果你不懂电脑,尝试学一学。如果你认为你一个可怕的艺术家,那就试试画画。 
12)跟随你的直觉 
终身学习有时感觉就好像在荒野中漫游。你不知道你在期望什么,而且心里也不









------------------------------做法------------------------------------------


通过以下4个阶段的训练, 没有任何编程基础人就可以成为一名普通的程序员。  
第一阶段:掌握一种编程语言  
    学习内容:学习任意一种主流的编程语言。例如C++语言。  
    学习目标:熟练掌握一种语言的语法和基本的编程技巧。  
    学习时间:3个月左右  
    注意事项:编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等 
              程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指 
              Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器                在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在 
              记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0         
              编译、执行,所以: C++ 不等于 Visual C++ 6.0  
第二阶段:掌握一种编程工具  
    学习内容:学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语言一致,例如你学习的 
              编程语言是C++,那么编程工具要选Visual C++ 6.0或者C++ Builder 5.0。  
    学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。  
    学习时间:3个月左右  
    注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。  
第三阶段:掌握“算法与数据结构”这门课程  
    学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。  
    学习目标:熟练掌握各种常用的算法与数据结构  






    学习时间:4个月左右  
    注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》, 
              这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。  
第四阶段:实现一个模拟的小型软件项目  
    学习内容:软件项目的开发过程        
    学习目标:掌握软件项目的基本开发过程和方法  
    学习时间:4个月左右  
    注意事项:自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推荐 
             “中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效,                以它为基础再加以扩展,就可以做出实用的MIS软件来。                此丛书包括多种开发工具,大家可以选择适合自己的:《VISUAL FOXPRO6.0 数据库系统开发实例导航》  
             《JAVA数据库系统开发实例导航》 《VISUAL BASIC数据库系统开发实例导航》                  《VISUAL C++6.0数据库系统开发实例导航》 《ASP.NET数据库管理系统开发实例导航》  
             《DELPHI数据库系统开发实例导航》 《POWERBUILDER 8.0数据库系统开发实例导航》。 
              最后将完成的模拟软件刻成光盘,作为自己的作品去面试,以此踏上自己光辉的职业程序员之路!  
祝大家一路顺风!


//----------------------------------------------------------------------------------------------------------------------------

  1. 编写单元测试,提高效率(如果你还没有这样做) 
  这是一个十分基础的工作,但是许多程序员并没这么做。但你应该这么做。这样做不仅能够提高代码质量,还能提高工作效率。你不但能够在发布和修改你的程序时更加自信,而且还节省了相当多的时间。 
  试想一下,如果你正编写一个大型网络应用程序,其中一个小小的代码出现了差错,要修改它便意味着整个程序的重建、数据的重新配置以及特性的重新检查(而这个错误很可能隐藏很深)。再设想一下,你可能需要一遍又一遍地重复类似的事。现在,借助“单元检测”,就可以让你避免重复以往的修改/检查工作,可以节省很多时间。  
  2. 训练你的编程能力 
  这其实很容易。看看其他专业人员。板球队员通过“网上训练”提高技能。音乐家通过练习演奏来提升水平。歌手也需要不断通过练习改进。令人吃惊地是,绝大部分的程序员却不练习。但你需要不断练习。 
  阅读一些诸如《Effective Java》和《Design Patterns》等类型的书,并每天做些基础训练。从欧拉项目中找出些问题,然后 用你最喜欢的计算机语言解决它。 
  编者注:欧拉项目,一个知识检测网站,定期发布题目,提交正确答案即可进入关于该问题的讨论,学习题目的不同解法。 
  和你做的普通项目不同,这些练习没有时间限制。因此,好好安排利用你的时间正确地做事。通过这样的练习,你的工作效率将有很大提高。这是显而易见的,不是吗?  
  3. 使用并改进开发库 
  很多编程人员不喜欢用开发库。他们宁愿自己编写代码,也不愿意使用开发库。主要理由如下:
 a. 他们不了解开发库; 
 b. 开发库里有很多他们并不需要的信息; 

c. 相比于开发库,他们更容易掌握自己编写的代码; 
 
  不妨考虑下以下几个方面:
 a. 开发库已经过严格测试,覆盖范围广,可以帮助你节约很多时间。如果你改进了开发库,你可以帮助很多人。   b. 但如果你仅改进你的私有代码,则不可能有那样的影响。 

c. 最重要的是,其他同行也在帮忙补充开发库的信息,这可以间接地帮助你。 
 
  总而言之,除非开发库与你的要求太不相符,你最好考虑选择使用开发库。  





 
原创粉丝点击