---
title: "学习工作方法系列"
author: "Perrin Yong"
author_profile: https://www.pystone.net/profile/
published_by: "Perrin Yong"
canonical: https://www.pystone.net/notes/cs-learning-workflow-series/
type: note
content_role: unspecified
visibility: public
id_stability: rename-stable
source_path: "10-计算机、信息技术与工程/01-系统基础与网络安全/计算机与操作系统/学习工作方法系列.md"
content_hash: 0cae2001826b062cc62fc1139256b18a97dc7bb40d83f5bacf18a1ee8b6e6d04
knowledge_version: 224c990773de.5fa8af6e39fa
site_commit: 224c990773de166d23a886306577dd90379529ce
notes_commit: 5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a
---
# 学习工作方法系列
- 如何借助开源项目学习
- 如何读懂源码
 - 修改代码就是理解代码的最好方式
- CandyCat 一本技术书籍是如何出版的……
- 最高效的学习一门视频课程的方法
- 纸质书vs电子书
- Ref


## 如何借助开源项目学习

https://github.com/openecnu/teach-yourself-programming-with-open-source


## 如何读懂源码

1. 读懂程式码，使心法皆为我所用。 （a）读懂别人写的程式码，让你收获满满 （b）先了解系统架构与行为模式，再细读 （c）熟悉沟通语言与惯例用语 （d）掌握程式码撰写者的心态与习惯
2. 摸清架构，便可轻松掌握全貌。 （a）阅读程式码的目的，在于了解全貌而非细节 （b）由上而下厘清架构后，便可轻易理解组成关系 （c）了解架构，必须要加上层次感 （d）探索架构的第一件事：找出系统如何初始化
3. 优质工具在手，读懂程式非难事。 （a）善用文字编辑器或IDE中，加速解读程式码 （b）grep按（读者：推荐来源透视）是一个基本而极为有用的工具 （c）gtags可建立索引，让搜寻更有效率 （d）再搭配htags制作的HTML文件，更是如虎添翼
4. 望文生义，进而推敲组件的作用。 （a）好的说明文件难求，拼凑故事的能力很重要 （b）探索架构的第一步─ ─找到程式的入口 （c）系统多会采用相同的架构处理插件程式 （d）随着实务经验，归纳常见的架构模式 （e）善用名称可加速了解
5. 找到程式入口，再由上而下抽丝剥茧。 （a）展开的同时，随手记录树状结构 （b）无法望文生义的函式，先试着预看一层 （c）根据需要了解的粒度，决定展开的层数
6. 阅读的乐趣，透过程式码认识作者。 （a）阅读程式码是新时代程式人必备的重要技能 （b）好的名称能够摘要性地点出实体的作用 （c）转换立场，理解作者的思考方式 （d）从程式码着手认识作者独有的风格，进而见贤思齐


### 修改代码就是理解代码的最好方式

当拿到一个项目时，其中很大一部分内容是不需要关注的。把所有不需要关注的部分删除掉，就可以去除干扰，逐步看清核心内容，抓住本质。在删除的过程中，调式一些错误，进行一些模块的对接，也是加深理解的一种fang'shi


## CandyCat 一本技术书籍是如何出版的……

http://candycat1992.github.io/2017/02/22/book-second-edition/


## 最高效的学习一门视频课程的方法

如果有课件，直接看课件，根据课件整理笔记。

遇到不太清楚的，再看视频

这样，根据自己的实际情况，懂得的东西，能做一个归纳整理，不需要浪费看视频的时间。

不懂的东西，能参考视屏，直观地理解清楚。


## 纸质书vs电子书

时代在进步，各行各业知识在爆炸性地增长，工具和方法都在经理革命，要跟上时代的潮流，新的、质量更高的方法与工具就是要取代旧的、低效率的方法与工具。不可迂腐守旧，不会适应。

电子书的阅读已经在很大程度上优于纸质书了。

从阅读效率上：在电脑上阅读电子书，字体更大，一页显示的信息更多，更容易翻阅，阅读速度更快。

从身体健康上：电子书阅读不需要低头，对颈椎比较好。

从笔记效果上：电脑上更方便记录。知识量很大，用笔记录就要慢很多。而且电脑上的笔记也更容易查阅。


因此，在学习时，可以将阅读电子书、记录电子笔记与阅读纸质书、记录纸质笔记的方式结合起来，哪个方便用哪个，想用哪个用哪个，保证把要学的东西学完且不重复即可。不管用什么方法，都是形式问题，不要执著于表象，要关注本质，本质上把知识学到就好。


## Ref

https://www.zhihu.com/question/19625320/answer/18512481

[TOC]

## 如何借助开源项目学习
https://github.com/openecnu/teach-yourself-programming-with-open-source
## 如何读懂源码


1. 读懂程式码，使心法皆为我所用。
（a）读懂别人写的程式码，让你收获满满
（b）先了解系统架构与行为模式，再细读
（c）熟悉沟通语言与惯例用语
（d）掌握程式码撰写者的心态与习惯
2. 摸清架构，便可轻松掌握全貌。
（a）阅读程式码的目的，在于了解全貌而非细节
（b）由上而下厘清架构后，便可轻易理解组成关系
（c）了解架构，必须要加上层次感
（d）探索架构的第一件事：找出系统如何初始化
3. 优质工具在手，读懂程式非难事。
（a）善用文字编辑器或IDE中，加速解读程式码
（b）grep按（读者：推荐来源透视）是一个基本而极为有用的工具
（c）gtags可建立索引，让搜寻更有效率
（d）再搭配htags制作的HTML文件，更是如虎添翼
4. 望文生义，进而推敲组件的作用。
（a）好的说明文件难求，拼凑故事的能力很重要
（b）探索架构的第一步─ ─找到程式的入口
（c）系统多会采用相同的架构处理插件程式
（d）随着实务经验，归纳常见的架构模式
（e）善用名称可加速了解
5. 找到程式入口，再由上而下抽丝剥茧。
（a）展开的同时，随手记录树状结构
（b）无法望文生义的函式，先试着预看一层
（c）根据需要了解的粒度，决定展开的层数
6. 阅读的乐趣，透过程式码认识作者。
（a）阅读程式码是新时代程式人必备的重要技能
（b）好的名称能够摘要性地点出实体的作用
（c）转换立场，理解作者的思考方式
（d）从程式码着手认识作者独有的风格，进而见贤思齐

### 修改代码就是理解代码的最好方式
当拿到一个项目时，其中很大一部分内容是不需要关注的。把所有不需要关注的部分删除掉，就可以去除干扰，逐步看清核心内容，抓住本质。在删除的过程中，调式一些错误，进行一些模块的对接，也是加深理解的一种途径。

## CandyCat 一本技术书籍是如何出版的……

http://candycat1992.github.io/2017/02/22/book-second-edition/

## 最高效的学习一门视频课程的方法
如果有课件，直接看课件，根据课件整理笔记。
遇到不太清楚的，再看视频
这样，根据自己的实际情况，懂得的东西，能做一个归纳整理，不需要浪费看视频的时间。
不懂的东西，能参考视屏，直观地理解清楚。

## 纸质书vs电子书
时代在进步，各行各业知识在爆炸性地增长，工具和方法都在经理革命，要跟上时代的潮流，新的、质量更高的方法与工具就是要取代旧的、低效率的方法与工具。不可迂腐守旧，不会适应。
电子书的阅读已经在很大程度上优于纸质书了。
从阅读效率上：在电脑上阅读电子书，字体更大，一页显示的信息更多，更容易翻阅，阅读速度更快。
从身体健康上：电子书阅读不需要低头，对颈椎比较好。
从笔记效果上：电脑上更方便记录。知识量很大，用笔记录就要慢很多。而且电脑上的笔记也更容易查阅。

因此，在学习时，可以将阅读电子书、记录电子笔记与阅读纸质书、记录纸质笔记的方式结合起来，哪个方便用哪个，想用哪个用哪个，保证把要学的东西学完且不重复即可。不管用什么方法，都是形式问题，不要执著于表象，要关注本质，本质上把知识学到就好。

## Ref
https://www.zhihu.com/question/19625320/answer/18512481
