如何成为一名优秀的程序员?

如何成为一名优秀的程序员

什么样的才是优秀程序员?

拥有清晰的逻辑思维;思维灵活;好脾气耐心;严谨细致;时刻保持学习能力;喜欢自己的职业;善于分享但不是纸上谈兵;乐于写注释、写文档、看文档;掌握底层系统原理;追求代码世界的简约;平衡实用主义和完美主义。

水平越高,接到的任务就越模糊。优秀的程序员一定拥有很好的抽象和分析能力。

水平越高,接到的任务涉及的范围就越广。个人单打独斗就越来越不重要,为了调动资源、协调各方,优秀的程序员一定拥有很好的沟通、交流、领导能力。

一般的程序员解决问题,而优秀的程序员试图解决产生问题的根源问题,并且一般化问题的解决方法;

一般的程序员克服问题的复杂性,而优秀的程序员试图降低问题的复杂性,并且一般化问题复杂性降解的方法;

一般的程序员想到的是编程问题,而优秀的程序员试图理解编程要解决的问题,并且把程序作为一种,而不是全部解决实际问题的手段;

一般的程序员操作的是语法和变量,而优秀的程序员操作的是类型和问题域,并且一直努力提升抽象问题的能力。

普通程序员可以利用搜索引擎寻找答案,经常性找不到好的解决办法,然后更换技术方案,顶级程序员也利用搜索引擎寻找答案,一般bug都顺利解决(其实跟前期框架选择等关系非常大)。

通常,优秀的程序员基于自己广泛的涉猎和良好的开发直觉,对于算法、技术以及软件架构表现出一种直觉的理解。

如何成为一名优秀的程序员

为什么要成为优秀程序员?

实践表明,只要你能把一个乃至若干个通常的技术做法推进到极致,并能给企业带来价值,那么无论你是多大年纪,你已经获得了职场的主动权。

优秀程序员生产效率是良好程序员的3倍,是糟糕程序员的10倍。

属于顶尖的1%,不仅写代码,还拥有一系列无形的特质,使其在众多程序员中脱颖而出。

简言之,优秀程序员=良好程序员 一系列无形特质。

优秀的程序员会花费90%的时间来思考、调查、研究最佳的设计方案。而糟糕的程序员则会花费90%的时间来调试代码,并随意地改动代码并尝试让代码工作起来。那些花大量的时间写代码的程序员其实是很懒惰、很无知,或是很自大的,以至于不能使用已经存在了的解决方案来解决已有的问题。

优秀的程序员精通于对通用模式的识别和重用。好的程序员并不害怕持续地重构/重写自己的代码,直到达到最理想的方案。糟糕的程序员的代码基本上都缺少概念一致性,代码冗长,缺少层次和模式,所以,也就很难被重构。所以,重写他们的代码要比重构他们的代码要容易得多。

如何成为一名优秀的程序员

怎样成为优秀程序员?

绝大部分软件工程师都不是技术天才,但却都可以通过坚持必要的约束(训练),成为杰出的程序员(软件工程师)。

丰富的知识储备。拥有丰富的知识储备,需要有获取知识和结构化知识的能力。有一个计划:你需要制定你想要学习的路线图。作为一名软件开发人员,你需要不停地学习,把握一万小时定律。通过快速原型来学习,快速原型的目的是学习,它的价值不在于代码,而在于你通过快速原型学到了什么。

扎实的基础和练习。计算机基础和相关专业基础。构建东西:不要仅仅是阅读,要去试着构建一些简单的 App,学以致用;做个人项目。学习框架,以及与该框架相关联的完整的开发栈。

程序员对于自己的代码是如何执行的以及执行结果等知道得一清二楚,事情做得专业的前提是能关注到细节。优秀者经常会帮助他人。而且他们在帮助别人的同时,自己也能学到很多东西。近朱者赤,与优秀的程序员一起工作,积极听取他们的反馈,学习他人的代码。

很少有程序天生就是复杂的。如果你看到一段非常晦涩的代码——你无法理解它到底要做什么——这通常就意味着它的实现非常糟糕。这个时候不要撸起衣袖就开始修改代码,而是应该退一步,好好地重新思考一下。当你把整个问题都想透了,你会发现问题其实很简单。

代码要写得简单、易懂、有逻辑、别重复。经常重构代码,同时注意要解决问题的根源。

多花时间分析问题,后面就可以少花时间去修复。

像测试人员一样看待问题。好的程序员应该会问自己:什么情况下它会出现问题?反过来,没有经验的程序员通常只考虑程序主逻辑——也就是当所有事情都如预期时的正常的控制流程。不过一旦发生了异常情况,程序必须得能够应对它。

安全, 安全是指工作不要出重要的问题。无论完成多少任务, 错误导致的损失都是无法弥补的。 关键节点的检查尤为重要。除了编程的注意事项, 提交代码前要仔细地review自己的代码。

好的命名,同样也包括你所提出的概念以及这些概念到底叫什么。如果仔细地思考过这点的话,不同名字的概念应当是始终一致的(在程序中,不管是和程序员还是非程序员讨论业务领域时都用的是相同的概念),这样写程序就会非常容易。

消除不相关模块之间的影响;当你的软件有多种技术结合在一起的时候,要采用松耦合的配置模式;把常用模块的功能打造成独立的服务,通过良好的界面 (API) 来调用不同的服务。

设计要接近问题领域。

估计任务所花费的时间,避免意外。

理解常用的设计模式,并知道择机而用。

代码版本管理工具是你代码的保障,重要的代码一定要有代码版本管理。

重要的接口要用形式化的“合同”来规定。

在设计中考虑对并行的支持,这样你的API 设计会比较容易扩展。

在设计中把展现模块 (View) 和实体模块 (Model) 分开,这样你的设计会更有灵活性。

重视算法的效率,在开始写之前就要估计好算法的效率是哪一个数量级上的。在实际的运行场景中测试你的算法,不要仅停留在数学分析层面。

在开始设计的时候就要考虑如何测试,如果代码出了问题,有log来辅助debug吗?

本文链接:https://www.dzdvip.com/15859.html 版权声明:本文内容均来源于互联网。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 395045033@qq.com,一经查实,本站将立刻删除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注