原文:http://blog.thefirehoseproject.com/posts/learn-to-code-and-be-self-reliant/ 原作者:Ken Mazaika
当你学习编码时,会有一个一切开始变化的时刻。在 Firehose,我们把这个时刻称为编码的拐点。跨过这个阶段,你作为开发者的编程方式将大不相同。
教程阶段(3-8周认真编码)
当你开始学习编码时,你目前有很多还不知道的信息。这些信息被称为特定领域的知识(domain-specific knowledge)。
-
对于初学者来说,最重要的技能是注重细节: 在阅读文档或教程等材料时,密切关注细节非常重要。即使是最小的拼写错误也会导致错误消息或者错误。查看错误消息一开始会令人不舒服,但却是学习过程中至关重要的一步。在这个阶段,处理错误消息和问题会教你在安全编程环境中编程的最重要的技能之一:面向细节。
-
调试错误信息非常重要: 事实上,错误信息只是编程的一部分:缺乏经验和经验丰富的开发者都会遇到它们。唯一的区别是,处理错误消息的经验越多,花在尝试修复错误消息上的时间就越少。 学会如何阅读错误消息并快速提取出问题的相关细节 应该从你解决的每条错误消息中学习,不要只是修复错误并完成它,要理解到底是哪里出错了。通过学习每个错误,下次出现同样的错误时,你将能够更快地修复错误。
-
编程的晦涩的小秘密是… 你永远不会知道解决所有问题所需要知道的一切,编程是需要终身学习的。
-
在以下情况下,你就将准备好进入下一阶段: 你已将看到了足够多的错误消息,它们不会再让你感到惊讶。 你变得擅长使用 Google 搜索解决方法。 你能够引用你在应用程序其他部分编写的代码并遵循其中的模式,而不总是寻找逐步的说明。
拐点(2-4周,保持正确的心态)
拐点阶段是学习编码最令人沮丧的阶段之一,但在很多方面,它是唯一重要的阶段。在这个阶段,你逐步停止使用教程,并开始解决没有人为你提供解决方法的问题。
-
在拐点阶段,你的编码速度可能比之前的阶段慢 10 到 20 倍: 你可能会开始质疑你自己并想知道你是否真的有能力成为程序员。在这个阶段,不安和怀疑的感觉很常见。尽管事实上你会觉得你正在以更慢的速度学习和完成事情,但实际上,你正在实现最重要的事情。 程序性的知识是一种能力,在整个过程教会你自己你不知道的东西。当你需要实现一个新功能时,你应该使用哪个类型的 Google 搜索?在这个阶段,当遇到你想要完成的许多事情时,你会觉得自己“处在黑暗当中”。学习如何自己找到光亮是至关重要的,因为你永远不会知道所有要知道的事情,所以你需要能够自学如何解决手头的问题。
-
在你的余生中,每一天都超出你的极限: 一些软件工程师一旦找到自己的立足点就会留在舒适区内。这些类型的程序员被称为维护程序员——不是你应该努力成为的那种。相反,你应该努力每天超出你的极限。你应该寻找超出当前技能的问题,而不是试图将编码项目拉入你的舒适区。这是建立和扩展你的技能的唯一的方法。
在 Web 开发中,实际上有两个拐点会将汇集在一起
- Web 开发的拐点是你能够构建所需的任何数据库驱动的应用程序的关键点。这意味着能够构建具有许多页面的 Web 应用程序,这些应用程序从简单的数据库中存储和检索信息。
- 算法和数据结构拐点是一个不那么表面的拐点,但实际上更重要。除了掌握编程的基础知识和解决复杂编码挑战的知识深度外,已经突破了这个拐点的人将掌握他们正在使用的编程语言。 已经突破了算法和数据结构拐点的人将能够: 编写排序算法 实现和反转链表 利用堆栈,队列和树理解和编写程序 用递归或者迭代的方法编写程序 总之,一旦你突破这个拐点,你将掌握数据的操作,并且理解不同数据结构的性能表现。
拐点的结果
- 当你第一次听到拐点时,拐点的最大结果听起来有点违反直觉。深呼吸: 在学习编码时,特定领域的知识在宏观方案中并不重要。对。我不是在开玩笑——这根本不重要。一旦你通过拐点,这些概念将只用一到两周的教程,甚至几天即可流畅地转化。 最重要的是:
- 你对 Web 开发框架有扎实的把握
- 你可以很好地掌握在任何编程语言中编写算法复杂的代码
你将在拐点期间发展的技能
- 作为软件开发人员,最好的参考资料是你已编写的类似代码。当你完全理解你编写的代码时,你不需要将所有细节提交到内存中。这意味着在构建新功能时你应该问自己的第一个问题是:“我之前是否构建了类似的东西?”如果答案是肯定的,请重新访问代码并逐行浏览代码。重新向自己解释它正在做什么并问自己,“我现在可以使用相同的方法吗?”
尽可能有效地越过拐点地策略
-
在教程阶段,从浏览结构化教材中抽出点时间,在这个过程中给自己一些有挑战的问题。 对于每一课,尝试做一些超出你所遵循的教程范围的事情。 尝试可能少地使用教程。 专注于那些基本的东西并重复使用。
-
越过拐点可能具有挑战性。这里有一些指导可以帮你完成它: 明白这是一个艰难的过程,从容一些。你正在学习很多,但在这个阶段,你正在学习一种全新的技巧,可以自己解决新事物的技巧。 如果你在自信心中挣扎,你的感受是完全正常的。继续学习。如果你继续挣扎,试着和最近通过拐点的人交谈。他们将能够站在你的角度,并让你相信你所遇到的只是暂时的。持续地工作,但不要过度劳累。
在这个阶段获得信心的最好的方法是通过解决你遇到的问题。
如何知道你何时通过了拐点
拐点过程的最后阶段是接受。接受软件开发是一个持续学习的过程。接受你成功学习一切的感觉只意味着你应该开始考虑解决更复杂的问题。
GitHub链接: https://github.com/lichangke/LeetCode
个人Blog: https://lichangke.github.io/
欢迎大家来一起交流学习