一个优秀程序员的几个表现

#

软件蚕食一切,未来属于程序员。所以人人都想当程序员。但是并不是每个人都能当好程序员。在你做出决定前还是先看看自己能不能当好程序员吧。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

要记住的是,编程不是什么精英才能干的事情。

这个行业永远都缺人。所以除非你一点都不喜欢编程,或者也没有准备好看在钱的份上忍住这种不喜欢,否则都可以来编程。

优秀程序员的几个表现:



  1、先进行实验是他们的本能反应




编译器和运行环境通常能比人更快地解释一个问题。一个优秀的程序猿在拿着问题去向别人寻求帮助之前,会自己试试看并判断方法是否有用,而不是直接找一个高级程序员问“我这么做有用吗?”。



  2、对待代码和设计不要情绪化




代码就像纸巾:它有用你就用,没用了就扔掉。几乎我们所有人都认为代码复用( code-reuse )很重要,尽管确实如此,但是这也不意味着要像养孩子那样去对待代码。代码没有感觉也不会在乎,它们会像法兰克斯坦( Frankenstein )怪物那样攻击你。代码只是一堆字节,是一种责任( liability )。



  3、对编程有激情




很多程序员干这一行只是为了挣钱,如果有更好的职业,他们会毫不犹豫的辞掉程序员的工作。而优秀的程序员热爱编程,喜欢钻研代码中的问题,他们感到能指挥电脑来帮助人们和自己解决现实生活中的问题是一种神奇的能力。当遇到问题无法解决时,他们会茶不思、饭不想,无法入睡。



  4、君子善假于物




优秀的程序员知道如何能更高效的完成任务,如何更能有效的解决问题。当遇到问题时,不钻牛角尖,善于利用外部工具解决自己的问题,特别是能熟练应用搜索引擎。初级的程序员只会使用百度和百度知道搜索问题,而高级的程序员/优秀程序员使用谷歌和Stack Overflow或者MSDN forums这类网站寻找更优秀的答案。


  5、不仅关心技术方面的知识,同时关注非技术方面的知识




不称职的程序员喜欢临时抱佛脚,只有在需要的时候才去学习。而优秀的程序员会去主动学习各种相关知识,对各种知识来源都有一种开放的心态,而不会象有的人那样固步自封。 而且,并不只局限在跟职业相关的技术类知识,同时他也会学习任何感到有趣的知识,比如沟通技巧等。

糟糕程序员的几个表现:


(1)无法对代码进行推理

对代码进行推理意味着能跟随代码的执行路径(“在脑子里运行程序”),同时清楚地知道代码执行的目标。


(2)补救措施

程序猿可以通过实践来克服这个缺点,如果 IDE 自带的调试器能单步调试,就把它作为助手使用。比如说在 Visual Studio 里,这就意味着要在问题区域的起始处打上断点,然后按下‘ F11 ’单步调试,查看变量的值(变化前后都要查看),直到你明白了代码正在做什么。如果你的目标环境不具备这种特性,那就找一个拥有这种特性的环境去实践。

这么做的目的是,让你做到不再需要调试器就能在脑子里跟随代码的流程,而且有足够的耐心去思考代码正在对整个程序的状态做什么。这么做的好处就是能够识别出冗余且无用的代码,而且不需要从头执行整个路径就能在当前代码中找出 bug。


(3)难以理解语言的编程模型

面向对象编程( Object Oriented Programming )就是一种语言模型,正如函数式编程( Functional programming )或声明式编程( Declarative programming )一样。它们每一个都和过程式或命令式编程有着显著不同,就像过程式编程明显不同于汇编或基于 GOTO 的编程。此外,虽然有很多语言都跟随同一个主流编程模型(如面向对象的编程),但它们都只介绍自己的改进,例如递推式构造列表( list comprehensions )、泛型( generics )、鸭式分类( duck-typing )等等。

640?wx_fmt=jpeg

(4)不使用版本控制

版本控制确实是一个非常有用的技术。它不仅可以跟踪解决方案中的每个文件,存储整个历史,还可以区分不同的版本到分支,知道什么时间是谁改变了什么(并且如果提交的信息足够详细,还可以知道原因)。

640?wx_fmt=jpeg

(5)使用糟糕的变量名

知道将variable1和variable2作为变量名有什么问题吗?变量应该根据它们做什么或者它们包含什么来命名。对了,Visual Studio有一些强大的重构工具,可以相对容易的让它们回到井然有序的状态。


(6)重复代码

非常推崇《Pragmatic Programmer》(《程序员修炼之道》)这本书,上面推荐的第一个秘诀就是不要重复代码。上面要求无论如何都不得重复代码,在我看来过于极端了。如果相同的代码需要重复4次,那么可以为这段代码创建一个函数,这将极大地改善你的代码。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#程序员书籍推荐 1、C#编程 C# Windows Form 程序设计------对熟练掌握WinForm编程基础比较有用,看得时候建议将书中的例子从头到尾做一遍,这样会有比较好的收获,否则,学习效果一般。 C# XML从入门到精通 ------这本书前半部分讲的关于XML的基础操作比较有用,后半部分如果对XML有兴趣的话也可以仔细看看,毕竟XML是现在的一个主流方向。 C#高级编程 ------大家公认的一本C#经典教课书,但是太厚了,要有耐心仔细看下去,不然效果就不是很好。 说明:个人认为看编程的书就要敲代码,如果将书中的例子做一遍,只看书,效果会大大折扣的,尤其对于刚开始学习编程的人。 2、代码质量 重构-改善既有代码的结构 ------一本与设计模式齐名的经典著作,对你的代码规范、代码质量以及软件设计都有很大的帮助。 个体软件过程 ------一本偏重于软件工程的书,也许你会觉得很无聊,但是如果坚持下来,你会觉得效果真的就如书上所说。我只坚持了一个月,但是感觉收获已经很大。 说明:软件代码质量和个人的编码习惯、编码风格有很大关系,当水平达到一定之后,你的编码习惯、编码风格如果有问题的话,会阻碍你的进一步提高的。编码风格、编码习惯的改进中再坚持。 3、设计思想 UML与模式应用 ------我看到的第一本让我佩服的书,也是OO方面我的启蒙书,这本书我看了三遍,笔记记了一大堆,每次都有新的收获,而且最近还计划在仔细阅读一遍! 设计模式 可复用的软件设计基础------一本计算机界公认的经典著作,这本书对于入门者可能有点困难,但是这本书看十遍都不多!绝对的经典!如果以后想做软件开发的话,个人建议将这本书看五遍以上! 面向对象编程导论(原书第3版)------一本对OO讲述比较全面、比较经典的书籍。 说明:设计思想方面,OO是现在的主流,东西很灵活,要多看相关的书籍,多在实践中运用。同时,看着部分的书,一定静下心来人真看。 4、软件工程 应用极限编程-积极求胜 ------极限编程现在很火,也是你无法全部接受它,或者你周围的环境不能实施它,但是其中的一些思想、最佳实践可以用在你的工作中,无论是编码还是设计,对你的思路都回有很大好处的! RUP导论 ------RUP和XP是现在很火的东西了,这本书对RUP进行了很好的描述,书很薄,但是能够让你很好的全面地认识RUP。 用例 通过背景环境获得需求------用例分析是RUP中很重要的一个环节,这本书讲的很好,无论在需求分析、软件设计方面都会对你有很大启发。 说明:软件工程现在门类很多,可能很多东西我们周围没有使用的环境,或许我们不会从事软件过程管理,但是其中的很多思想对我们个人的软件开发都会有很大的帮助! 5、软件测试 软件测试的艺术 ------可以帮你纠正很多对软件测试的误区! 单元测试之道 C#版-使用NUnit-----NUnit可是被誉为.net程序员必备的一项工具啊!很不错的一本书,值得仔细看看! 测试驱动开发 ------经典的书籍,虽然是XP中核心的内容之一,但是即使单独运用它,也会给你意外的惊喜。 说明:软件测试并不只是手工点点按钮,其实内容很多的。好的测试员,不仅需要对测试领域有深刻的理解,也需要很高的编程功底。即使你不想从事测试工作,学习这些东西,也会对你的编程水平、代码质量有很大的帮助。 个人认为,看一本书,尤其是经典的著作,看十遍都不为过。同时,看书的过程还要学会发现在其感兴趣的、不了解的内容,然后自己再找相关的书籍看。以上的书只是我看过的、个人认为比较经典的书籍,可能个人情况不一样,兴趣点不一样,对我来说经典的书籍不一定对大家经典,但是,要学会自己查资料、学东西的能力,这才是最重要的。如果你能有毅力用一年或者一年半的时间把上面的书籍吃透,再加上公司项目的锻炼,那恭喜你,你的编程和设计能力在你们同学之中肯定可以稳居前10%。 读书,尤其是软件方面的书,其实是很累的,可能读一本书不累,但是如果你能每天坚持三个小时认认真真地看书,能够将一本经典之作认认真真读五遍,而且一直认认真真,那你的毅力真地令人佩服,同时,你的汗水带给你的会是很多的惊喜! 首先让自己喜欢读书,然后学会读书,再学会自己找书读,自己查资料、解决问题……

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值