跳至主要內容

提升 Coding 能力的关键

Kaybee编程技术学习方法REVIEW约 1458 字大约 5 分钟

The Key to Accelerating Your Coding Skills - KEN MAZAIKAopen in new window
作者的个人主页:https://kenmazaika.com/about/open in new window

作者在这篇文章中说明了快速提升编程能力的关键点。

1 起步阶段

  • 学习领域相关知识(domain-specific knowledge),比如用 Ruby怎么写循环,用代码从数据库读取特定数据, 这方面的知识往往与具体的编程环境相关
  • 要成为一个自学自足开发者的第一步就是能够完成具体的任务。
  • 对初学者来说,最重要的技能是能够关注细节,一是能够读懂错误信息,能够Debug error message, 知道发生了什么,二是能够从每一个你犯的错误中去学习,当下次再遇到的时候就能够快速的解决
  • 善用 Google 进行搜索
  • 你永远不可能知道所有的知识来解决所有的问题,要保持终生学习的态度

当下面这些情形发生的时候,说明你已经度过起步阶段进入下一阶段了:

  • 当你遇到很多错误信息时你已经不在像开始时那样害怕,反而能够知道怎么去解决他们
  • 当你十分擅长通过搜索引擎来寻找解决方案
  • 当你能够从曾经写过的代码中来学习,而不是从头开始一步一步的重新来过

2 转折点

improve-coding-skill

这个阶段称为The Inflection Point, 虽然只是整个学习过程的一部分,但却是最重要的一个阶段,因为在这个阶段你将要面对的是那些没有现成答案的问题。

很多时候你会觉得自己并没有准备好,而且倾向于去做一些基础性的工作,比如一些Get started工作。这个阶段你甚至会怀疑自己是不是真的适合做一名开发人员。一个很重要的原因是:

During the inflection phase, you will be coding 10-20 times SLOWER than in the previous phase.

在这个转折点上,你的编码速度将会比入门时慢10到20倍

尽管在感觉上你会觉得自己进步很慢,甚至自我怀疑,但是实际上,你其实在那些最重要的事情上取得进步。

这里作者引出了相对于domain-specific knowledge 的另一种知识:procedural knowledge

Procedural knowledge is the ability to teach yourself what you don’t know along the way.

简单来说就是在学习过程中如何自学自己不知道的东西的能力。比如你要实现一个新的功能,你该如何开始,如何设计,如何实现?

对于开发者来说,domain-specific knowledgeprecedural knowledge同样重要。

作者给出了对开发者的中肯建议:

For the rest of your life, go outside your limits every single day.

对于很多工程师来说,他们一旦找到自己的舒适区就会裹足不前,他们大多数以维护者的身份出现。而你应该追寻的是那些每天都在寻找突破自己能力限制的人,尝试去解决那些在你技术栈之外的问题,以此来扩展你的技能。

3 两个拐点

  1. The web development inflection point

    你有能力构建任何数据库驱动的系统 ,我们通常来说叫掌握了CRUD

  2. The algorithm and data structures inflection point

    算法和数据结构,掌握数据结构和算法意味着掌握了某一门编程语言的基本知识,以及操纵数据和能够理解一些性能上的取舍

4 关于拐点的结论

When learning to code,domain-specific knowledge doesn’t matter in the grand scheme of things.

当学习编码时,domain-specific knowleage其实并没那么重要,真正重要的是:

  • 你对 web 开发框架有一个扎实的理解
  • 能够掌握用任何一种你所熟悉的语言写出复杂算法的实现

这里作者用各大厂为什么如此看重算法和数据结构来举例说明,真正重要的东西其实就是这2样。

5 在拐点你将学会的

对于开发者来说,最好的参考就是你曾经写过的类似的代码,当你完全理解了你所写的东西,你根本不用去记他们,所以每次开发一个新的功能时请先反问一下自己 :“我是不是写过类似的代码?”如果是,请翻出以前的代码并逐行解释给自己,现在是否能够重用?

6 高效通过拐点的策略

During the tutorial phase, take breaks from going over structured material and give yourself challenge problems along the way.

  • try to do something that is outside the scope of the tutorial - 尽量做一些超出入门教程的尝试
  • Try to use tutorials as little as possible - 少使用辅导教程,多参考 GitHub 文档
  • Focus on the essentials and use repetition - 刻意练习,重复练习

通过拐点是一件很有挑战性的事,理解这些能够帮助你更好的学习:

  • 明白这个阶段本身就是困难和不那么轻松的,
  • 明白在这个阶段其实是在跟你自己的信心做斗争,你的感受其实很常见,想想那些比你牛的人
  • 持续的努力,但是不要过度透支自己

7 如何知道自己已经通过拐点

The final stage of the inflection point process is acceptance. Acceptance that software

development is a process of continuous learning.

终于明白编程其实是不断持续的学习,去解决更为复杂的问题。

学习是为了找到方法,而不是问题的答案