学习新技术的10个建议
编者注:本文为历史博文归档;涉及 JDK、框架与工具链版本请以当前官方文档为准。引用外链图片可能失效,阅读时请注意时效性。
英文原文: 10 Tips for Learning a New Technology
我们生活在一个振奋人心的时代,可以越来越方便、廉价地获得大量学习资源。这些资源的传播载体由最初的教室变成了博客、技术论坛等。坐拥如此众多的学习资源,我们没有任何理由不去好好利用。随之而来的问题便是:如何在这知识的海洋中选择自己的前进方向?在这篇文章中,我将简要概括一些技术学习的建议,希望可以给你带来一些启发。
尽管我的建议主要涉及的是软件开发方面,但是这些原则在其他领域也同样适用。
1. 克服惯性 (Overcoming Inertia)

万事开头难,克服惯性是学习新技术的第一步。举个日常生活中惯性存在的简单例子:当我们看电视的时候,会因为遥控器不在身边而懒得换台。幸运的是,有很多小技巧可以调动我们的积极性,帮助我们克服惯性。
对于我来说,「微习惯」是一个很好用的小技巧。与其被手头的任务吓到,不如将任务细分为一个个具体的微任务,然后挑选其中的一个开始做起。就「拿到遥控器」这个例子来说:首先扭动你的脚趾,向前伸出,然后推动整个人离开沙发;下一步,身体滑到地上,用脚拿到遥控器,然后起身。通过完成一个个的微任务,你会发现自己克服了惯性,并且这项任务不再显得难以完成。这个方法可以被应用到学习新技能的过程中,关键就是将大块任务细分为微任务。
2. 关注大牛 (Watch the Pros)

学习新技能的第一步是明确要学什么。它可以是任何你有激情去学,并且想深入学习的东西。这种原始的学习欲望非常重要,它可以在你的学习低潮期给你提供动力。你想学的或许是一门新的编程语言、应用框架或者是新的工具。一旦你确定了想要的是什么,就立刻去收集相应的优秀群体所做的一些优质工作成果。
这些可以从 YouTube、Vimeo、HackerNews、各种博客,甚至是你的微博好友那里获取。关注别人做了些什么可以给你强大的信心,让你觉得 "You can do it, too!"。
3. 建立知识网 (Let the Information Flow Begin)

当你对自己要学习的东西建立了信心之后,接下来要做的就是做一块海绵,然后开始疯狂地吸收知识。从 Google 搜索关键词 "beginner tutorials" 开始吧,搜索一些跟你要学习的知识相关的入门教程。
如你所知,Nettuts+ 上面有成千上百的各种教程供你选择,StackOverflow 上面也有很多学习资源。此外,Quora 也是一些不错的选择。通过浏览这些网上的资源之后,如果想要集中精力学习某一方面,这时就需要阅读一些相关的书籍了。个人推荐在 Amazon 上面寻找一些评分较高的专业书籍来提高自己。
4. 多听多看 (Listen and Watch)

随着你对技术的深入挖掘,你可能会想利用更多其他形式的学习资料,比如 Podcasts、Screencasts 等等。我的建议是多用 iTunes U,这上面有很多专业的知识可以让你对于特定的领域进行深入的探索。
目前,有很多网站都提供在线教育服务。这里要首推我们自己的 Tuts+ Premium。想要学习 PHP 或者 JavaScript?这里有你最需要的资料。另外,你也可以在下面几个网站上找到自己需要的教程:
此外,你也可以看一些免费的会议视频材料,比如 YouTube 上面的 Google IO,以及 Confreaks!
5. 行动起来 (Time for Action)

现在你已经看了一波又一波的教程以及视频资料,并且对于想学的技术已经有了一个相当深入的了解,接下来做些什么呢?没错,是时候理论联系实际了,实践是检验真理的唯一标准。
用你所掌握的技术做一个个人的小项目,设计一些简单的功能并且实现它们。毫无疑问,你会遇到很多的绊脚石。当遇到它们的时候,在 StackOverflow 或者 Google 上面搜索之,解决之。你已经踏上一条成为某一领域专家的旅程,遇到的困难挫折越多,你会变得越睿智。有句老话说得好,“专家是犯错最多的人”。这意味着他们尝试了很多疯狂的事情来探索这门技术的极限,最后,对于这门技术是如何运作的就可以知根知底。拥有这种洞察力之后,他们便可以随心所欲地运用这项技术去按照自己的意愿完成想做的事情(当然,是做好的事情)。
6. 写博客 (Blogging)

在你进行你的探险之旅的时候,实时记录下你的成长以及犯下的错误大有裨益。在技术领域,博客是最简单易得并且受欢迎的表达载体。当你准备落笔的时候,你会强迫自己整理思路,并且对积累下来的零散的知识片段进行结构梳理。说不定,通过互联网的分享,你的经历和分享会给别人的成长带来帮助。
如果你想走得更远(比如想像 Nettuts+ 上面的职业作者一样),你也可以制作属于自己的 Screencasts。总的来说,写博客能够提升你的个人沟通能力,这与你学到的技术同样重要。
7. 感受技术的脉搏 (Feel the Pulse)

社交网络已经广泛应用于人们的日常交流以及发现新鲜事物。Twitter 和 Facebook 是信息的主要来源,与此同时,有很多的网站提供更专注的资讯,如前面提到过的 Quora 网站,这上面有很多涉及面很广的话题供人们评论,在这上面可以找到很多知名大牛的建议以及观点。
浏览 StackOverflow 上面的众多话题是一个很有意思的过程,你可以看到他人如何探索某种技术的极限。事实上,在人们利用技术做一些疯狂的甚至是荒诞的事情的时候,技术也随之不断地成熟起来。
因此,如果你想要感受到技术的脉搏,并且想确认它是否值得学下去,在 StackOverflow 上面试着搜索一些话题,看看这个讨论社区的广度与深度。最值得看的是投票最多以及热门话题。你也可以尝试在 GitHub 上面进行搜索。
8. 参加聚会以及会议 (Meetups and Conferences)

尽管社交网络很棒,但是没有任何事物可以取代面对面的交流。在你住的附近参加一些小组聚会,在这里你可以找到志同道合的伙伴。你可以知道他人在做的一些有趣的项目,同时也可以在他人的帮助下解决一些自己遇到的难题!同样的,技术会议对于分享经验以及增长技术大有帮助!
9. 拥抱 GitHub

GitHub 是全世界开源项目的标志性建筑物,它是知识以及优质代码的宝库。当你对某项技术自我感觉良好的时候,下一步便是在 GitHub 中浏览寻找有趣的项目。阅读开源代码,尽可能多的阅读。这样做的话,你能够学到很多东西,比如说:
- 如何管理规模较大的项目
- 项目中应用的有趣的库
- 代码规范以及代码全局设计
- 文档风格
- 测试规范
- 解决诡异问题的方法,以及发现项目中有问题的地方
所有的这些知识都在等待着你去挖掘。有趣的是,这些知识的通过一个简单的标签就可以得到,那就是“好奇心”。
10. 专注学习 (Concentrated Learning)

如果你担心上述的学习过程太迟缓,那么你也可以尝试一下快速学习模式。你或许听说过"24 小时学会某某某”,但是这种方式不是我所推荐的。我认为更合理的是用几周的时间去学习。你可以尝试一下类似"七周学会七种语言"或者是"七周学会七种数据库"等学习方法。尽管这些讲的是语言以及数据库方面的学习,但是你在学习其他技术的时候也可以运用这种思维。
有一个不太相同的学习风格是"困难学习模式",这种观点的前提是没有人可以真正掌握一门技术,除非每天都练习。所以,想要成为专家,你就需要不停地进行练习。异曲同工的是你可以查看 Katas 和 Koans,它鼓励使用你学的知识来解决问题。这些可以让你更好地入门以及接受那些陌生的概念,勇敢走出自己的舒适区,开始学习新知识!
学习一门交叉的技能 (Learn an Orthogonal Skill)
编程是一项左脑的运动,它利用的是大脑的分析能力,一步一步地寻找解决问题的方法。为了发挥右脑的功能,你可以尝试从事一些创造性的活动,比如说画画、3D 建模、折纸、乐器甚至是制作家庭相册等。事实上,编程同样需要大量的创造力。
或许你曾经遇到过类似的事情:你在睡梦中找到了问题的解决方案。这是因为你的右脑处理问题的方式很不同,它可以从各种地方获得信息。敏捷开发权威人士 Andy Hunt 就这个话题写了一本书《程序员的思维修炼》。如果你想点燃你的每一个神经元,建议你开始学习一门交叉的技能。
总结
掌握一门新技术振奋人心,这是一项影响你思维的新的体验。但是首先,你必须克服你的惯性。一旦你做到了,你便开启了从 Web 的每个角落学习知识的旅程。我希望上面讲的十点能够给你的旅程带来一些帮助或启发。
如果您有不同的学习方法,我很希望您也来分享,请尽管留言吧!
说明:本文内容源自历史博文,部分外链资源(如在线教育平台、会议视频列表)可能已更新或变更,请以当前官方信息为准。文中提到的学习方法论依然具有参考价值。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/xue-xi-xin-ji-shu-de-10-ge-jian-yi.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。