有一天,我的一个在学程式设计的朋友问我:“我想加速自修程式设计,你有什么好的推荐吗?”我曾在上大学的时候自修过程式设计,这么多年往后了,我意识到我也许是在用最困难的形式去自修和介绍程式设计。本来我完全能用更快的速率自修。因此,在简述了往后后,我写出了前些年我慢慢掌握到的有关怎样自修程式设计的一些事情。
“加速”
对于“怎样加速自修程式设计”那个问题,其实我吗不知道何为“加速”。我觉得,透过遵从以下提议,你将很快地自修程式设计(至少你的成长/不断进步会快)。但你吗不如果眼里只有“加速”。只崇尚速率反倒会拖你的大树枝,让你失去机会。“加速”自修的唯一可持续形式也许是采用煮沸式教学形式。找到一种形式让他们沉浸于在程式设计中极短一两年(几个月?)。为了让它见效,你须要不断推动他们去自修捷伊小东西,并迅速脱身离开。这是代码夏令营的一个缺点。当你出来时,尽管你还不是专家,但你会镰叶更快。这也能透过专门针对的指导老师教诲或与专门针对的新手一起自修来实现。
1.读>写标识符>读>写标识符(年复一年)
有关怎样高效率自修程式设计我要得出的第二条提议是在写作标识符和撰写标识符之间周而复始。写作标识符(书刊,网志该文,开源标识符)将帮助你查阅软件系统,介绍最差作法,并大体介绍词汇或系统。但是在你这种做后,你须要他们实际去写标识符。能是任何小东西。能是小的代码练或非职业项目,但保证你能将之付诸课堂教学,他用这种形式使用你教给的小东西。如果你不这种做,那么你会发现他们面对编辑器会不知所措难上加难。
这点的窍门是让他们感到不难受。这是相当伤痛的,但就如果这种。代码遵从80/20准则。花80%的时间在20%的标识符或20%你学以致用的小东西上。惯于这种不难受的感觉并消除它是关键。
那个插值周期性不如果以周为周期性或以月为周期性发生,而是如果以日为周期性。知识等待使用的时间越久,知识这把斧头就越钝。等待自修新知识的时间越长,你就越难以将其融入到标识符中。
我推荐写作有关通用程式设计主题的网站是lobste.rs。上面有许多有关许多程式设计主题的该文。另一个好的网站是Hacker News,但网站时常偏离话题。
2.不要陷入僵局。请求帮忙
我最大的错误是在自修程式设计陷入僵局的时候用了太长时间。在被卡住时,我会花很多时间在一些愚蠢的小东西或一些我根本上不明白的小东西上。有时候我须要花费好几天时间才能完成这些工作,而原本我能用这些时间做更多的事情和自修更多的小东西,如果我能找到更好的解决形式的话。卡在一个东西上面超过一个小时基本上就是在浪费时间了。
我推荐三件事情以避免僵局。第一是试着总是写作更多有关你使用的技术,并总体掌握正在发生什么。通常,当你陷入困境时,意味着你对须要澄清的事情做出了不正确的假设。第二是咨询互联网。这一点很显然,但依然值得一提。在网上查找并询问有过那个问题的人是一个非常重要的技能。Stackoverflow能说是互联网上最好的网站。不要害怕在那里问他们的问题。通常,只要尽力正确地阐述你的问题就OK了。我吗希望以前我能多问些问题,但总是因为害怕会显得愚蠢而止步。我的第三个提议是向你认识的人请求帮助。通常,你也许已经理解了技术,而且有了问题,但是你可能须要更高层次的上下文才能真正解开谜团。不要胆怯,大着胆子上前去问吧。
例如,当自修Docker时,我花费了大量的时间从头开始重新构建图像。我从根本上不明白docker缓存,他用20分钟时间来等待单个更改到Dockerfile通过。我可能花了8个小时就用在等待构建上。如果我读过更多有关Docker或问一个知道的人,那么可能我早就搞明白了,还能在更短的时间内教给更多。
3.为项目而工作
在我的经验中,没有什么能与工作于他们的项目以自修程式设计更有用的了。除了一些例外,我所知道的所有真正优秀的程序员都有一个习惯就是工作于非职业项目(这也可能发生在工作中!)。有了一个点子并试图实现那个点子是非常具有挑战性的。它须要很强的自律心。但是,透过尝试实际做一件事情,你能教给怎样分解问题并应用技术。你面对的各种问题,以及你怎样解决它们才真正是所谓的程式设计。知道程式设计词汇的每一个古怪细节的确是有帮助的,但它只会让你越来越落伍。此外,想要完成项目的驱动力是继续自修的动力。从非职业项目获得的满足感远远超过你在抽象中自修小东西的满足感。
我对于选择非职业项目的提议是,选择你感兴趣同时你也有想法怎样实现的小东西。能够在开始之前表达实现总是有助于保持我的动力。在此旅途之中你一定会教给很多!
4.认识到深入钻研和搬运工之间的区别。相应地选择。
有两种类型的程序员:完美主义者和搬运工。有些人希望一切都是正确的,他们希望完美,他们希望遵从所有的最差课堂教学,并写出漂亮的优雅标识符。他们想要理解每一行标识符。有别于那些不管三七二十一,只要他们的标识符能工作即可,即使对标识符库有损害的人。平衡这两种技能是非常重要的。有时你如果深入钻研一个问题或项目,看看发生了什么。有时你如果让它工作即可,即使你不知道发生了什么。
每当你花费太多时间在某个小东西上时,那就问问他们:我如果采取哪种形式?在大多数情况下,你会想取中间值。你想提供一个好的、坚实的软件系统,同时你能自信地理解和修改,但没有耗费荒谬的时间。随着你作为开发人员的成长,你会更好地明白什么时候就此离开就能,以及什么时候须要以某些形式完成。
就个人而言,我喜欢我的项目80%完美。如果你的项目是绝对100%完美,没有一行标识符让你觉得尴尬,那么很有可能你已经花了太多的时间。
5.与其他程序员交谈
自修程式设计的一个很好的形式就是和其他的程序员交谈。不必谈论任何特定的内容。能是你正在自修的小东西,能是你认为很酷的小东西,能是你正在工作的小东西,皆可。你会发现很多程序员并不喜欢只是聊程式设计。这种做可能会让你教给很多有关库,服务,程式设计词汇和模式方面的知识。但是,最重要的是,你将介绍到其他人是怎样看待程式设计的。你会发现,你认为理所当然或从来没有考虑的事情在人与人之间是非常不同的。
如果你没有什么可谈的,那就回到GUI战争或tab vs space的话题。
6.尝试一切。如果搞不懂的话,那就等6个月。
最后,我要说的是,一直以来在我身上发生着这种的事,我尝试过很多小东西,但我就是不理解。在用30分钟尝试捷伊小东西后,我会停下来。我想这在起步时是很正常的。但是,我记得很多次,在6个月后(或3个月或9个月),我会回到同样的问题或技术上,弄清楚怎样使用它。这是因为我又掌握了一些我以前不具备的知识,或者因为它只是另一种形式的框架。等待一两年,然后回去,总是一种最有用的形式。
这点的一个例子是自修怎样使用终端。我记得极短一两年我都害怕碰到终端,因为我不知道怎样使用。我花了一两年并按照步骤定期地使用它和理解它。当然,如果我认识能向我解答的人,或者找到一个好的资源来自修,这种的事情就不会发生!
结论
这些事情能帮助新手在他们漫长的旅程中自修编程。我知道我还有更多小东西须要自修,并将继续自修怎样永远地自修。最重要的事情说三遍,请继续,不要放弃,不要放弃,不要放弃。当然,说说容易,因为自修程式设计有时可能会令人非常沮丧!不要担心。这是正常的。每个人都经历过这种的心情。