程序员获取新编程技能的5个技巧
“你是怎么学会所有这些框架和语言的?”,最近在黑客马拉松上一个朋友问我。
“其实,很简单,只要用你想学的东西去创建一个合适又值得的项目就行了,”我回答说。
“真的吗?直接上手搞项目吗?“,他好奇地问。
“是啊,还有要向合适的人征求意见。聪明的人通常都很乐于教导和帮助别人。“我告诉我的朋友,同时心中想,我为什么不关于这方面的内容写一篇博客文章呢。——于是有了本文。
对想要在科技领域工作的人非常重要的一件事情就是,你得学会如何学习。我和很多非常聪明的人谈过关于学习和掌握技能方面的内容。我还花费大量的时间给我的朋友和同事们讲述一些关于如何学习的指导/建议。在这篇文章中我将为大家详细分析一些要点。
假设你想要学习这个语言/框架/ API /工具/事情,你其实真的并不需要知道从哪里开始。具体怎么做,下面我将一一说明,希望能对你有用。
1. 阅读文档
使用任何语言或框架的关键是熟悉它的文档。转至你想要学习的内容的主页,从头到尾看一遍上面的起步/快速入门教程。如果没有(这是罕见的),或它们的文档很难(这倒并不罕见),那就找找相关专家的建议。通常第三方教程都会告诉你你所需要知道的。
不要害怕学习新的东西。你会惊奇地发现原来get新技能是这么容易的一件事。
2.找一个值得构建的项目
你挑选的项目必须是你热爱的,能够真正投入到学习中去的。有什么想法,就去实现它!如果没想法,那么下面是一些帮助你找到项目的小提示。
说实话,当我想学习新内容的时候,我常常也找不到合适的项目。我的做法是咨询其他人的看法,直到遇到一个让我兴奋的好点子。我的朋友Yamil Asusta对于这方面就很有见地,最近他就这个主题表述了他的一些看法。在这里我想推荐两个他提出的好方法:
- 如果你想学习一门编程语言,学习HTTP请求在这种语言下是如何工作的。那么,你和其他工具交互的方式最好主要是通过HTTP,这本身就会让你明白语言的工作原理。
- 找一个可以使用不同工具建立的小项目。复杂度适中的小型web app,同时允许你使用其他框架,这样也可以学习其他框架的工作原理。使用不同工具构建同一个东西,能让你清清楚楚地明白工具之间的差异。
最后,如果你找不到项目,那么不妨想想有什么是只能用你正在学习的这种框架或工具构建的东西,然后开工。
3.开始启动项目
万事开头难。不要想着得过且过。从现在就开始,将时间尽可能多地投入到学习中来。
发现教程,可以开始启动项目,想到要构建什么项目,也可以开始启动项目。充实项目需要搜索编程软件,询问朋友,阅读更多的文档。不要随便乱写代码,不要只在从以往的经验角度来看问题。阅读文档,将时间用于理清常见的设计和架构模式。
4.询问知道的人
不要害怕问问题。如果你不虚心请教,那么你将用上更长的时间才能得到问题的答案。即使是最好的专家,在某些时候也是一个初学者,并且大多数人都愿意指导和帮助他人,回馈社会。
提问的关键是你不能浪费任何人的时间。所以要提正确的问题。没有人愿意回答只需要谷歌搜索就可以解决的问题。最近我在和Hector Ramos(一个花了大量时间帮助大家解决Parse问题的人)交流时,他提到了当别人询问他时,他喜欢的两类比较简单明了的问题。
- 我想用Parse来实现this,以及this部分的文档,但是它不工作(肯定是我哪里犯了错误)。你能帮我看看吗?这是我的代码片段。
- 我可以用Parse执行x吗?
问题要问得简单明了,要便于对方答案。向正确的人问问题。通常而言,可用于咨询的人可被分为这两类:
- 对某个专业领域知道得很多。
- 学识渊博,对很多领域都有一定的了解。
所以,要学会区分他们,问对人。
5.部署项目
让你的项目到达一种你认为“完成”的状态。这意味着你并不需要做到臻于完美、100%完成,也不需要捣鼓得非常漂亮。只要你觉得你的项目OK,并愿意展示给其他人以显示你是多么棒就行。
当你完成项目之后,一定要把它放到Github上,或者部署到能让其他人看到的地方。这么做能允许别人批评和评论你的工作,敦促你为自己的工作负责,制作出更好的作品来。此外,这还能让你将来的雇主看到你丰富的经验。
即使你认为你的代码很烂,但你愿意展示的这个事实本身就说明了你是一个开发人员。你已经领先一步于那些甚至没有代码产出的家伙。
如果你要问别人问题,首先要让他们知道你学习到了哪里,向他们展示你的工作,让他们知道,他们为你解答问题的时间不会白费。最后,完成第一个项目之后,那就去做下一个。学习写代码的唯一方法就是写代码。同样的,学习新框架的唯一方法就是在这框架下写代码。所以,加油吧。
上面这些是我学习新工具的步骤。如果你也想要充分利用时间学习新的东西,那么我相信这将会是一个良好的开端。
最后,各位若有不同看法,欢迎留言。
- [1]LouisWei 发表于 2015-07-02 20:25 的评论:一开始我就知道用做项目来学习最有效,但是一直不会找项目,苦死我了[2]linux 发表于 2015-07-02 22:11 的评论:如果你找不到一个适合的商业性项目,那你就做一些开源项目。开始不要选择复杂的、大的项目,尽量简单、功能和目标单一的项目,但是可以后期逐渐演化和增加功能。
用你最擅长的工具和语言、做最感兴趣或两种不同领域交叉的项目。
尽快发布,并让朋友们来围观。[3]LouisWei 发表于 2015-07-02 23:28 的评论:谢谢建议,我是今年才接触开源世界的,也一直想参与一些小的开源项目,问题就在于我还没有找到又小又感兴趣的。你有什么好的地方或者关注微博可以推荐呢(我有C++的基础,但是就因为这个快废了)[4]linux 发表于 2015-07-03 10:27 的评论:如果你找不到别人的合适你的项目,那么我想你可以用你的技术和代码为自己解决一些哪怕是小小的不爽。
举个例子说,如果你的 C++还可以的化,也许你用过 GTK+之类的图形界面工具类,那么你可以构建一个简单的桌面程序,比如一个小小的计算器、时钟、或者就是一个无聊的什么小东西——哪怕已经有了很多了,但是这个世界上不怕再多一个。;D
如果你对桌面程序不感兴趣,那么也许可以考虑开发一些模块,比如某个算法的的封装、实现。
如果你对算法也不感兴趣,那么也许可以开发一些命令行的实用工具,比如说,能够记录系统所有文件的文件属性的一个小工具,并在需要时间进行检查或恢复(这来源于昨晚一个苦逼的兄弟误执行了一个错误的命令的后果)——其实就是解决你自己遇到的痛点。 - LouisWei 2015-07-03 11:07 赞 回复
- 嗯,你说的这些我都做过一些了,现在准备写一些系统相关的脚本。谢谢你的建议
- [1]文剑一飞 发表于 2015-07-02 22:48 的评论:花时间花精力看文档捣鼓一个项目出来是可以的,但是没有设计思想……
- linux 2015-07-03 10:30 4 赞 回复
- 不用偏执于思想,实用才是第一位的。当你发现实用性已经不能控制需求和开发过程了,那个时候你才需要站的更高,从思想的角度来考虑:>
- [1]LouisWei 发表于 2015-07-02 20:25 的评论:一开始我就知道用做项目来学习最有效,但是一直不会找项目,苦死我了[2]linux 发表于 2015-07-02 22:11 的评论:如果你找不到一个适合的商业性项目,那你就做一些开源项目。开始不要选择复杂的、大的项目,尽量简单、功能和目标单一的项目,但是可以后期逐渐演化和增加功能。
用你最擅长的工具和语言、做最感兴趣或两种不同领域交叉的项目。
尽快发布,并让朋友们来围观。[3]LouisWei 发表于 2015-07-02 23:28 的评论:谢谢建议,我是今年才接触开源世界的,也一直想参与一些小的开源项目,问题就在于我还没有找到又小又感兴趣的。你有什么好的地方或者关注微博可以推荐呢(我有C++的基础,但是就因为这个快废了)[4]liwei0526vip 发表于 2015-07-03 10:02 的评论:同问,我有时候也会有这样的烦恼,想学一门语言,也知道要从做项目入手会变得更高效,更快速,但是问题就是找不到合适的简单项目,不知道从哪里可以获取这些信息,还请有经验的大神多多指教。 - linux 2015-07-03 10:28 赞 回复
- 解决自己手边遇到的任何不适——会编程的人会很爽,因为他们至少可以自己动手来解决。