乐虎国际 > 海文新闻 > 35年编程史沉淀下来的8条宝贵经验

35年编程史沉淀下来的8条宝贵经验

2017年10月25日10:20:58来源:海文国际         893
分享到:

35年编程史沉淀下来的8条宝贵经验

1.时刻提示自己:学习

学习某件事的第1步是承认你不知道。这听起来很正常,但经验丰富的程序员还记得要真正让自己承认这1点需要花多长时间。很多计算机科学专业的学生毕业的时候,都有1种很狂妄的态度,就是“我知道最好的”,但其实这只是1种虚张声势,他们不知道从哪里来的自信,就好像他们甚么都知道,并且需要向每1位新同事强烈的证明这1点。换句话说:你所谓的“我知道我在做甚么!”这类态度会妨碍你学习新的东西。

2.不要试图证明自己是正确的

要想成为优秀的人,你必须学会吃1堑长1智。但是千万谨慎,经验也可能教会我们重复1些不良行动,乃至也教会我们养成1些不好的习惯。我们都遇到过有8年经验的程序员。对他们来讲,1样的经历,重复了8次。为了不这类综合症,看看你做的每1种事情,然后问自己:“我怎样才能让它变得更好?”

新手(和很多经验丰富的开发人员)会看着他们自己写的代码,欣赏它的奇妙。他们编写测试来证明他们写的代码是可以运行的,而不是试图让它运行失败。真正优秀的程序员会积极地寻觅他们的毛病在哪里,由于他们知道终究用户会发现这些遗漏的bug。

3.“代码可以运行了”这个目标不是终点,而是动身点

是的,你的第1步总是想写出质量很高的代码,而且代码上面都写满了注释。但是1般的程序员在这1点上就退出,然后继续下1件事。

但是1旦“完成”就停止了这类思想就像是拍1张快照,然后期待它是1件艺术品1样。伟大的程序员都知道第1次迭代只是1次迭代。它运行起来了,恭喜你!但你的工作还有很多。现在,使它变的更好。

其实这个进程就是在定义“更好”的含义。让它变得更快能有甚么价值吗?可重用更高有甚么好处吗?更可靠吗?答案随着每1个利用程序的不同而不同,但是进程都是1样的。

4.写3次代码

好的程序员目标是写出可以运行的软件即可以够了。伟大的程序员写出来的软件目标是运行得非常好。通过1次编写这类情况几近不可能产生。最好的软件通常被写3次:

首先,编写软件以向你自己(或客户)证明解决方案是可行的。其他人可能没故意想到这只是1个概念验证,但你确切这么做了。

第2次可让它正常地运行。

第3次你能够让它安稳的运行。

当你看到最优秀的开发人员的工作时,这类级别的工作可能其实不明显。他们所做的1切看起来都很出色,但你没有看到的是,即使是开发界的大腕儿,也可能在向其他人展现他们的软件之前就已抛弃了第1个和第2个版本。抛弃之前的代码并开始编写另1个版本是1种强大的方式,可以将“更好地”融入到您的个人工作流程中。

如果没有其他情况,通过“写3次代码”可以告知你解决问题的方法有多少种。而且它可以免你堕入停滞不前的状态。

5.浏览大量的代码

你可能希望我能够引导这个建议,实际上,这也是提高编程技能的最多见和最有价值的建议。浏览他人代码的缘由也很重要,只是否是是很明显而已。

当浏览其他人的代码时,你会看到其他人是如何解决编程问题的。但不要把它当作是文学作品,而是把它当作1种教训和1种挑战。想要变得更好,问问自己:

那块代码我该怎样写呢?既然你已看到了他人的解决方案,那你会有甚么思路呢?

我学到了甚么?我如何将这类技术利用到我过去编写的代码中?(“我历来没有想过可使用递归降落处理那块的逻辑”)。

我如何改进这段代码?如果这是1个开源项目,你对自己的解决方案更有信心,那就去做吧!

以作者的风格编写代码。练习这个可以帮助你进入作者的思惟,这可以提高你的同情心。

不要只是漫不经心肠思考这些步骤。写下你自己的答案,不论是在个人日志、博客、审查代码的进程中,还是与其他开发人员交换的论坛中。就像向朋友解释问题可以帮助你解决问题1样,记录和分享你的分析可以帮助你理解为甚么你会以1种特定的方式对他人的代码做出反应。这是我之条件到的自省的1部份,帮助你冷静地判断你自己的优点和缺点。

正告:在不需要成为1名优秀程序员的情况下,很容易浏览大量的代码,就像1个想要成为作家的人可以在不提高自己散文的情况下浏览伟大的文学作品1样。很多开发人员都在寻觅开源或其他软件来“找到答案”,而且很多是复制和粘贴代码来解决类似的问题。这样做实际上会让你成为1个更糟的程序员,由于你盲目地接受他人的智慧而不去审视它。(另外,它可能比夏季野餐还要麻烦,但由于你没有花时间去理解它,你永久不会心识到你就像是大自然的搬运工1样,只是在做体力劳动。)

6.不要把编写代码仅仅看做是任务

从事个人编程项目有很多优势。首先,它为你提供了1种学习工具和学习技术的方法,而这些工具和技术在你当前的工作中是用不到的,但是这将使你在下1份工作中更有市场。不管你是为开源项目做贡献,还是为当地社区组织做公益工作,你都能取得技术技能和自信。(另外,你的个人项目向潜伏雇主证明,你是1个从不停止学习的人。)

编写代码的另1个好处是它逼迫你自己去解决问题。你不能把这些难啃的问题留给他人,所以它会让你过早地寻求帮助。

专业提示:不要只选择那些你永久不会失败的个人项目。你需要失败!但是你可能不想在工作中失败,或给你限定期限时你也不想失败。

7.尽1切可能做到与其他开发人员面对面的工作

凝听他人的意见是很有帮助的。这可能意味着结对编程,或参加黑客马拉松,或加入1个编程用户组(比如VermontCodersConnection)。当你为1个开源项目做贡献时,要关注1下你从用户和其他开发者得到的反馈意见。你在他们的批评中看到了甚么共同点?

这样做你可能会很荣幸地认识了1位可以完全信任的导师,无路是编码技术还是职业决策,你都可以完全信任他。所以不要浪费这些机会。

8.你是在学习技术,而不是在学如何使用工具

编程语言、工具和方法这些都只是1时的。这就是为甚么需要你在这么多的语言和框架中尽可能多的取得经验。重点关注编程基础,由于基础永久不会改变;更关注体系结构而不是如何编程。如果你觉得做某件事只有1种正确的方式,那多是时候进行现实核对了。条条框框的限制会妨碍你学习新事物的能力,也会使你很难适应变化。

我可以继续前进,但自我提升的关键原则是知道甚么时候停止。

本文来源于代码湾,仅供个人研究、交换学习使用,不触及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。