之前很早就有耳闻过一个名叫John Washam的外国小哥自学编程的励志故事,还曾一度登上GitHub热度榜。
他为了让自己从一个非CS科班的自学党蜕变成Google的软件工程师,每天坚持自学8~12小时,持续了数月之后,他如愿以偿,成为了一名大厂软件开发工程师。
重点是这位小哥也乐于分享,他将自己成为一个软件工程师的学习历程整理成了一个丰富的GitHub资源仓库并开源了出来(github.com/jwasham/coding-interview-university),而且一度被称为GitHub上最励志的计算机自学教程!
昨天进去又看了一眼,好家伙,截止到目前为止狂砍了171k+的Star,吓得我啪的一下当场就献上了膝盖,很快啊!
要不说开源项目的魅力大呢,有众多开源爱好者参与进来将这份学习笔记翻译成了很多语言的版本,其中就包括简体中文。
仔细看了一下这份自学主题清单你就会发现,内容涵盖的东西可真不少,比如:
- 开发环境和开发工具学习
- 必备计算机基础知识
- 编程语言的选择
- 各种数据结构
- 常用算法和算法复杂度分析
- 设计模式
- 操作系统基础
- 计算机网络基础
- 软件测试
- 系统设计问题
- 书单推荐
- 面试注意事项和面试准备相关
- 学习方法和心得
- ...
除了这些之外,这份自学清单甚至还涉及到有关计算机硬件基础、信息论、密码学、计算机安全、信号处理、离散数学、概率论、计算机领域经典论文等一系列内容,可以说非常硬核了。
看完之后,除了领略到了作者这份硬核学习主题清单本身的技术内容之外,更让我产生共鸣的是他的学习态度和学习方法,这也是我体会最深的一个点。
平日里跟很多小伙伴也探讨过各种关于学习方法的问题。关于自学编程,自己也是踩着坑一步一步过来的。我个人到现在依然最坚信的一点那就是:学习不在入,而在出。
什么意思呢?
很多人在自学的过程中总是会在意自己看了多少书,听了多少视频,刷了多少题目,似乎这些才是衡量自己是否真正学会某项技术点的标准。
然而必须要明确的是,其实它们只是获得知识的一种途径而已,并非最终目的。看了这么多资料,刷了这么多题目,到底有多少是自己真正融会贯通,并转化成自身能力的提高呢?
如果仅仅为了做而做,而把自己陷入一种忙碌的假象之中,这反而成了大家所说的伪勤奋了。把自己弄得很累,但却未能尝到真正提升技能的甜蜜点,这可能是你我曾经所共有的感受。
所以接下来聊聊几点小想法吧,个人在过去的时间里不断尝试和执行,感觉对自己的帮助还是挺大的。
- 提前做好全局调研、统揽和路线规划。
动手学习之前做好学习路线的全局规划十分重要,看书、刷题不是最终目的,最终还是要关注自己知识体系的形成。
不做规划,上来就一头扎进知识的海洋往往会让人迷失自我。我发现一个普遍问题(当然也包括我自己),其实大家在学习过程中的最痛点往往不在于说具体某一项技术该怎么学,这个不是最痛点。最痛点往往在于很多人对于其想学的某个技术(岗位)方向,并没有一个技术点上的宏观视角。
身处其中而不知所向,我觉得这是个人自学道路上最大的恶意!没提前做好规划一头扎进去,久而久之会很容易被各种内部或外部的因素给劝退。东一榔头西一棒子迟早会把自己的学习热情给浇灭。
实时洞察自己位于学习路径中的位置我觉得还是挺重要的,一来方便自己掌控时间和效率,另外也可以增加自己的获得感与成就感,学习有奔头也很重要不是吗?
- 做好留痕,步步为营。
就像去一个地方旅游我们都习惯拍照留念一样,在学习过程中遇到的每一个困难,踩过的每一个坑,留下的每一点感想,获得的每一个成就,都值得被记录下来。
个人博客、电子笔记、GitHub仓库、Wiki文档,我觉得都是非常不错的方式,不可能有白走的路,凡事过往,皆为财富。
随着时间的积累,这将是一笔宝贵的资源,这也将见证着自己的学习之路,上面的这位小哥不也是这么做的吗?
- 总结、输出、回顾。
不知道大家有没有这种感觉,有时候某些知识非得回炉重造个几次才能在后面某一时刻突然有了一种打通任督二脉的感觉,就像这位小伙伴所说的:
说实话,我也很迷恋这种感觉。
看了再多本书其实也检验不了自己是否真正学会了某项技术,而只有能从自己口中或者笔下所能清晰表达出来的知识才真正属于自己。
用自己的语言或者思维导图把所学知识整理成文、梳理成图,这样也方便自己后续的复习和回顾。
另最近花了大把力气,把自用的编程学习资源做了个大整理。
都是纯肝货,目录如下。
该内容 GitHub https://github.com/rd2coding/Road2Coding 已经收录,里面还有我整理的6大编程方向的自学路线+知识点大梳理、我的简历、面试考点、几本硬核pdf笔记,以及我的程序员人生,欢迎star。
整理不易,欢迎支持,下期见!
全部评论
(0) 回帖