糟糕程序员和优秀程序员的区别?

实验是本能

作为一个优秀的程序员,独立永远是你自己最重要的武器。在遇到困难的时候多问问自己为什么,多进行实验来进行测试,这远比你直接去问更牛叉的老大哥们好不好行不行更利于你的成长。当这种行为模式成为习惯乃至本能反应,你会发现也许你不懂得不会的会变多,但是你同时也会发现更好的自己。

拒绝情绪化

代码是无情的冷酷的没有感觉的,但是编写代码的我们是有血有肉的。每个人都有自己的情绪,但请你注意不要把情绪带入你的工作中来。编程是严谨的、不容许丝毫差错的,如果你情绪化的对待他们,你会发现一大堆的bug会排着队来找你。

永远有激情

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

君子善假物

优秀的程序员会知道怎样最快最好的达到自己的目的。当你遇到了问题,不要去钻牛角尖,先冷静下来思考一下解决它的途径有哪些。初级的程序员只会使用百度和百度知道搜索问题,而高级的程序员/优秀程序员使用谷歌和Stack Overflow或者MSDN forums这类网站寻找更优秀的答案。

博文而广见

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

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

糟糕程序员的表现:

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

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

(2)补救措施

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

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

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

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

(4)不使用版本控制

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

(5)使用糟糕的变量名

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

(6)重复代码

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

本文来自企鹅号 - 西安华清远见媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏恒思考

流媒体第二篇-直播协议入门大纲

为什么要研究这个,这个是一个非常基础乃至关键的东西,类似于http之于web。做了一年多直播app觉得,如果想弄明白到底那些功能应该在哪一层实现,必须先把这一关...

1647
来自专栏北京马哥教育

分享:自学编程的方法

不管是在某些论坛上,或者在微博上,都看到过很多人提问如何自学编程。心声共鸣啊,我就是从完全自学开启编程之路的。 要说到自学的过程、要多长时间才算学会、有什么具体...

2564
来自专栏butterfly100

领域驱动设计的基础知识总结

1. 什么是领域(Domain) 我们所做的软件系统的目的都是来解决一系列问题,例如做一个电商系统来在线销售自己企业的产品;做一个灰度发布平台来提升服务的质量和...

29311
来自专栏Java学习网

新手Web设计师应该避免的 6 宗罪

新手Web设计师和开发人员往往以有缺陷的创作而告终,却不知道真正的故障出自于哪里。虽说有这么多的设计书籍,但即使都读了,也不会对最后的设计有任何意义。在第一个原...

2197
来自专栏灯塔大数据

塔说 | 如何用Python分析数字加密货币

帮助 这篇文章的目的是简单介绍“如何用Python来分析数字加密货币”。我们将用简单的Python代码来检索、分析和可视化不同的数字货币数据。在这个过程中,我们...

3785
来自专栏CSDN技术头条

学完 Python ,我需要编个游戏露两手

作为一名拥有十余年程序设计教学经验的老师,我清楚地记得,当告诉学生们课程任务有俄罗斯方块游戏开发的时候,部分同学在课堂上热切地喊出“好耶”,部分同学鼓起掌来,大...

2576
来自专栏牛客网

应届渣渣前端面经(还有游戏策划以及鸡汤)

2995
来自专栏Android机动车

糟糕程序员和优秀程序员的区别?

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

925
来自专栏青枫的专栏

壁挂式空调漏水怎么办?如何解决?

一:安装不牢固:室内机安装膨胀螺丝未打稳,安装不牢固影响平衡,导致排水管引出一侧位置偏高,造成排水困难,从而发生空调机机体滴水现象。

614
来自专栏灯塔大数据

区块链 | 用Python从零开始创建区块链,看完再不懂算我输

前言 如果你还没有听说过 3 点钟区块链群,说明你还不是链圈的人;如果你还没有加入 3 点钟区块链群,说明你还不是链圈的大佬;如果你还没有被 3 点钟区块链群刷...

4338

扫码关注云+社区