中级程序员还应该如何提高自己?

更新日期: 2019-04-19 阅读: 1.7k 标签: 程序员

想法和问题

程序员已经处于中级时,应如何提高自己?有很多关于“学习编程”的资源,能够让人从0到新手(虽然这些资源中大多数的质量是值得商榷的),但是怎么样才能将中级水平提高到专家级?如何构建允许我在高级别编写代码的心理模型?

在这篇文章中,我将讨论关于普遍性能改进的一些理论,然后讨论一些程序员用于实践的方法(以及我对这些实践的想法),然后是我对改进成为中级或更优秀程序员的最佳方法所作出的结论。


关于普遍性能改进的快速指南

我最近一直在阅读大量关于性能改进的内容,大多数文献使用K. Anders Ericsson的研究作为起点。他是性能研究的杰出面代表,几乎在所有涉及这个主题的书中都被引用。他今年发表的书《Peak: Secrets from the New Science of Expertise》,浓缩其30多年的研究,易于理解,这也是我推荐给大多数新手的单个最佳资源。

简要总结上下文:

  • 改进任务的执行来自于开发更好的心理模式,更好的心理模式通过有意或有目的的实践。
  • 为了能够实现改进,必须能够定义什么构成改进性能并且分解实现步骤。
  • 实践和性能是不同的,最好的实践方法几乎从不是性能。例如:一个想要提高击中的棒球运动员应该花费30分钟在练习场中练习200个投球(实践),而不是用2个小时去比赛中观看15个投球(性能)。


提高方法

我发现人们建议的大多数关于编程的改进方法就是基于性能的。阅读代码,阅读关于代码的内容,编写代码,做项目,谈论代码等等。如果他们在自己的工作之外做这些事情,那么程序员基本上肯定会有所提高,但似乎不是很有效率。

如果我想更擅长于编程,但每周我只想从自己的时间中花几个小时致力于编程呢?什么是建立更佳心理模型的最有效方式,以便于我可以做出更明智的决定? 《Peak》一书中关于刻意实践的一个首选例子是音乐家。想要提高特定乐器的技能或学习一首新的音乐,是有经过定义的,标准化的方式的;包括一个音乐家在几个月的时间里学习一首新音乐的例子——每日只是刻意练习5分钟。而在编程中,我们没有大量的明确目标或改进措施(即:在某一段音乐作品的错误的数量),但其他的我发现都没有这个比喻接近。

那么,我们如何得到我们作为程序员的性能反馈循环?是的,我们有特定片段代码的反馈循环,无论代码是否工作,它的性能和健壮性如何等等。我们对于系统的稳健性有一个更长的反馈循环,因为它们在负载下会跌倒或随着时间的推移会变得笨拙。但是我们并不经常得到问题方法的实时反馈。

下面是我用来学习编程的方法,有些地方很不错,也有些地方值得改进:


通过编程挑战实践

我享受于编程挑战,但一般来说,我发现它们不值得去接触一种新的编程语言。它们提供弱反馈循环——你的程序要么产生正确的输出要么不产生——并且不会给你对设计过程的反馈。这个方法可能会介绍一个新的算法或一个你不熟悉的语言的新功能,但在实践方面,很弱。比起“实践”,它更接近于“性能”,并且你处理的是人为的问题,而不是真正的问题。

我发现的一个例外是由@ericwastl的Advent Of Code。编程问题很好地模拟了现实生活中的问题(需求定义明确,但是边缘情况没有写入规范并且必须隐含),并且对于解决方案有多么设计良好具备即时反馈,因为对每个抛出额外需求或一些其他困难的问题有part 2,这意味着你必须重新评估你的原始解决方案有多少精心设计。这并不完美,但我喜欢看到我的解决方案具有挑战性,并且经常不得不重新考虑我的解决方案的结构和设计,当我达到part 2的时候。


做业余项目

做业余项目,如果你有一个的话,将是投入额外编程时间的伟大方式;如果你做一些你喜欢的事情的话,你就不会觉得这像工作。不幸的是,因为项目参差不齐,所以你可能不会真正学到东西。如果你的业余项目与想要学习的编程内容相一致的话,那么恭喜你,这是一个好选择,否则它只是性能vs实践的另一个版本。即使在最好的情况下,如果主要目标是生产某种东西,那就意味着实践和学习得排在后面。


阅读关于编程实践的书

阅读编程书籍是一个快速提升知识的很好方式,我认为它应该是几乎任何“提高编程”方案的一部分。然而,它并非是让人能够一劳永逸的银弹。纯粹的知识获取可以帮助你知道有哪些可用的选项,当你碰到某个问题的时候,但知识不能代替更好的心理模型。


最终建议

不幸的是,我没有能够得出具体的结论。也许答案是,需要有编程教练或导师,以便可以得到针对性的反馈和具体的实践建议。也许这学科还太年轻,没有正式的性能改进方法,不像古典音乐训练和运动训练。

在评论中告诉我你的想法。我特别想听听那些通过教学/训练/指导而高水平产出的程序员的看法,或者在这样的老师下学习的人。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/8696

相关推荐

程序员表白代码

许多程序员小伙伴总是苦于找不到合适的告白方式。小编特地收集了一些程序员专属的告白方式与大家分享,一起看看程序员用代码敲出的浪漫吧~

程序员笔名、别名_适合程序员的英文名字

一个厉害的程序员,都会有一个牛逼哄哄、有辨识度有个性的英文别名。在公司同事中很更好的称呼,这篇文章翻译整理了一下适合程序员的英文名字

如何撩一个程序员_ 老司机教你怎么追程序员

对于女生来说,撩到一个程序员的好处是显而易见的。他们生活圈子简单,很少参加聚会。他们不是在修改代码,就是在去修改代码的路上。这篇文章告诉你怎么撩程序员

程序员年龄大了怎么办?程序员年龄大了的出路

在很多人的眼里,程序员都是吃青春饭的。尤其是国内更是这样认为,程序员年龄大了,体力越来越差,就不好找工作了,开始担心以后的出路了。那么未来大龄程序员的出路在哪呢?

程序员美女鼓励师

美女程序员鼓励师,真正的程序员眼里只有代码!有些IT公司会招一些程序员鼓励师,也是为了提高程序员们的工作”战斗值”。 而关于程序员鼓励师的作用,她们总是能激发程序员们的肾上腺素分泌。

嫁给程序员好吗?为什么劝你嫁给程序员!

另外一个附加的惊喜,程序员个个都是潜力股,你看无论是世界首富,还是中国首富,最多的就是做IT,说不定那天一不小心,你就成了亿万富翁的老婆啦, mm们,选个程序员当老公不会错的。程序员收入稳定,生活安逸,属于长期持有型成长股

1024节日的由来,程序员的你最想对自己说的是什么?【1024程序员节日】

吃饭睡觉写代码,基本都程序猿的大部分生活了,作为从事最累的职业之一的我们终于有了自己的节日,那就是1024。1024向程序员致敬,向自己致敬,向未来致敬。

一位程序员相亲:趁头发还在找个女友,标准是女孩就行

近日,有一位程序员小哥哥的相亲图引发了大量网友的围观。这位天然呆的程序员表示自己现在年纪不小了,想趁头发还没掉光时找个女朋友。至于择偶的标准,他表示只要是女孩就行

男朋友是程序员应该注意什么?

程序员一直和代码打交道,俗称码农 。如果你的男朋友是程序员,在你心目可能觉得他:具备高智商技能、不爱与人打交道、T恤和牛仔裤是基本标配、不浪漫的直男癌等等,那怎么和程序员男朋友相处呢,需要你应该注意什么呢?

程序员喜欢什么样的妹纸?

程序员一般都是和代码过日子,尽管有的时候代码很调皮,常常出各种状况,各种bug。每当周末和节日的时候都是代码陪着程序员或者程序员陪着代码。代码是程序员又爱又恨的伴侣,尽管可能有烦恼

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!