有人问我,Reddit 是什么网站,我想了下说:美国贴吧。
但话说回来,关注了一阵子我发现,Reddit 上的讨论真要比贴吧不知道高到哪里去了,甚至比不少知乎回答要有价值。而且感觉下面的讨论氛围也更好些。
我在上面关注了 learnprogramming 节点,有不少文章挺有价值,于是翻译过来分享给大家。上次翻过一篇:《我是如何在自学编程9个月后找到工作的》,是一个编程自学者的经验之谈。这两天我又看到篇不错的,主要讨论的是自学编程中的一个普遍问题:如何坚持。
除了翻译,文中我还加了一些自己的看法(斜体字)。各位看后有什么想法也欢迎在留言里讨论。
英文原文地址见文末。
嗨,Reddit 的各位老铁,学编程真的很让人崩溃。
学编程现在看起来挺简单,因为网上有丰富的各种资源。然而当你实际去学的时候就发现,还是很难!
对我来说也一样。但从某天起,我决定认认真真学编程一年。后来又过了一年,又过了一年又一年……我好像有点感悟。
如果你曾致力于学习一些重要的东西,就会知道在漫长的艰难时刻保持自己的积极性是多么困难。你怎么做呢?我说下我的经验:
1. 去开发点真东西
不要只一味地跟着教程学。它们有助于对新事物进行概述,但在此之后你必须开发点自己的东西。
你当然可以去开发另一个 To-Do-List(待办事项列表)的 App,但你想这么做吗?你不一定非要做那些别人口中的“入门必做项目”。
开发你自己想要的东西。相信你是一个富有创造力的人。设想一个可以真正帮助你的小项目或 App,或者至少看起来很酷的项目,开发出来,然后把它放在网上,从别人那里得到一些反馈,修复 bug。干就完事了。
你可以把它作为一个项目展示给潜在的未来雇主。没人关心你是否又制作了一个 To-Do_List 的 App,但他们会关心你是否有能力开发一个网站,把抽象而模糊的想法转变成实际的产品。
跳出思维定式来考虑,你甚至都不用找工作。如果你做得更好些,完全可以自己开发一个 App 或网站,从中收取费用。或者做出一些酷炫的产品,在 Reddit 上传播。你会成为某方面的专家、找到客户,成为自由职业者。
比如我弄了个叫 Unbokeh 的网站,这里有一堆模糊的背景图片,你可以用于设计和壁纸。我之所以这么做是因为我喜欢模糊的壁纸,它们看起来很酷,而且我想提供一个其他人可以使用的资源。这不是一个百万美元的想法,但我为此感到自豪。我学到了很多关于 Gatsby 和 GraphQL 的知识。 我把它发布在 Twitter 上,很多人都喜欢它。
再说,在互联网上展示你努力做出来的东西,本身不就是很棒的一种体验吗?
【Crossin 注】这个观点我也说过无数遍:等你有了一定基础之后,一定要找项目去做,从你身边着眼,想想有没有能用编程解决的问题,然后在解决问题的过程中提升能力。如果你仅仅想找本教程看,你会发现越看问题越多,你不知道书上说这些到底有什么用。这其实是弄反了因果。我在编程教室里坚持发布有趣或实用的案例,也是从这个出发点考虑的。(公众号“Crossin的编程教室”对话栏回复关键字 项目)
2. 找点工作/项目
我学编程的最喜欢的方法之一就是让别人付钱给我学习。如果你愿意为此多投入一些努力,你可以在像 UpWork 这样的平台上获得一些小单子,在学习的同时就能赚到一些钱。
你不必是专家,只需要足够的相关知识就可以完成工作。如果你学会适当推销自己一下,别人并不会太在意你是否是初学者:你只需要证明你可以完成工作。所以,如果你像我前面告诉你的那样,做点自己的项目,你就已经有经验了。
我通过电子邮件联系本地商家,帮他们重新设计网站,从而学会了如何开发 WordPress 主题。我从为另一个小企业构建官网首页中学会了 JavaScript。我通过为一家初创公司制作一些页面的过程中提升了对 React 的理解。
你没法做完全超越你技能树之外的事。但适当地挑战自己能力的上限,并承担一个实实在在的项目,你会取得重大进展。
这些项目不会让你发大财,但真实世界的项目可以给你带来很有价值的经验。
【Crossin 注】这一点是上一点的延续,选定个方向,先做自己的项目,熟悉了之后就去接点正儿八经的项目。国内也有一些平台,比如猪八戒网,V2EX 上有时也会有人发单,我这边偶尔也会有,我都会发布在 bbs 的接单区和几个学习群里。说实在话,一开始想成功接单并不容易,但你不妨可以尝试给亲戚朋友同事社团等做点义务劳动,帮他们做个网站啥的,机会都是慢慢积累出来的。我自己第一次用 Python 就是同学介绍的网站开发项目。这种有点压力的状态绝对比你自己无目的地看书效率高多了。
3. 在 Twitter 上建立联系
上 Twitter 对我来说是很有帮助的一件事,所有的开发人员都在这儿。你可以关注大票的开发者,获取灵感、开发有趣的东西,关注业内大牛,了解新的工具和技术。一旦你的首页时间线充满了有趣的行业文章以及关于 JavaScript 的谈论,那你将会更有动力去坚持学习。转发一些对你有启发的文章、分享不错的代码片段,你也会成为开发社区的一员。
当然,不要浪费太多时间。 您可以在这里了解更多信息,成为社区一员,但不要分心。
对我来说,一个重要的动力是加入 #100DaysOfCode 的挑战。规则很简单:每天至少写一小时代码,并每天发布带有进度的推文。你会不想终止连续记录。#CodeNewbie 是另一个与其他 Twitter 同好者联系的好标签。
这感觉很好,因为你来到了一个社区,里面都是和你一样学习编程的人。发布你正在研究的有趣事情,和别人互相关注,询问他们正在做的事情,结交朋友。如果你加入了这样的社群,养成写代码的习惯就变得容易许多。很快这就会成为你个人的一部分:你现在就是一名开发者,这就是你每天做的事情。
【Crossin 注】国内不太能上这个网站……微博其实学习氛围很淡,但像 V2EX、SegmentFault、OSChina 等社区里也不乏大量开发者,多去逛逛有好处。在学习社区这件事上,我承认编程教室到目前为止做得并不算好,我们曾经建立了很多群,但因为无力管理,最后大多荒废了。接下来,我会在这点上做些尝试,可能也会组织类似 100DaysOfCode 的挑战,争取能给各位初学者提供一个氛围良好的社群。
4. 干就完事了
最后,这完全取决于你。你只需要做出承诺并完成它。
要明白,这是个长期的过程。也许你会在 Twitter 上看到关于某人学了 3 个月就找到六位数的工作这种鸡汤故事,很励志吧?而且他还仅仅 18 岁(这种故事里总是 18 岁)。但这只是特例,不是常态。如果你想通过学习编程来改善你的生活,你不该总想着这些快速成功的案例。
如果你想找份工作或开发出杀手级产品,你将不得不努力工作。你看到的所有成功故事都只是结果,而不是那之前漫长而乏味的过程。当你艰难到要放弃的时候,它给你鼓励,但你不能沉迷于此。相信我,这种情况会不停出现。
不要半途而废。如果你真的对编程没兴趣,那没办法。但如果你愿意投入时间和精力,以及一点点血、汗和泪,你总能做出点东西。现在就回去继续学习吧。
【Crossin 注】少说多做,每个程序员都是一行行代码堆出来的。不要再纠结哪个语言好、哪个教程好、该用哪个版本。你花一个周末就可以走进大门了,没必要不停在门前纠结。这是个长期的过程,不要想着一蹴而就,也不用担心一个选择就走错路。学习没有弯路,每一步都算数。
作者:
ericnmurphy
原文地址:
https://www.reddit.com/r/learnprogramming/comments/9rjhm0/how_to_actually_stay_motivated_to_learn_how_to/
作者博客:
https://ericnmurphy.com/motivation/
文章下面有些评论也说得不错:
fckdUpLion:
纪律>动力。把事情给做了,别等待动力。
Metabyte2:
动机是一个神奇的东西。 每天留出一两个小时,并养成在那个时间编码的习惯。 几个星期后,它将成为常态。
blackiechan99:
虽然我有了动力,但动机很快就会因为其他事情而消失。
我减了100磅,动力在几周内就没了。 纪律才是而且是唯一持久有效的东西。 编码也是如此。
动力在一开始有用,然后过渡到纪律。 如果你真的想要,你就会实现:)
WulfMarius:
说实话,我不喜欢“写代码”这个说法,这就像是“写书”和“打字”:一个人写书的过程是在打字,但你显然不可能通过打字课程突然成为一个作家。因为写书的实质不是打字,而是创建内容。
写代码是开发软件的表现,但实际上之前的活动更重要得多,比如理解你想要解决的问题,提出解决这个问题的方法,将这个解决方案分解成可以实际编码的部分,考虑的局限性和后果等。
有些人会忽略这些,而挣扎在代码之中,因为他们并不真正理解他们试图解决的问题和/或他们设计的解决方案。当我问为什么他们把某个语句放进去的时候,他们根本无法解释。我想说:难怪你们说没法保持学习的动力,你都不知道你在写什么,换作我也不想学了!
所以,只是跟着教程里写几行代码读取文件这种小技巧根本对编程没什么帮助。
════
其他文章及回答:
如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 人工智能 | 嘻哈 | 爬虫 | 我用Python | 高考 | requests | AI平台
欢迎搜索及关注:Crossin的编程教室