我们学到的越多,我们就越意识到要学习的东西太多了。
作为开发人员,我们在工作上花费的时间越长,获得的经验就越多。最终,我们甚至可能成为我们团队或组织中的重要人物,被视为我们领域的技术专家。
在这个水平上,我们获得了自尊心的提升,这是积极的。但是有时我们可能陷入陷入不必要的自我的陷阱。错误的观念正在蔓延,这可能导致我们开始倒台。
我经历了那段旅程。因此,我现在有意识地提醒自己不要再次陷入这些心态之一。我们将讨论其中的三个。
我曾经看到一个人发的一条推文,声称他的父亲(一名程序员)愿意教他如何编码,但他拒绝了。该推文的作者现在是一名开发人员,称自己是一个自学成才的程序员。
编程不是一种技能,仅通过学习课程或获得学位即可完全掌握。建立自己的能力需要大量的汗水和时间在挖掘和学习上。
这不是一个可以单独有效探索和完全发现的领域。我们可能没有个人导师,也可能没有上过任何以前的课程,但这并不能改变我们仍然可以通过从某处阅读而学习的事实-无论是书籍,教程,博客,手册,甚至是Stack Overflow 。所有这些东西都是由某人写的。
实际上,学习编程的最佳方法是与一组开发人员合作-通过代码审查,配对,不断的讨论以及思想和信息交流。参加会议,行会,道场等也有帮助。
因此,我们学到的很多知识以及今天所处的位置并不是在山上进行自我冥想的结果。相反,它是他人直接或间接与我们分享的知识和经验的累积吸收。
有人回应了我过去的一个博客,说:“年轻人不能专心。他们的生产力大大低于我们的老年人。他们的代码质量要低得多。”这份针对年轻程序员的笼统声明令我感到恶心,即使我不是年轻程序员。
我们学习,我们成长,我们衰老。利用时间的优势,我们有时会在某些领域的知识和经验上占上风。
但是,软件开发是一个日新月异的领域。人们需要继续学习以掌握技能。随着时间的流逝,我们获得并花费时间的一些过去的知识不再重要。当您考虑仍然重要的内容时,老一辈和年轻的程序员之间的知识鸿沟就会缩小。
有时,年轻的程序员可能会超越我们(老年人)的某些知识领域(我认为自己是老年人,已经工作了二十多年)。在软件开发中,过去10年中有太多新知识要收获,我们不可能提取所有这些知识。
永远不要轻看年轻的孩子。互相尊重,总是无耻地问和听取他们的意见。开门避免冒名顶替综合症。向比我们年轻的人们学到很多东西,我们可能会感到惊讶。
年轻的是未来。他们有一天会塑造世界。尽可能地教他们,并尽可能地向他们学习。我们并不总是对的。
“编程中还有什么要学习的?所有新事物都是外观不同的旧事物,或者只是if-否则,或者是外部由更高级的名称和结构覆盖的循环。”精通C ++和面向对象的程序设计之后,我就想到了这一点。
我鄙视Java作为C ++的次要语言,并且鄙视所有脚本(VBScript,JavaScript),并且不要忘记HTML,HTML甚至对我来说都不是一种语言。 Python,这是什么?没有{},并且可以选择使用;?使用缩进是必须的吗?
“进化”这个词对我而言毫无意义,十年后,Python成为最常用的语言。
我仍然对具有C编程能力,能够使用指针,具有适当的内存管理以及编写可编译为最小和最高效的可执行文件的代码的人员表示最崇高的敬意。
但是,这不再是主流软件开发的样子。网络编程在90年代和2000年代初期席卷了整个世界。自从iPhone推出以来,移动开发已成为软件开发中的重要角色。现在,人工智能可能会成为下一波潮流,Python语言将在其中发挥重要作用。
时光飞逝,直到今天:现在,我正在快速发展的移动开发领域为自己着迷。我只是意识到我当时错失了对我掌握的东西(即C ++)轻视较新但看似次等的产品(即Java)的错误。 Java影响了我们今天拥有的许多编程语言,而它的JVM是许多新语言(例如Scala和Kotlin)的基础。
千万不要一眼就鄙视新技术。 的确,它们中的大多数都是从现有技术衍生而来的,看起来可能很相似(有时甚至更低),但是所有这些微小的小变化都可能促成变革的下一个飞跃。 在我职业生涯的早期,我努力工作并获得了很快的晋升。 老板开玩笑地给我一些建议,“别自大。” 我想大概就是全部了。