程序员练级指南

终于在极客时间上剁手了
这篇是耗子叔的那几篇入门指导的浓缩

[TOC]

入门篇

零基础启蒙

两份入门教程(Python & JS)

都是从零开始

Python 与 JavaScript 入门语言

Python 书籍

JavaScript 在线教程

操作系统入门 Linux

W3CSchool Linux 教程

(Microsoft) Visual Studio Code

中文手册,不一定非要。吸引我:在终端工具内打印 Debug 信息

Web 编程入门

前端基础

  • MDN CSS 文档 与 HTML 文档,参考而不是记忆
  • JS DOM 与动态网页 W3Schools 的 JavaScript HTML DOM 教程
  • 要点:
    • HTML 基本语法
    • CSS 如何选中 HTML 元素,应用一些基本样式
    • 用 Firefox + Firebug 或 Chrome 查看炫酷网页结构

后端(PHP)

实践项目

极简 Blog 系统,或是 BBS 系统,支持如下功能:

  • 用户登录和注册,无密码找回
  • 用户发帖,仅支持纯文本
  • 评论,纯文本

从前端到后端,从 HTML/CSS/JS 到 Python,再到数据库

注意的技术点:

  • 用户登录密码不保存为明文
  • 用户登录后,可对自己帖子 “重新编辑”、”删除“,但无权修改其它用户
  • 数据库设计。三张表:用户表,文章表,评论表,他们之间的关联

正式入门

编程技能

The Key to Accelerating Your Coding Skills,文章

  • 编程技巧:Code Complete
  • 编程语言:学习 Java
  • 操作系统:鸟哥的 Linux 私房菜
  • 网络协议:系统了解 HTTP 协议,MDN HTTP 文档,关键点:
    • HTTP 头、HTTP 请求方法、HTTP 返回码
    • Cookie,缓存,会话,连接管理
  • 数据库设计:慕课网在线课程;推荐学习 MySQL
  • 前端:jQuery,Bootstrap;Ajax 请求后端 API 接口方式;JS Promise 模式,阮一峰教程
  • 字符编码

编程工具

  • IDE:Eclipse,Intellij IDEA,VS Code
  • 版本管理工具:Git 使用资料
  • 调试前端:用 Chrome 调试,资料
  • 数据库设计工具:MySQL WorkBench,资料

实践项目

投票系统

业务需求:技术需求:

入门篇小结

  • 1 - 2 年时间
  • 不用精通,能独立做出实践项目即是真正入门(耗子叔对入门的定义)
  • 年薪 20万

修养篇

程序员修养

Quora 帖子

附录:编程规范

专业基础篇

编程语言

  • C 坑
  • C ++
  • Java
    • C –> C ++ –> Java
  • Go

理论学科

”计算机学科最精华的知识,人类智慧的精华“

数据结构与算法

  • 三本书推荐,先后顺序
  • LeetCode 使用
  • “如果想要有科班生理论基础”:
    • 数据结构与算法分析
  • 小结

系统知识

Wireshark 数据包分析实战

系统知识小程序

实践项目

  • 实现一个 telnet 版本的聊天服务器
    • telnet ip:port的方式连接服务器
    • 新连接需要用户名和密码登录,无则注册
    • 然后可以选择一个聊天室加入聊天
    • 管理员有权创建删除聊天室,普通人员只有 加入、退出、查询、聊天室
    • 聊天室人数限制;每个人发出来的其他人都能看到
  • 简单的 HTTP 服务器
    • 解释浏览器传来的 HTTP 协议,只处理 URL path
    • 然后列出所代理的目录
    • 浏览器上可以浏览目录里的文件,和下级目录
    • 点击文件,则文件传给浏览器(浏览器可自动显示图片、PDF、等)
    • 点击子目录,则进入子目录,并列出文件
  • 生产者 / 消费者消息队列服务

小结

  • 还有热情与成就感:恭喜,超过了绝大多数人;50 万
  • 术业有专攻,建议的方向

软件设计篇

软件设计

高手成长篇

系统底层知识