首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员薪资差异后面不谋而合的秘密

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

优秀程序员的几个表现:

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

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

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

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

3、对编程有激情

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

4、君子善假于物

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

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

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

6、有好的工作习惯

养成程序员的工作习惯或工作态度及解决问题的办法.

比如,我在公司接手一个新的项目,我首先会在电脑上建一个这个项目的文件夹,然后分门别类的把涉及这个项目的所有资料,都放在一这个文件夹里.

然后在后续的开发,及修改过程中,我会把自己的分析,及解决办法,业务的理解,客户的需求等等统统记录下来.这样,就算我让其他同事负责这个项目了,他也会有资料看,或者我辞职了,接手的程序员也会很快上手的.假如我去一个新公司,接手一个项目的维护工作,如果没资料,我很难上手的话,我会很快再辞职的.(这对公司来说也是一个很大的损失)

7、就是善于总结

善于思考技术点.假如思考这么多年的话,关于底层的,很多技术的来龙去脉都会很清楚.也会举一反三进行创新.

糟糕程序员的几个表现:

(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次,那么可以为这段代码创建一个函数,这将极大地改善你的代码。

怎样成为一名架构师:

Java行业在当下人才是供不应求,但是作为Java程序员的你也得居安思危,你要知道你身处的是一个高速变化的行业,稍不留意你的位置还是存在被取代的风险,那么对于一个Java程序员来说,要如何避免被淘汰呢?

1. 时刻关注Java行业动态

每一个Java程序员该做的,除了日常的工作外,要花点时间在Java行业动态上,不要轻易相信那些对Java不好的言论,比如“Java将死”,从而产生极大的焦虑,你要做的就是根据Java行业动态冷静分析,实时对自己的发展方向做出调整。

2. 不断学习新出Java技术

很多Java程序员,一直固守不前就是因为觉得自己当下的Java技术应付当下的工作绰绰有余了,而不重视新的Java技术的学习。你要知道你这就是安于现状,那么你就真的只是一直会是低级Java程序员,因为你的Java技术不更上时代的发展,即使你在Java行业从事再多年,你依旧胜任不了高级Java工程师的工作,自然面临淘汰。

3. 学习和总结的能力

程序员是很容易被淘汰、落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。

善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。

善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180410A13Y5J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券