如何有效快速提高编程能力

这是一篇英文博客的部分翻译和自我总结。博客中主要内容:

  • 自我提高编程能力存在一个「编程拐点」,如果越过了这个拐点之后可以给自己赋能。
  • Web开发程序员的有两个拐点,一个是要拥有构建任何基于数据库驱动的应用程序;另一个是要掌握数据结构和算法
  • 超越拐点的技巧
    本文只是自我记录的一些理解,原文查阅请点击 learn-to-code-and-be-self-reliant

learn to code and be self reliant

编程学习阶段,存在一个「编程拐点」,越过这个阶段,你作为开发人员的运作方式将大不相同。建立起拐点是在编程中变得自给自足的过程,直到你不再需要手把手的教学。在拐点之上是令人沮丧的,但是一旦它落后于你,它就会令人难以置信得赋予你力量。

教材阶段(3 ~ 8周时间刻意练习编码)

  1. 需要学习领域特定知识,比如如何编写循环、如何从数据库提取数据、特定编程环境的协议
  2. 借助google解决错误信息,并理解其中原因。这有助于你下一次快速解决相同的错误。参考 如何google
  3. 思考过程比解决方案更重要。真正的信心来自于解决你不知道如何解决的问题,以及自己发现解决问题方案。==逐步说明手册给不了你真正的信心和能力。==
  4. 你永远不会知道所有的事情所需要知道的一切。经验丰富的软件工程师寻求他们未曾解决的问题的解决方案,因为这给他们提供了学习更多的机会
  5. 你可以引用你在应用程序其他部分编写的代码,并遵循其中的模式。而不是总是寻求逐步说明。

拐点(2 ~ 4周时间以正确的心态)

  1. 这是学习编程最令人沮丧的阶段,从很多方面来说也是最重要的阶段。重要的原因主要是你要逐步停止使用教程并开始解决没有人为您排列解决方案的问题。
  2. 不要陷入觉得自己没有准备好,而回过头去进入教材阶段。
  3. 程序性能力是一种发现问题、解决问题的能力。学习编程必须学会特定领域的知识和程序性能力
  4. 走出舒适区、寻求超出当前技能的问题,然后解决它,这是简历和扩展技能的唯一方法
  5. 拐点一(web开发拐点),能够依赖第三方库构建所需的任何数据库驱动的应用程序
  6. 拐点二(数据结构和算法拐点),越过数据结构和算法可以帮助掌握赖以工作的编程语言,额外具有解决复杂编码挑战的深度知识。越过了这个拐点,你能够掌握数据操作并了解代码决策的性能影响。而且能够更好的通过面试 O(∩_∩)O~~
  7. 越过了数据结构和算法的拐点的开发者可以解决web开发拐点、数据结构和算法拐点两者相交叉的挑战:在高级web应用程序中构建复杂算法。可以理解为各种中间件、框架的开发吧

拐点一

能够依赖第三方库构建所需的任何数据库驱动的应用程序

拐点二

越过数据结构和算法可以帮助掌握赖以工作的编程语言,额外具有解决复杂编码挑战的深度知识。具体表现为

  • 写出排序算法
  • 实现并且反转链表
  • 理解、写出堆、栈、队列、树
  • 写递归或迭代程序解决问题

这个阶段你需要知道

  • 不要焦虑,不追逐框架、语言,而是要打破自己的拐点
  • 自我学习,你不可能学会所有东西,那么你就需要在没有任何逐步指导手册的情况下,学会从网络、书籍各种资料中,梳理出所学新知识的逻辑框架。这是一种需要长期迭代、锻炼的能力

这个阶段需要开发出来的学习技能

  • 参考自己的代码,最好的参考资料是你已编写过的类似代码。当你完全理解你编写的代码时,不需要将所有细节都记忆下来。要学会提问自己、解答自己的问题,阅读代码、并重新解释给自己
  • 参考别人的代码,github学习比视频学习更有效

尽可能有效地通过拐点的策略

  • 放弃结构化材料(指教学手册吧?),并在此过程中给自己挑战。可以是解决教材中的「自我指导」习题
  • 尽可能放弃教材,更多的应该是通过教材扩展自己的能力(举一反三能力)
  • 渐进式学习,设立可行性的目标
  • 保持自信,依靠自己找到一个问题的解决方案可能会花费你5分钟、甚至是5小时,这都很正常。如果实在解决不了问题,你可以咨询其他已经越过拐点的人,但前提是在这之前你要有所思考。当你学会了自我解决问题,你会沉浸在舒适区之外建造东西的幸福中。(๑•̀ㅂ•́)و✧加油

如何知道自己通过了拐点

接受,接受软件开发是一个持续自我学习自己不知道的过程。接受你成功学习一切的感觉只意味着你应该开始考虑解决更复杂的问题