Table of Contents:

 本文是俺阅读耗子叔的极客时间专栏而做的一点小笔记备忘,其中大部分的内容是一个程序员需要了解掌握的计算机知识体系架构和书籍推荐

经常读技术博客的读者肯定知道陈皓(网民左耳朵耗子)的博客,其中有一篇较早的博客是程序员技术练级攻略。讲的是一个技术小白如何在技术的道路上打怪做任务练级,并成为大牛。文章中提供了一条学习技术的路线大纲,但它并不带领着你去学习,而是起着一个指导的作用。在这篇博客发表后的7年后,也就是2018年,博主又系统的写了新的一篇,程序员练级攻略(2018)。这一篇相较于前一篇来说更加的系统,内容更加的详细,且于新技术的发展更加贴切。完整版的需要在极客时间付费阅读。以下是俺记的阅读笔记,有兴趣的读者可以去极客时间来进入更深入的了解

 入门篇

 零基础启蒙

 Python入门
 JavaScript入门
 Linux入门
 Web编程入门
 + 前端 html ccs js
 + 后端
  - python 应用面较多
  - php 仅是web后端开发
  - node.js 前端程序员弄的东西,做web开发轮不上号
* 实践小项目:简单的Blog系统

 正式入门

 编程技巧方面
 《代码大全》好的书在你不同的阶段来读,你会有不同的收获,而且还会产生更多的深层次的思考
 编程语言方面
Java语言,Java工业级的编程语言,世界上目前为止综合排名最好的语言,生态强大,大型的互联网或是分布式架构基本上都是 Java 技术栈一些程序员只在自己熟悉的技术而不是合适的技术上工作,这其实并不好,这会让你的视野受限,而视野会决定你的高度
    + 《Java 核心技术(卷 1)》
    + 《Head First Java》
    + 《Spring in Action》
    + 《Spring Boot 实战》
 操作系统
 《鸟哥的 Linux 私房菜》
 网络协议
 MDN 官方HTTP文档
 数据库设计
 《MySQL 必知必会》
 前端方面
 js jQuery ES6的Promise模式 异步编程的一种解决方案
 css Bootstrap
 字符编码方面
 ASCII和Unicode字符编码
 编程工具
 编程IDE Eclipse、Intellij、Visual Studio Code
 版本管理工具
 Git 《Pro Git 中文版(第二版)》
 调试前端程序
 Chrome调试 超完整的Chrome浏览器客户端调试大全
 数据库设计工具
 MySQL WorkBench
 实践项目
 投票系统的项目 Java Spring Boot来实现

 修养篇

 英文能力
 《97 Things Every Programmer Should Know》
 + 能做什么:google、英文书籍、英文文档、StackOverflow、YouTube上视频、GitHub开源项目
 + 怎么做:
  坚持 Google 英文关键词
  在 GitHub 上只用英文。用英文写代码注释,写 Code Commit 信息,用英文写 Issue 和Pull Request,以及用英文写 Wiki
  用英文词典
  用英文教材
 问问题的能力
 《How To Ask Questions The Smart Way》
 X-Y Problem又叫“过早下结论”:提问者其实并不非常清楚想要解决的X问题,他猜测用Y可以搞定,于是他问大家如何实现Y
 写代码的修养
 + 《重构:改善既有代码的设计》
 + 《修改代码的艺术》
 + 《代码整洁之道》
 + 《程序员的职业素养》
 + Code Review:不做Code Review的公司一定是不尊重技术的
 + Unit Test
 安全防范意识
 《OWASP Top 10 2017 PDF 中文版》
 软件工程和上线规范
 + 关于测试
  《完美软件:对软件测试的各种幻想》
  《Google 软件测试之道》
 + 上线前的checklist
 + 上线后的运行监控
 编程规范
 各个语言编码规范、工具、API的使用规范

 专业基础篇

 编程语言

 go可以替C/C++,Java写业务代码,目前还取代不掉,除非业务简单Go的确替换不了java,一个是业务代码复杂,且java的生态强大,go生态还不完善;go的应用场景为各种中间件

 C
 + 《C 程序设计语言》
 + 《C 语言程序设计现代方法》
 + 《C 陷阱与缺陷》
 C++
 + 《C++ Primer 中文版》
 + 《Effective C++》
 + 《More EffectiveC++》
 + 《深度探索 C++ 对象模型 》
 + 《C++ FAQ》Bjarne Stroustrup C++作者所写
 Java
 + 《Java 核心技术:卷 1 基础知识》
 + 《Spring 实战》
 + 《Spring Boot 实战》
 + 《Effective Java》
 + 《Java 并发编程实战》
 + 《Java 性能权威指南》
 + 《深入理解 Java 虚拟机》
 + 《Java 编程思想》
 + 《Head First 设计模式》
 + 《设计模式--可复用面向对象软件的基础》
 Go
这门语言已经 10 多年了,其已成为云计算领域事实上的标准语言,尤其是在Docker/Kubernetes 等项目中,Go 语言最突出之处是并发编程《The Go Programming Language》

 理论学科

 算法和数据结构
 《算法》
 《算法图解》
 《算法导论》
 《编程珠玑》
 《数据结构与算法分析》
 练习算法的网站
 数据库
 《数据库系统概念》
 计算机网络
 《计算机网络》
 操作系统
 《现代操作系统》
* 其他
 《计算机程序的构造和解释》
 《编译原理》

 系统知识

 系统知识是理论知识的工程实践,这里面有很多很多的细节

 Unix/Linux
 TCP/IP
 C10K
 单机1万个并发连接问题
 《深入理解计算机系统》
 理查德·史蒂文斯(Richard Stevens)的难啃的三本书
 《Unix 高级环境编程》
 《Unix 网络编程》 第 1 卷 套接口 API 、第 2 卷 进程间通信
 《TCP/IP 详解 卷 I 协议》
 通俗易懂的
 《Linux C 编程一站式学习》。
 《TCP/IP 网络编程》。
 《图解 TCP/IP》
 《The TCP/IP Guide》
 《Wireshark 数据包分析实战》

 软件设计篇

 编程范式
 + 泛型编程
 + 函数式编程
 + 面向对象编程
 软件设计原则
 + DRY- 避免重复原则
 + KISS- 简单原则
 + 迪米特法则(又称 "最少知识原则")
 + 面向对象的 S.O.L.I.D 原则

 高手成长篇

 系统
 数据库
 分布式架构
 微服务
 容器化和自动化运维
 机器学习
 前端方向
 技术论文

 发展方向

 底层方向:操作系统、文件系统、数据库、网络……
 架构方向:分布式系统架构、微服务、DevOps、Cloud Native……
 数据方向:大数据、机器学习、人工智能……
 前端方向:你对用户体验或是交互更感兴趣,那么你走前端的路吧。
* 其它方向:比如,安全开发、运维开发、嵌入式开发……

 参考链接

程序员技术练级攻略