条目创建于 2015-03-12 9140 views
现在你已经看到了前方的路,也知道了为何会一路艰辛。将前面描述的四个阶段和过程中对它们起作用的两个要素结合起来,就得到了下面这个图表:
整个过程
对这个过程的了解归了解,去经历又是另外一回事。你还是先迈出正确的第一步吧。
如何通过每一个阶段
整个旅程看似艰难,但坦白地说,学习编程的过程通常都是这么艰苦的。了解自己的目的很重要,尤其当你孤军奋战的时候。但你不会只能靠自己的,因为大部分问题都有捷径可走。学习编程没有人们说的那么简单,但也没有你在绝望时想的那么难。
我会在这部分介绍一些重要的策略,你能利用它们保持一个正确的方向。
I:如何顺利通过手把手辅导的蜜月期(Hand-Holding Honeymoon)
丰富的可用资源让阶段一充满了乐趣。这些资源能够在接下来的阶段中,很好的培养你的逻辑思维。现在是学习编程的大好时机,记住这两个建议,享受编程的乐趣吧!
- 从尝试多种不同的学习资源入手,找?#38454;?#36866;合自己的学习方式和最让自己?#34892;?#36259;的项目类型。最适合你的可能是Khan Academy的快速挑战、 Codecademy的在线练习,或者是Chris Pine的书《Learn to Program》和Code School里那些古怪的try Ruby 训练。刚开始你要思维开阔,不要理会那些告诉你应该学什么的建议。。。。。。在这个阶段学什么都是一样的。
- 选择一个,一旦发现它适合自己就要坚持下去。完整学习整个入门教程,你会从中学到写基础脚本和应用需要的所有基础知识。接着,就要准备?#27599;?#22987;独立地创建工程。
II:如何顺利通过困惑的下滑期(Cliff of Confusion)
几乎每个人都要经历这个阶段,因为成为一名开发者的唯一途径就是不断去开发。你可以通过注册一些自学教程(或那些冒充是“完美课程”的自学教程)来模拟创建工程,但最终你还是要自己动手,这么做不过是拖延了时间。自学教程能很好地让你从更个性化的例程中得到启发,但是在某些情况下你必须脱离过多的辅助,独立解决问题。
如何过渡到独立地创建工程,下面有三个建议:
- 和他人一起工作,哪怕同样是?#22235;瘛?/strong>你会惊讶地发现,两双眼睛更容易调试出一个不可能的错误。
- 阅?#20102;?#20154;的代码,熟悉好的模式。尽量理解为什么作者这么做。同样的道理,不读书是不会想成为一名小说家的,对吧?我将在下一篇文章里集中讨论这个问题,但现在,请仔细注意其他人对任何小问题或工程提出的解决方案。
- ?#26377;?#20107;做起,不断尝试。对于将来,你应该想过做一些有趣的大工程,但你也必须适应调试的过程,搜索一些带?#34892;?#22411;挑战的学习资?#30784;?#32463;验是无可替代的。
III:如何顺利通过绝望的困惑期(Desert of Despair)
一旦适应了调试过程,最令你头疼的问题就是难以获取所需知识,以及学?#20843;?#26377;这些知识必须付出的代价…简?#26412;拖?#22788;于令人绝望的沙漠里。这?#26234;?#20917;下,你真正需要的是一条?#34892;?#30340;前进路线。而Mirages of Mania代表那些吸引你的捷径、诱惑你冒险的新世界和速成计划,它们最终只会浪费你的时间。
因此,要逃离这个沙漠的关键在于:
- 拥有一个强烈的目标想去实现,否则,什么有趣但没用的东西都学的话,最终不过瞎忙活一场。如果你在学习之外还有充裕的时间,请忽略这一条。。。。。。
- 找到一条?#34892;?#30340;路径能直达你设定的目标,并且要验证其可行性。你必须深入思考“这个方法到底能不能帮我实现目标??#20445;?#32780;不是光看那些课程网站或书皮上打出的营销口号和看似真诚的笑?#22330;?/li>
- 专注,避免?#20013;摹?/strong>因为你如果是个对学习编程很?#34892;?#36259;的人,那你肯定也会对所有美妙的事情?#34892;?#36259;。当编程遇到了困难,你需要进一步解决这个问题,而不是另起炉灶。
如果能确定一条路并坚持走下去,你最终一定会进入到下一个阶段,而不是花费了数月或数年,最终只是徒劳。
IV:如何顺利通过煎熬的上升期(Upswing of Awesome)
这个阶段是最棘手的过渡阶段之一。尽管你能开发出应用程序,但你?#23548;?#19978;想成为一名web开发人员。通过这个阶段并找到工作,你需要做三件事情:
- 为编程寻?#26131;?#20339;?#23548;?#24182;效仿。你需要理解一个普通方案和最佳方案之间的差别。自己一味闷头钻研,?#23545;?#27604;不上别人在真实工作环境下写出的产品级代码,而最佳?#23548;?#26679;例很好地体现了这其中的差距。
- 检验你的假设。因为你可能回避了一些自己知识体系中的漏洞,甚至你自己都不知道有这些漏洞的存在。你需要检查并修复这些漏?#30784;?/li>
- 正确对待那些并不吸引人的技能。尽管它们很少被强调,但是你要过渡到一个专业环?#24120;?#23427;们还是相当重要的。这些技能包括测试、数据建模、架构和部署,我们很容易忽?#36816;?#20204;,但它们都是优秀开发的基础。
要做到上面这些并通过最后阶段,关键是要不断获得他人的反馈。完全自学或许富有成效,但难以写出易读、模块化以及可维护的代码,这就使自学者在职业环境中没那么有吸引力。你需要和和那些会怀疑你假设的人们一起工作,他们会提出尖锐的后续问题,并迫使你对自己的知识体系进行查缺?#23396;?/p>
那?#30784;?#36825;条路能行吗?
这些可能听起来?#33804;?#23849;溃,但我保证,在你之前已经有很多?#24605;?#25345;不懈地通过了这个旅程。理解前面的路,你就能有一个明确的计划,也会知道如何获取真正有用的帮助,这些都为你踏上这个旅程开了好头。
很显然,这篇文章没有?#27425;?#20204;想的那样,深入挖掘旅程中的每个阶段,也没有提供详细的建议告诉你?#36855;?#20040;做。即便如此,由于我们熟知这个旅程并且对此抱有极大的热情,因此,我们希望倾尽全力帮助大家。
在此我们进一步探讨了各种问题(从寻找导师,到如何缩小差距得到一份web开发的全职工作)。因为,尽管前方的路充满挑战,但你不是一个人在战斗。
祝你好运!