成为优秀程序员的 8 种方法
成为优秀程序员的 8 种方法
是时候认真对待如何提高你的编程技能了。让我们开始吧!
“成为一个牛逼的程序员”是一个看似很容易实现的职业生涯改进目标,但其实这并非是一个简单的目标。一方面,对自己提出“我想变得更出色”,表明你已经有一个标准,认为什么样才是“更出色”。另一方面,大多数人谋求改进,却不知如何才能变得更出色。
无论做什么工作, 都希望能做到最好, 就像参与一款游戏, 每个人都希望能赢到最后. 工作自然也会有其”秘籍”, 让我们更快的实现目标. 有些工作五年的程序员仍然很平庸, 也有刚学一年就技术出众的天才.
因此,我来分享八条切实可行的指导方针,以作为你提高编程技能的路线图。这八条饱含智慧的经验,都是 35 年来计算机行业的精华。对于某些程序员来说,其中有许多条都未免见效缓慢。
1.提醒你自己还有多少知识不得不去学习
学习某样知识的第一步就是要承认你不了解它。听看起来理所当然,但经验丰富的程序员仍然记得他们花了多长时间才能克服这种个人假设。大多数计算机科学专业的学生,毕业后常常会带着自以为是的观点“我知道什么是最好的”来虚张声势,以及他们知道所有事情的这种无可争议的事实,并强烈需要将这些证明给每一个新同事。换句话说:“我知道我在做什么!”这种态度将会妨碍你学习任何新知识。
2.停止试图证明自己是正确的
你需要从过往的经验中学习,才能变得伟大而不仅仅只是不错而已。但需注意,经验也可以教唆我们重复不良行为和养成坏习惯。我们都曾遇到过拥有 8 年经验的程序员……每年相同的经历,重复八次,仅此而已。为了避免重蹈覆辙,审视你做的每一件事,并问自己:“我怎样才能做的更好?”
软件开发新手,以及拥有很多经验的程序员,在审视他们编写的代码时,会自我赞赏他们代码的优美。他们编写测试程序用来证明其代码运行良好,而不是试图使代码运行失效。然而真正伟大的程序员则积极寻找他们代码的错误所在,因为他们知道终端用户将会发现他们遗漏的代码缺陷。
3.“代码可以运行”不是终点,而是起点
你的第一步通常是写高质量的软件以满足需求说明书。大部分程序员此时结束该事,转而处理下一件事。
但是,代码一旦“完成”就停止,就如同拍完照,并期待它是一件艺术品。伟大的程序员知道第一次迭代仅是第一次迭代。如果代码能正常工作,那么祝贺你,但这还不算完成。现在,就让它更好。
部分的迭代过程可以定义何为“更好”。让编码更快,更容易形成文档,更容易复用,更可靠,这些是否有价值?针对每个应用程序都会有不同的答案,但过程都是相同的。
4.代码写三遍
优秀的程序员编写可以运行的软件。伟大的程序员编写运行非常好软件。这很少在第一次尝试编写就能实现。最好的软件通常要被编写三遍:
1.第一遍,你编写程序用来给自己(或客户)证明方案是可行的。其他程序员可能认识不到这只是一个概念验证,但你认识到了这点。
2.第二遍,你让程序运行起来。
3.第三遍,你让程序正确的运行。
当你思考顶级开发人员的作品时,这一级的工作可能表现的不是很明显。他们所做的一切看起来都是如此的杰出,但你没有看到的是,即便如摇滚明星般存在的开发者们,在把他们的软件展示给其他人之前,可能扔掉了第一个和第二个版本。扔掉代码和从头再来是把“使之更好”整合到你的个人工作流中的一个强有力的方法。
哪怕没有别的好处,“代码写三遍”也会让你明白,有多少种方法可以用来解决同一个问题。当然,“代码写三遍”也能阻止你陷入原地踏步。
5.读代码,读大量的代码
你可能希望我提出这个建议,这确实是提高编程能力的最普遍也是最有价值的建议。阅读别人的代码是如此重要,但其中缘由并非是显而易见的。
当你阅读别人的代码时,你会领悟到别人是如何解决编程问题的。但不要把它当作文学作品,而是把它当作教训和挑战。为了做的更好,要问你自己:
1、我怎么会写那段代码?既然你已经想到另一个解决方案,你会怎样做到不同?2、我学到了什么?我怎样才能将这种技术应用到我过去写的代码中呢?(“我从来没有想过在那里使用递归降序…”)。3、我如何改进这段代码?如果它是一个开源项目,你有信心提出一个更好的解决方案,去实现!4、用作者的风格写代码。这个训练能帮助你融入编写软件的程序员的思维,进而能够提高你的共鸣感。
不要只是漫不经心地思考这几个步骤。写下你的答案,无论是在个人日志、博客、代码审查过程中,或与其他开发人员共处的社区论坛。正如向朋友解释问题可以帮助你解决问题,写下和分享你的分析可以帮助你理解为什么你以特定的方式对别人的代码作出反应。我之前提到的自我反省的所有部分,可以帮助你冷静地判断自己的长处和弱点。
警告:阅读大量的代码很简单,但并不足以使你成为一个伟大的程序员;这就如同一个梦想成为作家的人,可以阅读伟大的文学作品,但丝毫没有提高自己的散文文笔。大量的开发人员查找开源或其他软件去“寻找答案”,并且很有可能通过复制和粘贴代码来解决类似的问题。这样做实际上会使你成为一个糟糕的程序员,因为你盲目地接受别人的智慧而不去审视它。另外,这可能比夏天的野餐拥有更多的 bug,因为你没有花时间去了解它,你永远不会意识到你引入了一个生产 bug 的工厂。
6.写代码,不仅为了工作
为个人编程项目工作有许多优点。一方面,它为你提供了一种学习工具和技术的途径,而这些工具和技术在你目前的工作中是不可用的,但这会让你更适合下一份工作。不管你是否为开源的项目做过贡献,或承担当地社区组织的公益性工作,你都将会获得技术技能和自信。另外,你的个人项目也向潜在雇主证明了你是一个永不停止学习的自驱动的程序员。
为兴趣编写代码的另一个好处是,它强迫你自己去做一些事情。你不可能把很难做的事情留给别人做,所以它不会让你过早地去寻求帮助。
小贴士:不要只选择你从未失败的个人项目。你需要失败!即使你可能不想在工作中或者当你有最后期限时失败。
7.与其他开发人员以一对一的任何方式开展工作
这有助于倾听其他人的观点。这可能意味着结对编程,或参加编程马拉松,或者加入一个编程用户组(像 Vermont Coders Connection)。当你对开源项目做出贡献时,注意用户和其他开发者的反馈.。在他们的批评中,你能发现它们的共性吗?
你可能会很幸运地找到一个你可以信任的个人导师,指导你无论是编码技术还是职业决策的所有事情。不要浪费这些机会。
8.学习技术,而不是工具
编程语言,工具和方法不断更迭。这就是为什么尽可能多地获得更多语言和框架方面的经验是值得的。专注于编程基础,因为基础永远不会改变,更注重架构而不是编程。如果你确信只有一个正确的方法去做某事,这可能是自我检查的时候了。教条会牵制你学习新事物的能力,使你适应变化更缓慢。
不是每个人都能成为高手,但是不努力,就算有再高的天分,也白痴一个!如果你想学习 Java 工程化、高性能及分布式、高性能、深入浅出。性能调优、Spring,MyBatis,Netty 源码分析和大数据等知识点可以来找我。
而现在我就有一个平台可以提供给你们学习,让你在实践中积累经验掌握原理。主要方向是 JAVA 架构师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进 BAT 但是有担心面试不过的。
工作一到五年的程序员朋友面对目前的技术无从下手,感到很迷茫可以加 v:xiaoyanya_1,点击链接加入,里面有阿里 Java 高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!
评论