Skip to content

Commit

Permalink
add Junhong's self teaching story
Browse files Browse the repository at this point in the history
  • Loading branch information
raimonfunsgmail committed Mar 15, 2019
1 parent d60d228 commit 9f018a1
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions from-readers/junhong-self-teaching-story.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# 一个野生程序员的自学之路

作者:陈俊鸿(PRESSone 前端工程师)

我大学专业是电子工程,主要是研究电路。但毕业之后我并没有从事这方面的工作。最主要的原因是我觉得这个行业很难自学成才。而且这也不是我喜欢的行业。后来有个朋友推荐我学习编程,他让我从前端(写网页界面)入门,因为这样会比较容易。于是我把自己关在房间里面,上网找了一堆教程资料,然后跟着教程写代码,一边看着浏览器运行的结果。当我看到自己的代码在浏览器中实现各种效果,就觉得很有成就感。虽然当时的我对于眼前的代码,还是有很多不懂的地方,但也觉得有意思,好玩。就这样学习了三个月。

在这个过程中,我觉得最有意思的是,电脑里面的所有事情,都是我能控制的。只要思路和做法正确,就一定能得到自己想要的结果。我开始喜欢上这个过程。当我能够从头到尾控制一件事情时,我会觉得非常爽。

当然了,一开始,磕磕巴巴总是难免的。我总是会遇到一些我解决不了的问题。绞尽脑汁,反复尝试也都是错的。内心很烦躁。于是我学会了一个非常重要的技能:「通过某种方式,使用谷歌搜索」。我学会了如何根据自己的问题,搜索答案。后来我发现,我遇到的大部分问题,别人都有遇到过,网上都有现成的答案。我在这个时刻真正感觉到了互联网是一个神奇的地方。

在这个过程中,我也深深体会到英语的重要性。在计算机领域,大部分有价值的信息都是英文的,不会英文将吃大亏。对于英文的要求,也不是很高,够用就行,因为我是一个连四级英语都没考过的同学,现在也能无障碍地用英语,并且还在不断地用,不断地学。有人说:「英语是一个程序员的天花板」,我非常认同。

后来,我自学三个月之后,找到了第一份工作。当时的工资很低,但我还是心怀感激,毕竟这为我开启了通往编程世界的大门。这时候我有了新的感悟:在工作中运用知识,和自己私底下练习是很不一样的。因为需要考虑的因素更多,遇到的问题也千奇百怪。在这段工作经历中,我的编程水平成长迅速,我开始觉得:做中学(Learning by doing)是效率最高的学习方式,也是最用有趣的方式。

我对于工作的态度就是打怪升级。不断遇到新问题,思考问题,解决问题。不断重复这个过程。于是我慢慢地发现了编程的本质。

编程在我看来,其实就是通过计算机解决问题。慢慢地你会发现,你大部分时间不是花在写代码上,而是思考如何解决问题。编程语言就是工具,在开始解决问题之前,我们需要先打磨好工具,所以要先学习语法,学完基础知识之后,就可以开始解决问题。这时候我发现一个很重要的技能 — 分解问题。当遇到复杂的问题时,不要慌,把它分解成一个个小问题,颗粒度越小越好。然后每次只解决一个小问题。最终把所有答案组合起来,就是一段一段代码。我发现这个解决问题的模式,对我的工作和学习帮助非常大。对于处理生活中的事情,也可以遵循这个模式。非常好用。

每一个新技术都是为了解决问题而诞生的。所以我在学新技术的时候,会围绕这几个方面:

1. 这个技术解决了什么问题?
2. 它的优势是什么?
3. 它的劣势是什么?
4. 它和 xx 技术有什么不一样?
5. 在什么场景下可以使用它?
6. 如何正确地使用它?
7. 它的实现原理是什么?

学习每个技术,我都会尝试去解答这些问题。有了答案之后,这个技术就可以为我所用。我就知道应该在什么时候,从我的工具箱中把它拿出来用。

在学习的过程中,我不太喜欢单纯地啃书看资料。我更喜欢可以立刻看到结果的学习方式。所以我喜欢的教程有如下特点:手把手教程,互动学习,可以做出一个具体作品。因为这样的学习方式,我会觉得更有趣。还是那句话:做中学(Learning by doing)是效率最高的学习方式,也是最用有趣的方式。

这些年,还有一个方法,让我获益良多 — 阅读别人的代码。在我看来,阅读别人的代码,就是在研究别人解决问题的思路。他是怎么做到的?他为什么要这么做?哪里是值得我学习的地方?在计算机领域,很多代码是开源的,我可以看到不同国家的人写的代码,免费从他们的代码中学习。有时候学到了就马上能用在实际工作中,进而提升自己的价值和能力,这种成就感是非常愉悦的。

随着时间的积累,我解决了很多问题,学了很多知识,犯了很多错误。我会使用印象笔记,把这些知识全部都记录下来。好记性不如烂笔头,把有价值的知识整理成体系,让今天花费的学习时间,在将来可以换回对应的价值。学了就忘实在是一种浪费。踏踏实实地把知识记录下来,让自己的努力可积累。现在我可以随手查到自己几年前的学习笔记和总结,这就是一笔财富。我依旧在不断地学习,慢慢地成为一个更厉害的 Problem Solver。

0 comments on commit 9f018a1

Please sign in to comment.