半励志视角:Python开发学习指南

发表时间: 2019-01-31 21:12
一篇 Python 开发学习路线的高度主观、并不怎么励志、也不传统,甚至太诚实、略显粗暴的文章。

本文并不只是一篇融合了经典 PYTHON 学习书籍/视频/课程中观点的大汇编,而且还覆盖了一些初、中级学习者在学习过程中会面临的更大的问题——一些 Stack Overflow 未收录也未能解决的问题

为什么学习 PYTHON?

不管怎么说,为什么应该学习 PYTHON,而不是其他 20 多门当下流行的语言之一?当你选择开始自己的 PYTHON 之旅时,这个问题会(一天之内)多次突然出现在你的脑海里。

选择你的第一门编程语言就像选择一只新手的宝可梦。

相较于程序员在使用既定语言时所展示的开发技巧,以及磨炼并整合更加通用的编程技巧的能力,语言本身的特性并没有那么重要。

如果你希望从另一门语言开始学习,现在就关掉这篇文章,顺从自己的喜好吧。只要对自己的选择自信不动摇,专注于相应的课程,你成功的几率会更高。选择哪门语言并不重要;重要的是,一旦你做出自己的选择,就要坚持下去。

网络上有无数关于语言/框架间比较的争论,足以使任何一个头脑清醒的人陷入分析困难,怀疑自己原先的选择,最终放弃学习。

我见过一些初、中级程序员声称掌握 3~4 门语言。他们倾向于了解每门语言所有的细枝末节,但没有一门是真正能够拿来编程的。这就是尝试太多、而没有专注其一的结果。

PYTHON 是一门设计非常优美的语言。网上也可以获得非常多的文档和教程。除此之外,PYTHON 在非常多领域中都有应用,因此无论你是什么水平,都有非常多可以探索的东西。不过,对于这些流行的 20 多门语言中的绝大多数而言,这些话也同样适用。

每门语言都有自己的优点和缺点,及其最适合的应用场景。PYTHON 最流行的 3 个应用场景是:数据处理、网络应用的后端编写和自动化脚本。我们有理由相信,PYTHON 是对于初学者而言最好的一门语言,因为这门语言的设计原则之一就是强调简洁明了。

你总能听到「你选错了语言」的声音。十有八九,这些说法都来自一些尝试推销产品、或是自己陷入了严重不安的人。

怎么学习 PYTHON?

既然已经做出了自己的选择,那么就开始谈谈怎么学习 PYTHON 吧。

很简单。选择一门教程,完成学习,然后选择下一门。劳逸结合,持续重复。

只学习一本书或是视频课程并不能掌握 PYTHON。你需要经常处于在编程的环境中,逐渐增大练习强度。耐心、毅力、投入(以及其他优秀品质)是必不可少的!

以下是我会推荐给初学者的一个基本流程。如果你是人类(我之前检查过,AI 目前对学习 PYTHON 还没有兴趣),那么你的学习路线可能会有稍许不同,所以以下说明仅作参考。重要的是,应该知道什么时候开始下一阶段的学习,绝大部分人开始得太晚了。

也许相较于读书,你更愿意在 edX 上选择一门课程。相较于具体的教程/课程而言,整体过程会更加重要。

  • 通过读书,建立扎实的基础。
  • 开始学习利用 PYTHON 实现一个小的独立项目的教程,如发邮件、写文件。借此机会,你会了解到对于 PYTHON 开发者而言有用的包和库。
  • 开始培养阅读文档的习惯。利用已有的库,搭建小的应用程序。
  • 开始培养关于语言及其工具更深度的理解。了解领域内专家的工作。
  • 开始接触源代码。

如果你已经学习完了上图中的 PYTHON 资料,这里还有一些实用资源可供使用:
https://www.fullstackpython.com/best-python-resources.html

在学习任何教程时,注意要顺着思路亲自写代码。仅仅阅读示例代码是远远不够的。

学习通用的问题解决方法

「学习一门语言(或者框架/库)」和「学习编程」之间有着细微的差异,就像「水彩」和「绘画」的差别。

在付费开始一门「全栈网络开发」课程之前,首先要知道,学习这样一门课并不会让你变成一个优秀的程序员。它只会教你解决简单问题的一个具体方法步骤(是的,绝大多数这些课程中搭建的网络应用确实是非常简单的问题)。掌握这样一个解决方法固然很好,但能够设计自己的解决方案才是最好的。把注意力集中在程序结构、设计模式和算法上。这些知识并不只是 PYTHON 独有的,而在几乎所有的语言中,都是相同的。

坚持下去,就会柳暗花明。

寻找答案

在遇到困难时(你一定会的,而且不止一次),首先尝试(自己)解决问题,然后再去其他地方寻求帮助。很有可能,其他地方,也有其他人之前遇到了相同的问题,并把解决方案记录在了网络上。同时,PYTHON 社区(全世界使用 PYTHON 并积极参与到与其他 PYTHON 程序员联系的人们)非常受欢迎。不管什么时候,你都可以在那里寻求帮助。

哇哦!PYTHON!

PYTHON 中有非常多可以学习的知识,在非常多的领域中都有它的身影。不要跳过基础知识,直接进入一个特定领域的专业内容上。应该在学会打包后再开始 PyTorch 的学习,掌握虚拟环境后,再开始接触 Django。掌握深度的 PYTHON 知识,长远而言会得到更大的回报。当你在程序中使用自己高度定制化的库时,可以减少花在 debug 上的时间。

学习需要多久时间?

9 个图中展示的周期。

熟练掌握知识需要时间。比绝大多数人告诉你的还要久。你不可能在几个月内变成一个编程专家。优秀事物需要时间和精力的打磨。我建议你至少在原生 PYTHON 上花费至少一年的时间。你会遇到让你分心的事和消遣娱乐,尽量避免它们,但不要害怕去学习新知识。成为一个全面的开发者,不只需要 PYTHON。学习 Git、Markdown、HTML 也会让你获益匪浅。在整体的学习过程中,你还可能需要掌握 JS 和统计学。

保持学习的状态,但不是仅仅学习已有知识!

掌握「学习-构建」的周期

在任何有创造力的/科学的努力中,都会有这样两个不断重复出现的阶段。

学习阶段:在此阶段,你应该专注于积累知识。读书,完成所有的教程并挖掘所有现有的东西。

构建阶段:在此阶段,你应该通过使用在前一个学习阶段所获得的知识,构建出一些东西。相信自己的能力,忽视那些说你不行的声音,写属于自己的应用。在完成后,回去继续学习。

在两个阶段间找好平衡。在一到两个月的学习阶段后,开始一个月的构建阶段。绝大多数人总是害怕而不敢开始进入构建阶段。

成为一个学生

探索你的语言的所有知识,了解你的领域的前辈,提出问题,思考为什么某个东西是这样设计的。