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