如何成为优秀的程序员2

来源:互联网 发布:opencv实现分水岭算法 编辑:程序博客网 时间:2024/05/18 16:36

   1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,
      如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专
      业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高
      的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,
      即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
        2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问
      题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除
      计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也
      是一个很好的途径。
        3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换
      原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被
      人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单
      方案不能满足要求时再考虑复杂的方案。
        4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听
      轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类
      游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得
      到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
        5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能
      知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你
      才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
        6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸
      出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
        7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始
      终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程
      序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了
      你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
        8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming
      is 99 weat and 1ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的
      。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个1
      0000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一
      工作,你就可以满足这一条。
      
      --------------------------------------------------------------------------------

      * 比较宽的知识面,并且能够时时补充自己的知识和完善自己的知识结构
      * 耐心好,特别是在调试和学习阶段,世界上没有聪明的人只有刻苦的人。做开发其实
      就两件事情学习和改错,在这两件事情中间的开发过程其实是比较简单的
      * 永远记住:代码是给人看的而不是给机器运行的,计算机在执行程序时是不怕累的,
      而人在看代码时是非常累的
      * 良好的编码习惯,至少保证自己能够随时看懂几个月前自己所写的代码
      * 尽量让你的代码能够很容易的被别人理解,写代码时想想你会不会在两个月后被别人
      骂
      * 不要容忍自己犯重复的错误和写重复的代码
      * 知道如何做比得到代码更重要
      * 尽量不要做已经有很多人已经做过的事情
      * 学会尊重别人的开发成果,除非不得已不要下决定全面替换以前的系统
      * 珍惜自己的时间与工作成果,尽量让别人分享自己的开发成果
      * 避免假设,多思考极端情况与引起错误的可能性,努力减少低级错误
      * 不要相信至少是不要轻信自己为自己所做的测试结果
      * 懂得坚持自己的开发思路,并懂得理解与吸收别人的思想
      * 学会与其他人保持一致,但不能放弃自己的开发特色
      * 懂得向你周围的人学习,不论是开发能力上的还是开发经验上的
      * 懂得软件结构的的重要性,分析代码前先分析代码的结构
      * 学会总结,定期总结自己所学会的知识,看看自己前段时间因为各种原因所浪费的时
      间
      * 学会计划,尽量不要认为通过延长自己的工作时间来完成任务
      * 学会正确估计自己的能力和工作时间
      下面这些是我认为一些比较适合我自己的方面,不一定对每个人都合适:
      * 多看些杂志,没事情的时候可以看看以前看过的参考书,书中很可能有你以前没有注
      意到的一些细节
      * 不要太早去做一些与开发无关的事情,因为学习的黄金时期是很短暂的
      * 学会分析别人的系统,多看看别人所开发的系统的先进的一面。这里包括别人的开发
      思路,实现时所采用的结构
      * 时常感到自己将被淘汰,经常埋怨自己的不努力
      * 知道自己缺少什么
      * 强迫自己做一些自己不喜欢做的事情,比如说写文档
      * 能够有勇气重写自己所开发的系统,但当你重做时你应该采取和前一次不同的工作方
      式和方法,否则重做就没有必要
      * 将问题简单化而不是复杂化
      * 将维护时会产生的一部分问题转移到开发时或是设计时来解决
      * 有时候也不妨问问自己:我不做开发时去做什么
      * 坚持为自己做每周的开发计划,在事情没有做完以前不要轻易转移自己的注意力
      * 尽可能多的将你所做的教给别人,因为你有一天可能不再负责这个系统
      * 做事一定要有始有终,除非是有不得已的理由否则不要在工作完成前提前离开
      * 不要将你为公司做的东西带走,你因该带走的是开发经验和对开发的认识而不是代码
      和产品
      * 感到累时就休息一下,给自己放个假也无妨,毕竟人不是机器
        做程序员很累的,够你受的,加油吧!


----------------------------------------------------------摘自VMware.CN