如何成为优秀的程序员,这个问题我也曾经问过我自己,可惜我做的还不够好,经常这么反问自己的话,会提升你对开发流程工艺思考,同时没事也可以问问身边的是程序员的同事,我相信你们会引发一些有趣的讨论,但是北京计算机学习个人认为掌握下面五个技能非常重要,看看吧,为了我们都成为优秀的程序员。
1,问题分解
编程很大程度上是来解决问题,但是写代码之前,程序员需要弄清楚如何解决这些问题。一个优秀的程序员会尝试把这些问题进行拆分,然后一部分一部分去开发,直到每个部分都可以很容易的解决。但是仅仅做到这些还不够,一个优秀的程序员会发明一种工作模式,利用现有的标准化逻辑去开发,便于实现和测试。一些很复杂的程序,复杂部分的原因是代码实施不能完美的解决问题,而且代码难以理解。
当遇到难题建模,曾经采访优秀的开发者:“很少有程序是不能修改的,但是如果你看一段代码,它往往看起来很复杂,很多人觉得无从下手,他们往往这是缺乏思考的一种表现,而我会卷起袖子试图修复它,慢慢的其实这些都不算困难,而且很容易。”
2,情景分析
好的开发人员有能力考虑许多不同的场景。这既适用于程序中的逻辑,以及内部和外部事件可能发生。考虑不同的路径的逻辑,他们会问这样的问题:如果这个论点是零?如果这些条件是真的吗?这是线程安全的方法吗?发现软件需要处理什么类型的事件,他们会问这样的问题:如果这个队列变得满了吗?如果没有响应这个请求吗?如果其他服务器重启,这个服务器重新启动吗?
优秀的程序员会问自己:“这怎么能算结束呢?”说明他们还想测试自己的能力,相比之下,没有经验的程序员大多只考虑自己,能够暂时解决问题就行,当然大部分不可避免的意外情况发生,他们都有方法解决。
3,所示命名
编程在很大程度上由命名的事情:类、方法和变量。如果做得好,程序变得很大程度上是在自我记录,这意味着程序的功能是非常清楚的执行源代码。自我记录的代码的一个作用是,它自然会导致许多较小的差错,而不是几个很大的功能缺陷,因为这些优秀的代码将存在很多的地方。
想出好名字要困难得多。我喜欢一句话:“计算机科学中只有两个艰难的事:缓存失效和命名的东西。“部分命名是很困难的,因为它需要清晰的在脑海中每个名字代表什么。有时这是不清楚,但随着开发的进行才会显现。因此,重命名命名一样重要。”
命名的东西也还包括提出的概念,以及这些概念应该叫什么。通过考虑周全,明显命名概念一致地使用,编写的程序才会变得更容易。
在如今,社会中存在大量的程序员,这可能是因为写程序的人薪资非常高的缘故,不过,如此多的程序员中真正优秀的程序员却并不多,那么究竟怎样才算是一名优秀的程序员呢?北大青鸟老师告诉大家,真正优秀的程序员自身都拥有其他人不具备的好习惯,那么一个优秀的程序员该具备哪些好习惯呢?
1、学无止境:一名真正优秀的程序员是不会停止学习的,因为他们知道计算机技术的更新换代是非常快的,只要自己稍微放慢学习的速度,那么自己就有可能被其他人远远抛下,所以要想成为优秀的程序员,那么必须对业内的新闻、最新技术有全面的了解,这样你才能明白和了解整个软件开发的趋势。
2、掌握多种语言:程序语言是有很多种的,每一种语言都有其对应的领域,如果您不想将自己限制在一个固定的领域,那么您不妨花一些时间去探索一下其它的程序语言,这能让你的眼界变宽,从而你会被武装得更好,你思考问题也就更为全面,这对于自己和项目都会有好的帮助。
3、理性面对不同的 *** 作系统或技术:优秀的程序员明白不同 *** 作系统的优势、长处和短处,所以他们能够在选择系统类型的时候能客观、公正的进行选择,能够理性的分析和理心地面对。
4、别把自己框在单一的开发环境中:优秀的程序员不在意自己使用的到底是什么开发工具,他们选择不同的开发工具只是为了更好的达到自己的目的,他们会去尝试不同的开发环境,去发掘更好的利于自己工作的开发环境。
5、是一个优秀的团队成员:优秀的程序员从来不是孤单奋斗的,他们往往最喜欢和大家一起进行讨论,只有这样才能让自己更好得到进步。
6、做文档:优秀的程序员会将自己的工作内容做成文档,这样能让您的团队中的其他人能更好的明白自己的意图和想法,更好的应对团队中人的询问。
7、经常备份:好的程序员都有经常备份数据的习惯,他们为了保护自己的数据会将数据放在不同的地方,并做好定期(每日,每周,每月)的备份策略。
从以上的内容我们了解到了一个优秀的程序员该具备哪些好习惯,如果您想要成为一名优秀的程序员,那么就按照以上几点来要求自己吧,相信这样坚持下去您一定可以成为一名优秀的程序员的。
学习能力:互联网是一个日新月异的行业,所以对于码农来说,一定要具备不错的学习能力。学习能力一般会从两个维度来看:学一个新事物的能力,从经验中学习的能力。学习新事物的能力,不同面试官考察会很多。可以从项目中用到哪些新技术,怎么学的;或者让候选人介绍自己学某个东西的过程,从这个过程中考察候选对新事物的接受程度,学习的一些思路。我个人更喜欢考察从经验中学习的能力。比如这个项目,如果现在给你时间和资源,重新开始做,你会有哪些优化的方案?为什么?码农很多的经验都是从实践中来的,那实践之后有没有及时总结思考,是直接决定这个人成长速度的关键。团队协作:前面说过,我们做的事情不是原子d实验室,是需要高度团队合作的。那面试中一定绕不过去的就是团队协作能力的考察。比如你有没有自己做过项目负责人?做负责人中都出现哪些问题,怎么协调的?如果你是一个APP开发,那跟后端接口怎么协商,改接口怎么处理,各种校验逻辑放在客户端,还是服务端如何PK?产品改需求,怎么处理?项目中你的方案被别人否了,怎么处理?这些问题都是考察候选人在多人合作中出现问题,能否换位思考,能否有大局思维,以及一些基本化解冲突的经验和技巧。
抗压能力:码农是一个非常烧脑的行业,特别是线上出问题的时候,一定是血压飙升的时候,所以抗压能力也是考察的一个重要维度。抗压其实就看这个人为了一个目标能不能排除万难,坚持下去,在某种程度上你过去的经历可以体现你的抗压能力。比如卫哲老师有一次分享,说问一个小孩,你这辈子最苦的事情是什么?人家说有一次从杭州到上海的高铁,居然没有座位,我整整占了1个多小时……这样的人我肯定不敢要。所以面试中,面试官会经常问你做过一些有困难的事情是什么?或者举例说下自己如何坚持做一件事的。
综合能力包括的面很多,比如我一直觉得优秀的人一个基本素质一定主动性,这是贯穿整个综合面试中最重要的一个素质,可以从项目中看到你是否在积极推进项目进度,可以从你学习经历中看你是否主动思考,可以再抗压考察中看到你能主动排出万难,达到目标。任何一家公司都不希望找一个只是被动等待分配工作,做好分内事情的人,一定希望这个人能有全局思维去推动事,还能不断自我学习和总结。
此外,有的面试官会关注思维能力,比如我曾经校招面试时,就被问到一块蛋糕切成18份,至少需要切几刀?这个是见仁见智的一些考察方面,不做评价。OK,码农除了技术之外的基本能力模型和素质:沟通能力、学习能力、团队协作能力、抗压能力,以及最最重要的主动性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)