作为开发人员你应该学习的三项技能(另加一项)
“你需要学会如何学习”是你在开始旅程时经常会听到的一句话。
不要担心训练营 X 或课程 Y 教授哪种语言/框架,人们会告诉你,重要的是他们会告诉你如何自学。
这话确实有道理。大多数编程训练营的毕业生都找不到工作,用的都是训练营里教的那些技术栈。即使你足够幸运,用学到的框架找到了一份工作,但科技界飞速的发展速度几乎可以保证你的知识很快就会过时,你每隔几年就得学习下一个热门的东西。
如果学生过于专注于学习某项特定技术,而忽略了持续自学所需的技能,那么当他们为了获得第一份初级职位而被迫学习另一项技术时,可能会感到措手不及,觉得训练营的经历浪费了时间和金钱。这需要改变视角。
但是“学会如何学习”究竟意味着什么呢?开发人员需要掌握哪些技能来帮助他们跟上层出不穷的新框架和技术呢?
在与之前和潜在的训练营学员进行多次交谈后,我相信我能够将其缩小到三项技能,如果你想在毕业后能够自学,你需要掌握这些技能:
-
如何阅读和理解错误消息。
-
如何使用 Google 来搜索事物。
-
如何阅读和理解技术文档。
从我作为一名开发人员的经验来看,我可以说我每天90%的工作时间都在做这三件事中的一件。如果你能掌握这三项技能,你就可以相当自信地认为,没有什么技术是你学不会的。
1.阅读错误信息
这是我学习编码时必须学习的第一课之一,在我看来,这也是开发人员与社会其他人的区别所在。

在我的“平民生活”中,错误信息是可怕的,它们是晦涩难懂的,感觉就像计算机在用外语对我尖叫,并责怪我做了一些它可能认为是我的错的事情。
当我开始学习如何编码时,我自然会遇到许多错误消息,这让人非常沮丧;我觉得我一定是做错了什么。
后来有一天,我突然明白了。当时我正在听一个训练营的讲师讲课,他正在编写一个应用程序。有一次,他运行代码时遇到了一个错误,但他没有感到尴尬或慌乱,而是毫不讽刺地惊呼:“我们遇到错误了!太棒了!” 那时我才意识到,错误信息远非我们的敌人。作为开发人员,当我们遇到错误信息时,这是计算机让我们知道代码出了什么问题的方式;它为我们需要修复的问题提供了线索。
作为一名开发人员,您将专门处理损坏的代码(如果代码可以运行,那么谁还需要您?)阅读和分析错误消息是您修复它的方法。
您收到的错误消息类型及其帮助程度在很大程度上取决于您使用的语言/框架,某些语言比其他语言具有更多有用的错误,但有些元素是通用的。
每个错误消息通常包含:
-
实际的错误信息:究竟出了什么问题。这些信息可能只是几句含糊不清的文字,也可能是整整一段文字,其中包含一些修复错误的建议。
-
发生错误的位置:文件、行号,有时还有程序崩溃时所在的函数名称。
-
堆栈跟踪:程序执行的代码中的所有行,直到到达第 2 个函数。这可以帮助追踪函数被调用的位置和参数。
阅读所有这些内容并熟悉解析错误消息的不同部分可能需要一些练习,但当您的代码没有按照您期望的方式运行时,这是首先要查看的地方。
好的训练营会鼓励你摆弄代码,打破常规,并庆祝错误消息,而不仅仅是向你展示如何修复它们。
然而,错误信息虽然有用,但作用有限。毕竟,语言的设计者不可能事先知道用他们的语言编写的程序可能会以各种不同的方式崩溃。这时,下一个技能就派上用场了。
2. 如何使用 Google
作为开发者,你大部分时间都会花在做一些你并不熟知的事情上。Google(或者 DuckDuckGo、Bing 等)会是你最好的朋友。

对于初学者来说,要知道该用 Google 搜索什么可能很困难,尤其是在刚开始的时候,你甚至都不确定自己想要做什么,更别提用搜索引擎能理解的方式表达出来了。
学习如何组织查询以获得最佳搜索结果是一门需要经验积累的艺术,但以下一些规则可以帮助你入门:
-
包含你正在使用的语言:如果你正在学习 Ruby,并且有一个需要排序的数组,那么搜索“如何对数组进行排序”可能不会有太大帮助;我刚搜索的时候,第一页结果只包含如何使用 Java、Visual Basic 和 JavaScript 进行排序的答案。查询时,务必以你正在搜索的语言名称开头(在我们的例子中,“Ruby 对数组进行排序”会提供大量对 Ruby 程序员来说非常有用的结果)。
-
使用定义明确的关键词:这更多需要经验,但了解哪些关键词代表您所需的实际信息可以节省您筛选无用结果的时间。一般来说,不要包含不必要的词;精心设计最短的查询,包含与您的搜索相关的所有关键词,将有助于确保您只获得所需的结果。
-
了解哪些结果更有可能有用:同样,这需要经验积累,但有些结果比其他结果更有可能有用。随着时间的推移,你会逐渐适应这一点,但一般来说,最近的结果不太可能过时,Stack Overflow 上获得一百个点赞的答案比无名作者的博客文章更有可能有用(这并不是说没有相对不知名的作者写的优秀博客文章)。
最后一点引出了下一项技能。
3. 如何阅读技术文档
语言/框架具有许多特性和功能,除非您经常使用某个特定功能,否则您不太可能记住其语法。
这并不意味着你是一个糟糕的程序员,即使是拥有多年经验的成熟程序员也会在谷歌上搜索“连接字符串”或“过滤数组”之类的内容。
大多数语言的文档通常是语言特性最全面、最简洁的参考,使您免于记忆数百个晦涩的语言特性的麻烦。
例如,Ruby 有大约 20 种不同的数组迭代方法。如果你正在学习 Ruby,你可能会认为必须记住所有 20 种方法。但如果你的目标是学习如何学习,那么你只需要记住,你可以在Ruby 的 Enumerable 模块文档中找到所有数组迭代方法。
对于初学者来说,问题在于文档可能看起来内容繁多、令人望而生畏;简洁的文档意味着页面可能看起来像一面充斥着专业术语、技术术语和符号的吓人墙。但通过练习,你可以掌握其中的规律,并学会如何找到所需的信息。随着时间的推移,你会发现官方文档会成为你学习简单语法的首选参考。
加一
和任何项目一样,这个项目也超出了预算。其实还有一项非常关键的技能,它并非完全与自学有关,但如果你想成为一个高效的学习者,它是一项必不可少的技能。
最后一项技能是知道何时退后一步并寻求帮助。
我们中没有人曾经独自做到过这一点,“自学成才的开发人员”只是一个神话。
建立导师和同学网络,并了解何时/如何利用这些网络,可以节省你实际学习新知识的时间。这意味着你不必因为一个简单的打字错误而花费数小时敲击键盘,而第二个新人一分钟就能发现(虽然我们都经历过 :)
有很多面向初学者的在线社区。如果你参加的是训练营,他们很可能有各种方式让学员(包括现在的和以前的学员)互相联系。开发者推特(Dev Twitter)非常友好、乐于助人、互相支持(我最喜欢的社区是#CodeNewbie社区和@ThePracticalDev)。找到你的角落,找到与你联系的人,你会发现结伴而行比独自旅行好上百倍。
综上所述
总而言之,学习编程是一个重大的决定。选择一个好的训练营或课程需要考虑很多因素。我希望这篇文章能让你了解哪些技能是必须重点学习的,哪些技能只是昙花一现。
祝你好运!
本文转载自我的博客“Rabbi On Rails”。
你可以在那里阅读更多我的编程历程,或者在 Twitter 上关注我@yechielk。