前言
入行9年多了,一路走来也翻过各路各样的货,总觉得学习不够系统结构化,好些经典干货不够深入,因此结合自身经历和网上资料整理此针对java软件工程师(偏互联网)的必读书单,希望对您有所帮助,并在学习的路上少走弯路或陷入误区。
从业界看优秀的程序员应具备两方面的能力:
1.良好的程序设计能力:
掌握常用的数据结构和算法(如链表,栈,堆,队列,排序和散列);
理解计算机科学的核心概念(如计算机系统结构、操作系统、编译原理和计算机网络);
熟悉互联网网络和服务器原理(如TCP/UDP,http)
熟悉至少两门以上编程语言(例如Java、Python、php);
2.专业的软件开发素养:
具备良好的编程思想或思维(即是软件工程思想),如OOA、OOD、OOP、结构化思维等
具备良好的编程实践,能够编写可测试,可扩展,可维护的代码;
理解把握需求,按时按质交付用户所需要的产品;
跟其它能力一样,程序设计和软件开发素养的能力源自书本知识和项目经验。项目经验因人而异(在不同领域的程序员项目经验的差异会比较大),但书本知识是相通的,尤其是经典书籍不仅能够拓宽程序员的视野且能提高成长速度,经典书籍经得住时间的考验,可反复读,技术框架有很多,我们不要陷入追求数量的误区,要追求质量,同类型的技术框架深入学习一种即可,比如mvc框架只需深入研究spring mvc或其他任一种即可,其他都是相通的,因此学习书本知识是一场没有终点的马拉松比赛,而阅读书籍的顺序一般从入门—经典—延伸的学习过程,此书单正是按照此规律并结合程序员修炼过程而制定。
一.入门书籍
程序设计:
1.基础理论:《编码:隐匿在计算机软硬件背后的语言》(挑读)
2.编程语言:
JavaScript:《JavaScript DOM编程艺术(第2版)》、至少一js框架如jquery《jQuery开发从入门到精通》(细读)
Java:《Java核心技术》(第9版)(细读)
Python:《Python基础教程(第二版)》(细读)
3.编程语言理论:《编程语言实现模式》(细读)
4.程序设计:《程序设计方法》(细读)
5.算法与数据结构:《算法(第4版)》(略读)
6.程序调试:《调试九法——软硬件错误的排查之道》(细读)
7.网络及系统:《http权威指南》、《鸟哥的Linux私房菜基础学习篇(第三版)》(挑读)
8.数据库:《数据库原理(第5版)》(挑读)
软件开发:
1.编程实践:《程序设计实践》(细读)
2.面向对象程序设计:《Head First设计模式》(细读)
3.重构:《重构》(挑读)
4.软件测试:《How to Break Software》(挑读)
5.专业开发:《程序员修炼之道:从小工到专家》(细读)
6.网络及系统:《TCP/IP入门经典(第5版)》(挑读)
7.数据库:《SQL入门经典(第5版)》(细读)
8.互联网:《拆掉互联网那堵墙》(略读)
二.经典(进阶)书籍
程序设计:
1.基础理论:《深入理解计算机系统(第2版)》(细读)
2.编程语言:
Java:《Effective Java(第2版)》、《深入理解Java虚拟机 JVM高级特性与最佳实践》(细读)
JavaScript:《JavaScript语言精粹》(细读)
Python:《Python参考手册(第4版)》(细读)
3.编程语言理论:《程序设计语言——实践之路》、《java编程思想 第4版》(第3版)(挑读)
4.程序设计:《计算机程序的构造与解释(第2版)》(挑读)
5.算法与数据结构:《编程珠玑(第2版)》(略读)
6.程序调试:《调试九法——软硬件错误的排查之道》(挑读)
7.网络及系统:《网络安全基础:应用与标准(第5版)》(挑读)
8.数据库:《数据库设计指南-60个设计技巧》(挑读)
软件开发:
1.编程实践:《代码大全(第2版)》(细读)
2.面向对象程序设计:《设计模式》(细读)
3.重构:《修改代码的艺术》(细读)
4.软件测试:《xUnit Test Patterns》(略读)
5.专业开发:《程序员的思维修炼:开发认知潜能的九堂课》、《程序员职业素养》(挑读)
6.网络及系统:《深入理解linux内核(第三版)》(挑读)
7.数据库:《高可用MySQL:构建健壮的数据中心》(略读)
8.互联网:《大型网站技术架构:核心原理与案例分析》《大规模Web服务开发技术》《大数据时代》(挑读)
三.延伸(个人成长)
1.职业规划:《软件开发者路线图》(挑读)
2.工作思维方式:《如何把事情做到最好》(挑读)
3.求职面试:《金领简历:敲开苹果微软谷歌的大门》、《程序员面试金典》(第5版)(挑读)
4.自我管理:《德鲁克---自我管理》(挑读)
学而不思则罔,思而不学则殆,