做者 | Esther Schindler 程序员
译者 | IT外文选刊(公众号回复“IT666”领取技术学习全网最全资料,更多资源持续更新中!)web
提高你的编程技能是一个很容易实现的职业发展目标,但“成为一个值钱的程序员”不是一个简单的事情。首先,若是说“我想变得更好”,就假设你知道“更好”是什么样子的。然而,太多人想提高和进步,殊不知道如何作。编程
所以,让我分享8个可操做的方法,能够做为提升你的编程技能的指引。这些秘诀都是在计算机行业35年的时间里收集的,其中不少都是基于前人的整理。架构
「要想成为一个优秀的程序员,学习的第一步是了解到本身有不懂的东西。」这听起来很明显,但有经验的程序员们都知道,要克服这种我的假设须要多长时间。太多的计算机科学专业的学生在毕业时都是带着“我知道的最多”的傲慢自大,认为本身什么都知道,以及向每个新的同事证实这一点的强烈欲望。换句话说。你的自觉得是的态度会阻碍你学习任何新的东西。框架
要成为伟大的人,而不只仅是优秀的人,你必须从经验中学习。但要当心,经验会教咱们重复不良行为,养成坏习惯。咱们遇到过有八年经验的程序员...和一年经验同样,只是重复了八次。「为了不这种状况,复盘你所作的每一件事,问问本身,“我怎么才能把这件事作得更好?”。」编程语言
新手软件开发人员(以及太多有经验的开发人员)看着他们的代码,都是为了欣赏代码写得有多精彩。他们写测试来证实他们的代码是有效的,而不是试图让它失败。「真正优秀的程序员会主动寻找他们的错误,由于他们知道最终用户会发现他们的问题。」工具
你的第一步是要写出符合规范的高质量软件。通常的程序员都会在这一点上放弃,转而去作下一件事。学习
可是,一旦“完成”了就停下来,就像拍了一张照片,指望它成为一件艺术品同样。「优秀的程序员都知道,第一次迭代只是第一次迭代。它成功了-恭喜你!- 但你尚未完成。你须要把它作得更好。」测试
这个过程的一部分就是定义“更好”的含义。让它更快、更有价值吗?更容易文档化?更可复用?更可靠?每一个应用的答案可能都不同,但过程不会改变。职业规划
好的程序员写出的软件都是好用的。优秀的程序员写出的软件都是很是好用的。但这种状况不多在第一次尝试时发生。最好的软件一般要写三次。
「当你看到好的开发者的做品时,他们所作的工做可能并不明显。他们所作的一切看起来都是那么的辉煌,但你没有看到的是,即便是明星级的开发者,也可能在向别人展现他们的软件以前,就把初版和第二版扔掉了。」扔掉代码,从头再来,是很是有力的方式,能够将其归入你的我的工做流程中。
若是不出意外的话,"写三次"能够教会你有多少种方法来处理一个问题。并且,它还能防止你陷于困境。
您可能但愿我先提出这个建议,的确,这是提升编程技能最多见也是最有价值的建议。但须要弄清楚的是,阅读别人的代码为何重要的缘由。
「当你阅读别人的代码时,你看到的是别人是何解决一个编程问题的。但不要把它当成文学做品,把它当成是一门课,也是一种挑战。」要想变得更好,请问本身:
不要只是闲着无聊地想着这些步骤。把你的答案写出来,不管是在我的日志、博客中,仍是在代码审查过程当中,或者是在社区论坛上和其余开发者一块儿讨论,均可以帮助你找出答案。就像向朋友解释一个问题能够帮助你梳理出解决方案同样,写下并分享你的分析能够帮助你理解为何你会对别人的代码作出特定的反应。这都是我前面提到的复盘的一部分,帮助你冷静地判断本身的优势和缺点。
警告:阅读了大量的代码,可是仍是不能成为一个优秀的程序员是很常见的,就像一个想成为做家的人,阅读了大量优秀的文学做品可是并无提升散文水平同样。大量的开发者看开源软件或其余软件,就是为了“找到答案”,颇有多是复制粘贴看似能解决相似问题的代码。这样作实际上会使你成为一个更糟糕的程序员,由于你不加审视就盲目地接受别人的成果。(另外,它可能比夏天野餐的时候bug还多,但由于你没有花时间去了解它,因此你永远不会知道你导入了一个bug工厂)。
从事我的编程项目的工做有不少好处。「首先,它给你提供了一个学习工具和技术的途径,而这些工具和技术在你目前的工做中是不具有的,但在下一份工做中却能让你更有市场。」不管你是为一个开源项目作贡献,仍是为社区组织承担无偿工做,你都会得到技能和自信。(此外,你的我的项目还能向潜在的雇主证实你是一个永不中止学习的自我激励者)。
为了乐趣而编写代码的另外一个好处是,它迫使你本身去想办法。你不能把困难的事情交给别人,因此它可让你不至于过早地寻求帮助。
专业意见:不要只选择我的项目,不要只选择你永远不会失败的项目。你须要失败! 可是,你可能确实不想在工做中或当你有时间期限时失败。
倾听别人的意见是有帮助的。这可能意味着结对编程,或参加黑客马拉松,或加入一个编程交流群。当你对一个开源项目作出贡献时,要注意从用户和其余开发者那里获取反馈。你在他们的批评中看到了哪些共同点?
「你可能很幸运地找到了一个你能够信任的导师,在从编码技术到职业规划等方面都能给你提供指导。不要浪费这些机会。」
编程语言、工具和方法论层出不穷。这就是为何尽量多地得到语言和框架的经验是值得的。专一于编程的基础知识,由于基础知识是永远不会改变的;多关注架构而不是编程。若是你以为只有一种正确的方法来作某件事情,那么多是时候进行检讨了。教条会阻碍你学习新事物的能力,让你迟迟不能适应变化。
END
外文连接:
https://blog.newrelic.com/eng...
版权声明:
本译文仅用于学习、研究和交流目的,欢迎非商业转载。转载请注明出处、译者和IT外文选刊的完整连接。