别因为要学的太多反而压垮自己
自学是个好主意。我非常赞成终生学习,你应该这样做。但是,在软件开发领域,有如此多的新技术,有如此多要学习的东西,我们在学习中会感觉被完全压垮了。
你感觉你一直在扮演追赶的角色,但是一直都赶不上。就像是跑步机一直比你能跑的最快速度还要快几步,你一直受挫,还有在最后关头掉队的危险。
试着学太多
问题就是尝试学太多导致的。有100种不同的技术,这些都是你必须或想要在工作中应用的。你感觉为了能够胜任,为了做到最好,你需要学习和精通所有的这些技术。然而问题是,你感觉你其实一个都不精通。
这是个非常轻视的感觉。回应这种感觉——有时候证明这是骗子综合症——你拿起书,课程视频,和所有你觉得需要精通的技术的各种资源。
你把晚上和周末的时间都用来读书,进行在线训练并且读一些博客。
但是,这样是真的有效,还是让你承受了太大的压力?
你能记得你读的一半内容吗?
你会真的用到它吗,或者你为未来的某天准备——我可能会需要这个桶?
我的观点并非是你们不应该学习,只是可能你承受了太大压力想要学太多东西。
我这样说是因为我也曾经是这样。我这样做过,我知道这是什么感觉。
我也知道这样用强行的步骤学习不是很有效。我不能记起大部分我读过的技术书,并且在工作中很少或者没有应用过。
我知道我学习的技术最好是能在实践中应用。事实上,我的一些最有用,并且保留下来的学习成果,是因为学习我当时做的事情,但是我处理一个问题,无法解决,因而我必须寻找一个答案。
及时的学习
看起来可能会很奇怪 ,像我这样合理分配软件开发学习资料的人会告诉你,不要去学习太多东西。
可能更合理的情况是我跟你鼓励要吸收所有你能接受的信息。你应当在你吃饭,睡觉的时候连续不断的看我的课程资料,并且将其应用于工作。
但事实是,我不认为这是最有效的学习方式。我不认为你不停地看我的课程就能学到很多东西。
我觉得改进技能的最好方法就是学习,你需要做的就是在你正需要这些知识的时候学习,所谓的及时的学习。
这不意味着在了解一门技术前就开始相关的工作。如果你对要使用的技术一无所知,你会在开始阶段就浪费大量时间。但是,我发现只要先做了一下的三件事,你就能够开始使用这门技术开始工作了。
- 如何起步
- 用这门技术能做什么
- 在你90%的时间里都会用到的东西
这并非巧合,我大部分的在线课程都是这样的结构。我试着告诉你如何起步,展示它能做的,并且告诉你一些基础。我试着避免深入技术各个方面的细节,因为这些东西最好是你需要它们的时候再去学习比较好。只要你知道了如何做,具体的细节可以以后再学习。
通常,学一门新技术最难的地方是学习它能实现什么。
我发现,越快在实际中应用一项技术并且解决实际的问题,越能够有提高。只要你做到了以上我提到的三点,能让你的时间更好的花在用技术解决工作中的问题而不是仅仅学习技术本身。
尽管很难放弃和投入。我们的直觉告诉我们一直读书,一直看视频,在开始做事前一直的学习。
你可能会迫使自己在用一门技术前就精通它,但你必须学会忍受催促。你必须在犯错和遇到阻碍的时候学习。真正的学习是发生在你需要它的时候,而不是在之前就获得它。
如果你知道了通过一门技术能做什么,并且还了解了足够的基础,那么在遇到实际中更多问题时,也完全没有问题。及时的学习在长远来看是更加有效的,并且能够让你不用花费大量时间去处理你消化不了的信息。
你不可能什么都知道
即使你有足够的时间学习,即使你使用及时的学习,你仍然只会学到软件开发领域的一点点。新技术每天都在出现,现有的技术也在不断发展。
意识到你不可能把所有的东西都学会是很重要的。你不可能全部学会,而你知道的可能只是现有技术的一小部分。
这是我谈到专门钻研某一方面的原因之一。你最好能选一门技术,并且深入钻研它而不是所有的技术都想要精通。
这不意味着你不应该在不同的方向上扩展你的技术;你当然应该尝试不同的东西。不要觉得你能在好几个领域内都能够精通。试着让你的学习集中与两个主要的方面:
- 一个你要精通的特长
- 在软件开发领域里通用的技术(《代码大全》)
不要去让自己的精力太分散。在你需要的时候根据自己的能力进行学习。如果你基础很好,依靠时间和经验,你能学会任何你需要用到的技术。
有时候,一些超级程序员看起来什么都知道,并且什么都能做,但这只是幻觉。这些超级程序员通常是在一两个领域内非常精通,并且了解大量在很多领域里通用的知识。