学会“偷懒”:优秀程序员是如何减少学习的?


全文共2204字,预计学习时长8分钟

学会“偷懒”:优秀程序员是如何减少学习的?_第1张图片

图源:unsplash

 

很多人在不同领域的学习上都存在一个相同误区:为了变得更优秀更专业,我需要学习尽可能多的内容,于是拼命扩充自己的任务清单。但事实上,学习内容的多少与学习效果之间没有绝对的联系。

 

作为一个编程狂热学习者,我感兴趣的编程主题非常广泛,任务清单上的课程、教程和文章多达几十个。但最近,我开始思考哪些课程是真正值得我去花时间的。

 

T型陷阱

 

如果你正在努力发展自己的事业,可能会遇到T型人才这个概念,指的是一些人在某一领域是专家,且对其他领域也有一定涉猎。例如,你可以是一个精通后端开发的专业人员,同时对DevOps、产品管理和前端也有一定的了解。

 

学会“偷懒”:优秀程序员是如何减少学习的?_第2张图片

图源:unsplash

作为员工来说,T型人才是无价之宝,他们丰富的知识有助于沟通并增强创造力。拥有广泛的兴趣是好事,我主张技能全面性将成为未来的核心竞争力。但要想成为T型人才,需要对一些学科有相当深入的了解。

 

学习一两个课程并不意味着你真正了解一个领域。相反,它可能会让你对自己的能力产生盲目的自信。学太多东西、分散精力对你的职业发展丝毫没有帮助。它只是让你在各个领域都浅尝辄止,但都没有做到深入了解。就像写了两篇博文并不能成为出名的作家一样,经过一个月的集训,你也无法成为一名称职的程序员。

 

仅仅在多个领域浅尝辄止的算不上T型人才,你必须仔细计划如何深入学习你的主要专业领域并发展次要技能。

 

为了成为更优秀的程序员,你需要确定基本能力和可能遇到的挑战,然后聚焦这些问题,删除所有不必要的课程。我将以我自己为例来说明如何做到这一点。

 

强化主要技能,挑选重要领域

 

我是一个专业的前端web开发人员,对多种语言的后端编程有一定了解,我已经使用React Native创建了一些移动应用程序。前端开发算是我的主要技能,现在要来选择我的其他必备技能了。

 

对我来说,专注于前端开发是有意义的——无论是在web还是移动设备上。要成为一个熟练的前端开发人员,我需要成为JavaScript方面的专家。因此,所有关于高级JavaScript的课程可能都很有用,那么我可以从待办事项列表中删除关于创造性编码的课程。

 

我主要研究React,我会关注它和它的生态系统。所以再见了,Angular和Vue,我会想你们的。我的关键技能是JavaScript和React,其他语言和框架也可以作为次要技能,但重点是明确的。

学会“偷懒”:优秀程序员是如何减少学习的?_第3张图片

图源:unsplash

只学习你将来会用到的技能

 

JavaScript和React的生态系统是一个庞大的主题,我需要进一步缩小我的兴趣范围,最好的方法是选择你可以在实践中用到的课程。

 

我已经第三次学习Redux了。前两次,我是因为网上的每个人都说它很重要才开始学习它的。我完成了一个教程并阅读了文档,但我没有在任何项目中用到它,很快就忘完了。直到我出于必须使用的需要开始了第三次学习,学完课程后,我立即开始使用它解决问题,这才算是真正学会,现在我可以随时使用Redux了。

 

真正的学习发生在你专注于一个项目的时候。如果你没有在实践中使用你的知识,那么再多的教程也帮不了你,学习你不会在专业或个人项目上用到的东西是在浪费时间。

 

不要欺骗自己

 

除非你能向技术小白解释清楚你在干什么,否则永远不要认为你已经懂了。时刻注意你理解上的漏洞,提防虚假的自信。正如理查德·p·费曼所说:“首要原则是你不能欺骗自己——你是最容易被欺骗的人。”

 

如果深入挖掘的话,几乎所有的编程都是很复杂的。你知道如何管理React中的状态吗?可以通过组件传递道具或使用Context API,或者选择一个库(Redux或MobX),Facebook刚刚发布了一个名为Recoil的新的状态管理图书馆。

 

解决状态管理问题的办法有很多,这恰恰是因为状态管理很困难。或许你认为教程完全可以帮助你解决它,但事实上是很难做到。只有在遇到现实挑战之后,你才能理解为什么存在这些库,它们解决了什么问题,以及为什么它很复杂。

请记住,编程是非常困难的,你需要挑战自己。

 

选择一些次要技能

 

要成为一个真正的T型人才,次要技能也是必须的。在过去的几个月里,我开始学习但从未完成各种课程,从DevOps到Golang语言,再到机器学习。这很有趣,但显然无益于我的职业生涯。

 

学会“偷懒”:优秀程序员是如何减少学习的?_第4张图片

图源:unsplash

学习第二技能的要点与主要兴趣领域的要点非常相似。你需要根据优先级和在现实生活中使用它们的机会来选择技能,光靠理论是不够的,所以请毫不留情地删除无关的课程。

 

为了进一步发展我的职业生涯,我需要把重点放在那些在长远看来对我有益的技能上,这些技能要与我的主要专业足够接近,这样我才可以从部分的知识重叠中获益。

 

我没有很强的数学背景,所以是时候跟机器学习和人工智能说再见了,看起来我不会成为数据科学家;至于一些流行的后端语言,在可预见的将来我不会在我的公司使用它们,所以这是浪费时间;DevOps很难,我可能没有机会在这方面工作,所以就跳过了。

 

因为我经常和设计师们一起工作,所以学习设计基础知识是个不错的主意;我很喜欢写编程方面的东西,所以这方面的书一定要列在我的待办事项清单上;我的项目管理能力没有我想要的那么好,所以发展这个领域必须成为我的优先事项。

 

再看到干货满满的教程文章和感兴趣的内容时,我还是会毫不犹豫地将其加入收藏夹中,但只会选择那些从长远来看对我的职业生涯有益的学会。想变得更优秀,你得学会做减法。

 


推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:刘艺、钟惠

相关链接:

https://medium.com/better-programming/how-to-become-a-better-programmer-by-learning-less-655f7e4abba4

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

你可能感兴趣的:(编程语言,人工智能,知识图谱,jira,scrum)