《程序员练级攻略》读书总结


本书内容对于刚入门的程序员来说可能具有很好的指引作用,对于有些开发经验的程序员来说同样有不错的梳理导引作用,刚开始看到这个书名的时候,给我的直观感觉是–这是不是又是一个人称“大神级”的普通程序员写的一些“人生感悟”什么的,个人对于这种论调的书籍或者材料比较反感,但看了看作者简介和书页以后,觉得这本书写的很不错(真香?),下面就我所阅读感悟的一些点作个简单的总结反思。

导引

每个行业都有自己的一套运作规则,程序员(狭隘的定义不必深究)这个行业同样有着自己的一套完备的体系和规则,随着这些年的产业快速发展,技术也迭代的非常快速,很多人直呼–“I can not follow any more!”,是的,这是不争的事实。

要进入这个行业,首先需要在这个行业当中找到相应的定位和成就感,这个成就感有了,也就顺带激发了兴趣,这是个大前提。如何去获得成就感呢,我们可以先从简单的程序语言(语法糖比较多的)去入手,去慢慢写一些小程序,完成一些“自动化”的工作,然后学会使用很多工具,去构建,去搜索,去实现我们想实现的小功能。

如何成为优秀的程序员?要有程序员的“自我修养”,有修养的程序员才可能成为真正的工程师和架构师,而没有修养的程序员只能沦为码农,这是码农和工程师的关键区分点

一个有修养的程序员应该具备哪些关键的能力?

专业基础?

从业方向?

两个观点:各种技术不是鱼和熊掌,是可以兼得的;很多技术是相通的,关键是你学在表面还是深入本质

软件设计是工程师非常重要的能力,这是从工程师通往架构师的必备技能。


给你再一次做选择的机会,平凡还是卓越?自在悠闲,还是猛啃书本,不破楼兰终不还?遵循你内心的选择,偷偷告诉你,我选的是后者。

有了选择,方向就有了,剩下的你需要做的就是朝着这个方向努力就行。

需要解决几个问题:

需要明确几点端正一下态度:

学习建议

进击之路

资料书籍:

像 Python 和 JavaScript 这样的动态语言用着是很爽,但是,只有像 C、C++ 和 Java 这样的静态语言才可以让你真正地进阶。

到这里,估计你最少也要花 1-2 年左右的时间,已经是一个 “ 全栈工程师 “ 的样子了,相信你可以找到至少年薪

20 万以上的工作了,而且你的知识面算是有不错的广度了,但是深度还不够,这个时候,是一个比较关键点了。

建议:

选择一个方向开始深入。因为你并不知道你未来会有多大的可能性,也不知道你会成为什么样的人,所以为什么不再更努力一把呢?

程序员的自我修养:

《97 Things Every Programmer Should Know》

程序员的自我修养更多的决定了这条路你到底能走多远

Java书籍推荐

《Java 核心技术:卷 1 基础知识》,这本书本来是 Sun 公司的官方用书,是一本 Java 的入门参考书。对于 Java 初学者来说,是一本非常不错的值得时常翻阅的技术手册。书中有较多地方进行 Java 与 C++ 的比较,因为当时 Java 面世的时候,又被叫作 “C++ Killer”。而我在看这本书的时候,发现书中有很多 C++ 的东西,于是又去学习了 C++。学习 C++ 的时候,发现有很多 C 的东西不懂,又顺着去学习了 C。然后,C -> C++ -> Java 整条线融汇贯通,这对我未来的技术成长有非常大的帮助。


有了上述的入门后,Java 的 Spring 框架是你玩 Java 所无法回避的东西,所以接下来是两本Spring 相关的书,《Spring 实战》和《Spring Boot 实战》。前者是传统的 Spring,后者是新式的微服务的 Spring。如果你只想看一本的话,那么就看后者吧。


接下来,你需要了解了一下如何编写高效的代码,于是必需看一下《Effective Java》(注意,这里我给的引用是第三版的,也是 2017 年末出版的书),这本书是模仿 Scott Meyers的经典图书《Effective C++》的。Effective 这种书基本上都是各种经验之谈,所以,这是一本非常不错的书,你一定要读。


《Java 并发编程实战》,是一本完美的 Java 并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容。最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。


了解如何编写出并发的程序,你还需要了解一下如何优化 Java 的性能。我推荐《Java 性能权威指南》。通过学习这本书,你可以比较大程度地提升性能测试的效果。其中包括:使用JDK 中自带的工具收集 Java 应用的性能数据,理解 JIT 编译器的优缺点,调优 JVM 垃圾收集器以减少对程序的影响,学习管理堆内存和 JVM 原生内存的方法,了解如何最大程度地优化 Java 线程及同步的性能,等等。看完这本书后,如果你还有余力,想了解更多的底层细节,那么,你有必要去读一下《深入理解 Java 虚拟机》


《Java 编程思想》,真是一本透着编程思想的书。上面的书让你从微观角度了解 Java,而这本书则可以让你从一个宏观角度了解 Java。这本书和 Java 核心技术的厚度差不多,但这本书的信息密度比较大。所以,读起来是非常耗大脑的,因为它会让你不断地思考。对于想学好 Java 的程序员来说,这是一本必读的书。


《精通 Spring 4.x》,也是一本很不错的书,就是有点厚,一共有 800 多页,都是干货。我认为其中最不错的是在分析原理,尤其是针对前面提到的 Spring 技术,应用与原理都讲得很透彻,IOC 和 AOP 也分析得很棒,娓娓道来。其对任何一个技术都分析得很细致和全面,不足之处就是内容太多了,所以导致很厚,但这并不影响它是一本不错的工具书。


当然,学 Java 你一定要学面向对象的设计模式,这里就只有一本经典的书《设计模式》。如果你觉得有点儿难度了,那么可以看一下《Head First 设计模式》。

学习设计模式的时候,不要迷失在那23个设计模式当中,明白两个原则:

有了以上的铺垫,你已经是一个高级Java程序员了,可以进到一线公司,是高级程序员或者初级架构师的水平。

其他语言及参考书籍资料:

C 语言太原始了,C++ 太复杂了,Go 语言是不二之选

理论学科

算法书籍资料:

系统知识

软件设计

学习软件设计的方法、理念、范式和模式,是让你从一个程序员通向工程师的必备技能。

有品位的程序员和没有品位的程序员所写出来的代码,所做出来的软件,差距非常大,而且价值也差别很大。

软件设计这个事,并不是一朝一夕就能学会的,也不是别人能把你教会的,很多东西需要你自己用实践、用时间、用错误、用教训、用痛苦才能真正体会其中的精髓的。所以,除了学习理论知识外,你还需要大量的工程实践。

软件设计的相关原则:

宜家(IKEA)简约、高效的家居设计和生产思路;微软(Microsoft)“所见即所得”的理念;谷歌(Google)简约、直接的商业风格,无一例外地遵循了“KISS”原则。也正是“KISS”原则,成就了这些看似神奇的商业经典。而苹果公司的 iPhone 和 iPad 将这个原则实践到了极至。