首先,尽管提出了问题的方式,但任何学习都没有止境,尤其是在我们领域,因为新事物的产生比您阅读有关它们的速度快。就是说,当您要改进时,我将考虑以下类别。为了获得最大的利益/投资回报,您应该从最薄弱的领域中选择一些东西。
基础知识
尽管知道编程语言并具有实践经验,但人们经常(尤其是自学)在其中一些基本的基础知识还不完善的领域。考虑一下诸如数据结构,算法,缓存策略,哈希函数等...
请注意,这还包括编程语言的基础-从编译器,优化技术和类型系统到类别理论,单子语法等等。
如果您受过良好的教育,例如已经获得了大学学位,那么您在这一类别中可能已经很强(当然还远远不够,但基础很强)。否则,请尝试阅读这些区域中的几本书,以查明您的曲目中是否有您根本不知道的东西。此类别是最容易高估自己的类别。
范式知识
当程序员出现时以为他们是万能的,而对主流范式却一无所知时,我总是感到惊讶。如果您认为面向对象是终结,那么这就是您需要改进的类别。如果您认为函数式编程也存在,甚至可能听说过逻辑编程,那么它仍然是一个不错的选择。还有更多的范式,对它们的了解对您产生类似于编程世界新视野的深刻影响。
只是不要忘记:关于什么可以被视为范式的论点经常(本质上是哲学)。不要被这些所困扰。您的目标应该是拓宽视野,这意味着了解这些东西,无论是否有人将X视为自己的范例,都不会对此产生任何影响。
专业知识
所有这些中最简单的-同时最不有用。当然,您可以致力于一种技术并了解其所有来龙去脉,但是您应该准备为此付出代价。随着技术的日新月异,它们的发展速度越来越快,这几乎可以保证,在这里投入的时间将在未来几年毫无价值。
收益递减的问题也在这里闪耀。从本质上讲,成为某事的专家意味着您必须在狭窄的主题上花费无数的时间,因此,根据定义,学习新知识将花费您很长的时间,而新事物将是一个很小的小难题,不会改变任何人对任何事物的看法。
领域知识
是因为这是您的工作领域,还是仅基于您的个人兴趣,但是成为计算机科学和某个领域的专家是非常有价值和有益的。我在这里不是在谈论CS的其他领域,例如计算机图形学或AI。相反,请注意计算机已经占据了每个人的生活,这使得其他每个领域都受到计算机和您可以进入的领域的约束。
这显然属于“您的领域之外”类别,但它不是一个尖锐的数学“外部”,而是一个应用领域。考虑药物:我不建议您成为医生。但是,学习医学基础以将您现有的计算机科学知识应用于该领域的问题确实值得。范围从可视化技术到机器人技术,再到专家系统和仅用于会计/管理的数据管理。尽管您已经完成了所有这些操作,但是在另一个领域中进行操作最终可能会带来全新的体验。
不过请记住,与其他类别相比,这是您方向发生更大变化的一种方式。您在日常工作中可能没有与该领域的任何联系,因此很难实现。它甚至可能意味着切换工作。另外,您将需要有关新领域的某种认证-毕竟您是该领域的完全新手,并且您必须与跨学科研究的毕业生竞争,这些学科已经开始了他们成为该领域专家的旅程。
补充知识
正如Mike Brown所补充的,在您当前的工作中还存在一些知识领域,但是并不是绝对必要的。您不需要成为项目经理就可以了解项目管理,但是像往常一样,更多的知识将使您对另一端的变化有更深入的了解。甚至可以将这一点推广到专注于软技能的地步。我猜每个与其他人一起从事真实项目的人都知道这些价值。