如何成为卓越程序员-前1%的秘诀与技巧 (如何成为卓越的人)
作者丨Halim Shams|编译丨诺亚|出品|51CTO 技术栈(微信号:blog51cto)
如果你想成为前 1% 的程序员,你必须遵循 1% 的程序员所做的事情,了解其他 99% 的人不会做什么。
在现代,我们有各种学习平台,里面充满了与编程相关的视频、图文以及其他资料。举例来说,我作为编程的初学者,去寻找路线图和指导。超过数百个视频弹出了截然不同的想法和信息,有时甚至是相互对立的。我继续信任拥有最多浏览量和订阅者的那个 UP 主。
结果,这个具有相当数量观看次数的特定视频成为观看次数最多的视频,显然,如果其他人也搜索编程路线图,该视频将出现在所有视频列表的顶部。结果就是,我们都遵循一个特定的路线图和指导,我最终成为一个普通的程序员,与其他程序员没有区别——99% 的程序员之一——他们的简历总是千篇一律,因为有相当多的程序员具有相同的背景。
作为程序员,我们收到的一个常见建议是观看视频教程,参加在线课程,并在此基础上添加 LeetCode,以获得我们梦想的工作。这正是 99% 的程序员所做的事情。当然这并不意味着那些遵循此建议的人最终会成为失败者,我也不是在完全否定观看视频教程、参加在线课程和做 LeetCode 的作用。但相反,通过遵循这些建议,你只会成为一个普通的程序员,无论多么努力,你仍然是一个普通的程序员。大量同质化的知识,会降低这些知识的含金量。
要想从 99% 的程序员中解脱出来,你需要与众不同,这需要一种与其他程序员完全不同的思维方式。当你发现 1% 的程序员在做什么时,你就会知道差异在哪里。
让我们深入研究只有 1% 的程序员在做的四件事......
1、拥抱调试
大多数人认为程序员把大部分时间都花在写代码上,但实际上,他们花了 80% 到 90% 的时间阅读代码而不是编写代码。对于程序员来说,这是编程中最压倒性的部分之一,他们中的大多数人都放弃了这部分。但秘诀在于,调试代码是编程中唯一可以帮助你编程并将自己变成程序员的部分。
在你有能力调试和解决代码中的问题之前,你并不被称为程序员。
2、质量胜于数量
当我刚接触编程时,我认为一个伟大的程序员是他们的个人资料中拥有最多项目的人。我的目标是在上观看最长的视频教程,并构建尽可能多的项目以领先于其他开发人员,但后来,我意识到前 1% 的人优先考虑质量而不是数量。他们不会浪费宝贵的时间来构建大量项目,而是通过应用他们的全部技能和知识来构建并专注于一个具有非凡功能的重要项目。事实往往是:简历上只有一个大项目的人会比简历上有一堆基本项目的人更出色。
3、读取代码
我记得我最初还是一个新手程序员的日子。我以为程序员天生就是写代码和构建令人敬畏的东西的。我希望在我刚接触编程的最初几天就知道这一点——当你阅读有经验的程序员编写的代码时,你就会成为一名专业的程序员。每一天,都要花一些时间阅读 GitHub 上的代码,而不是编写代码。这个原则也可以应用于我们默认的阅读书籍以获得想法然后开始写作的方式。如果你是初学者,一开始可能会造成一些混乱,但当你开始遵循这一点时,通过阅读其他专业程序员编写的代码,你会发现你编码的方式非常糟糕。
4、贡献
在你为别人的项目做出贡献之前,你不会被认为是前 1% 的人之一。作为一名非凡的程序员,你需要获得与他人合作、协作的经验。找到一个团队是很有挑战性的,但幸运的是,在编程方面,你可以在任何你想要的开源项目上做出贡献。没有开源项目可以贡献,作为程序员,你可能会回答。GitHub 上有数十亿个开源项目,他们的所有者热烈欢迎对他们的项目做出任何类型的贡献。
参考链接:
程序员如何提高自己的编程技巧
可读性:函数命名随意,实现逻辑混乱,代码格式不统一。 。 。 可靠性:程序运行很难稳定,bug百出。 。 。 维护性:代码逻辑没有层次,混成一团,很难维护改进移植性、重用性:许多人写的代码,只能各自使用,很少有能共享的功能性代码高效性:很少从算法、资源占用、执行效率等角度去考虑,经常导致服务器负载过重那么我们改进时,就可以从以上几点出发。 总结了一下自己以前的经验,主要有以下几点:提高自己的程序语言基础。 对于许多新手程序员来说,只是简单的学会了该语言,知道一些简单的用法。 但是实际编程的时候,许多写法、用法不标准。 举一个很常见的例子:许多人刚刚学c++,java等面向对象编程的语言时,虽然知道了类、知道了类一般都有“多态”的特性,但是他们还是经常会用“类型判断”去判断某个对象是属于哪个类的实例、然后强制转换、再调用方法。 却完全忽略可以用多态来避免这种丑陋的实现!熟悉语言规范。 如果不知道自己所学的语言还有规范,那么建议你现在去查找。 说个简单的规范,Java的类名要取得有意义、首字母要大写。 再比如:一个函数只实现一个功能。 再比如一个复杂的:连续的if else条件判断最好不要超过10个。 培养自己严谨的逻辑思维能力。 我们写程序,至少都会在脑海里走一遍程序的流程。 如果流程走通最后却出现bug,那么就是流程的某个细节我们没有考虑到!有的时候,我们总是自认为自己已经考虑的非常全面了,其实不然。 同样举一个例子:对一个集合,写个for循环按照一定的条件删除里面的元素。 其实这里面隐藏了一个“集合在动态变化”的陷阱。 比如说,将第一个元素删除了,如果集合的数据结构是将第二个元素移动到第一个元素上,那么,第二个元素就遍历不到了。 所以,有时候,我们看似很简单,觉得逻辑非常正确的代码,可能就潜伏着陷阱。 熟悉所用语言的API。 学一门语言,其实不只是学语法,学语义。 更重要的是学基本的API类库。 因为你实际编程的时候,自己所写的代码其实很少,大部分都是用的别人的API,将许多API的功能穿起来,才是自己实现的功能。 用好的API,能增加代码质量、提高代码可读性、减少代码bug、减少工作量。 就比如说堆栈这个数据结构,程序员基本都知道,但是大部分人可能都不能实现一个正确的堆栈API。 熟悉了解一些数据结构、算法。 平常写程序时,或多或少都要接触一些常用的数据结构,比如说链表、map等,了解它们的原理对于那些没学过数据结构的人来说很重要。 很多时候,一个简单的功能被实现的超级复杂的原因就是没有使用简单清晰的数据结构。 掌握一些编程思想、设计模式,这会让你的代码更加具有结构性、条理更加清晰!比如说,面向接口的编程思想,能让你的代码易于修改、易于扩展。 如果更进一步,站在架构的角度去考虑。 多看高手代码,读一些优秀的开源代码,看一些经典的书籍。 比如说《Effective C++》、《Effective Java》、lucene的源码。 这些会让你提升巨大,只有了解到高手眼中的世界,才能有成为高手的可能!代码重构。 多回顾之前写的代码,进行一个系统性的整理。 因为我们起初开发,不是面面都能想到,许多新东西是不可避免的,这就意味着可能会导致一些逻辑混乱。 在开发完成后,多回顾回顾,寻找能改进之处,这也是一种进步。 即时缺少高屋建瓴的能力,我们也应该多从全局的角度去考虑整个工程的代码的层次、模块、架构等问题点。 可以尝试着进行功能点拆分、接口交互设计等工作。 为自己的代码添加测试用例。 可能因为懒惰,许多程序员基本都不会为自己的代码添加测试用例,这其实是一个不好的习惯。 即时是有测试人员的团队,添加测试用例对你的好处也是显而易见的。 至于从团队的角度,可以考虑建立以下几点:完整的规范、执行流程、review机制和辅助工具。 由于本篇文章主要针对的是个人,就不展开。 工具方面,可以考虑开源的ReviewBoard。 个人的代码质量提上来,团队的水平才能提上来,公司的效率才能提升。 其实最主要的是,个人的层次、境界才能提升!
成为优秀Java程序员的10大技巧?
Java程序员有许多应遵循的守则或最佳实践方式。本文概述了每个开发者最应该遵循的10条守则或戒律,如果不遵循它们,将会导致灾难性后果。
1.为代码添加注释(Addcommentstoyourcode)._每个人都知道这一点,但不是每个人都会这么做。你有多少次“忘记”添加注释了?确实,注释不会为你的程序增加任何函数功能。但是,有多少次,看到2周前写的代码,你都记不起它是干什么的?你很幸运,那些未注释的代码是你自己写的,你脑海中还会有残存的印象。非常不幸,大多时候,代码是别人写的,并且那个人很可能已经离开公司了。有句谚语说的好:“有来有往,互惠互利”,因此程序员应该体谅彼此(还有你自己),给你的代码加上注释。
2.不要把简单事情复杂化(Donotcomplicatethings)._我曾经这么做过,我相信你也一样。开发者都倾向于采用复杂方式解决简单问题。我们在一个只有5个用户的系统中引入EJB,为一个并不需要框架的应用实现一套框架,采用属性文件、采用面向对象解决方案、使用线程,而这些根本用不着。为什么会这么做?一些人可能不知道有更好的解决方案,但另一些人可能故意这样做来学习新知识,或仅仅是因为有趣。对那些不知道更好解决方案的人,要多听有经验程序员的建议。对于那些纯粹出于个人目的而将设计复杂化的人,我建议你要更加专业一点。
3.记住-“越少越好”并非总是如此(KeepinMind_“Lessismore”isnotalwaysbetter)._高效率的代码是件好事,但很多情况下,并非代码行数越少效率就越高。
4.不要“硬编码”(Nohardcodingplease)._由于时间紧迫,开发者总是会忘记或故意忽略这一条。然而另一种可能是,遵循这条戒律,我们就不会陷入“时间紧迫”的困境。定义一个staticfinal变量,增加一行代码,又能花多长时间呢?
5.不要发明你自己的框架(Donotinventyourownframeworks)._不夸张地讲,已经有几千个框架存在了,大多数还是开源的。很多框架都是极完美的解决方案,并已被用到成千的系统中。我们只要关注最新的流行的框架,至少表面上要熟悉一下。一个最成功的、也是被广泛使用的例子是Struts框架,这个开源的web框架是建立web系统的极佳选择,不要试图构造你自己的Struts版本,会累死的。但你必须记住第2条(译注:原文是“第3条”,显然不对)戒律——不要把简单事情复杂化。如果你要开发的系统只有3个界面,就不要用Struts.对于这样一个系统,没有足够的需要被“控制”的东西(译注:Struts将界面做MVC划分,C即controller,所以作者说thereisn’tmuch“controlling”required)。
6.对Print行或字符串说不(SaynotoPrintlinesandStringConcatenations)._我知道为了调试方便,程序员喜欢到处用,然后对自己说过一会就删掉。但我们常常忘记删掉这些行或不愿删掉,我们用做测试,为什么测完后还要去改代码?java课程认为这很可能导致误删一行我们需要的代码。不要低估的危害。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。