程序员的人生路程是怎么样的?除了工作积极努力外,还有内在外在的因素。有时间就应该多读书。如扩充眼界,读读别人的职业生涯书籍;基本功扎实,多读读数据结构、设计模式;如果想处理好与同事之间或者上下级之间,建议看看管理类书籍,如《赢》、《大师的管理课》。先贴一份自己的书单:

一、内功书籍:《程序员代码面试指南:IT名企算法与数据结构题目最优解》
谈到IT,谈到计算机。如果你是一个资深程序员,要说你不懂数据结构,可能没人会相信。要说对数据结构了解很深,我是不敢说。学校学过链接、栈、队列,这些还有代码实现;而到了树、图基本就止步于理论了,当然什么一些简单的遍历也不敢说深入吧。
左程云老师的这本数据结构,是我目前见过深度最深,算法思路最清晰的一本书,作为一个4年经验的程序员,我觉得这本书非常值的拜读。直觉告诉我,以后一定会产生意想不到的结果,一定要坚持读三遍以上!这本书到目前为止,只看了前三章,其中的例子我都用oc实现,附上demo。不得不说,数据结构是一本很难啃的书,决定还是先消化前三章,再看后面的章节内容吧。
二、设计模式:《设计模式之禅 第2版》
设计模式是程序员必备书籍之一,实际开发中能解决很多问题。这本书不是看完就完了,而是对每种设计模式及其中的思想,应用场景有所了解。然后理论结合实际,才能理解得更深。高手必备,开发三四年不懂设计模式有点说不过去。其中我觉的重要的例子,都用OC实现,iOS开发者可看看,附上demo。
第2版在第1版的基础上有两方面的改进,一方面结合读者的意见和建议对原有内容中的瑕疵进行了修正和完善,另一方面增加了4种新的设计模式。
三、《重构改善既有的代码设计》

这本书看完已有一个月,重构了以前两三个功能,在新功能开发上也启动了重要的作用。给自己的代码带上了一个新台阶,知道什么样的代码好,什么样的代码有坏味道。这本书关于重构,提出了很多具体的方法,现在写代码有种如沐春风的感觉。这里总结了书中一些重构方法总结,附上链接。
重构不是推翻重做,而是在不影响功能的情况下,一小步一小步的进行,当然这个时候单元测试的用途就太有必要了。
结合自己的项目,对一两个功能进行尝试重构,效果最佳。
原来的强大的XCode早就提供了一些重构的功能,只不过是我用的少。

四、《敏捷软件开发》
这本书讲述了如何能够敏捷开发,但我更觉得这本书是设计模式的升华。看完设计模式之后,你对每个设计模式都能有很好的了解,你会相似的功能会使用策略模式,类似的行为你会使用模板模式。在写代码的基础上,你已经上升了一个台阶。《敏捷软件开发》已经清晰的告诉你,怎么运用设计模式了。可以说是设计模式实战书籍,_同时让你不再是知道单元测试,而是实实在在的写出单元测试_。书中的代码更是教科书版的存在。由于是C++写的,理解起来有些困难,网上已有人写成java版,由于我是iOS开发者,已改成OC版。附demo。
五、Objective-C高级编程+iOS与OS+X多线程和内存管理
这本书的内存管理和block讲的很深,网上很多原理篇均来自此书,如Block源码解读,截获变量等;__weak为什么会解决内存泄露问题,怎么样把对象置为nil,main函数为什么要@autoreleasepool包裹着。对于iOS进阶来说,内存相关的是必不可少的。
六、iOS CoreAnimation
这是一本关于动画的好书,对于深入理解CoreAnimation有很大帮助。书中介绍很多的原理,让你更好的理解动画的特性,在后面几张也讲了性能的优化,让你对列表或软件绘制有个总体的了解。我就其中也写了一些文章:iOS 性能优化:一个tableView卡顿案例实战、iOS 高级动画应用:一个带缓冲效果的时钟、iOS性能优化2:列表加载大图优化。我相信其中的干货远不是几篇文章就能介绍的完的,读者可自行阅读。附上书中的demo。
七、Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法
这本也是国外经典著作了,其中很多方法使用性很强。class与import的引用、为类和方法的命名添加前缀来避免命名空间冲突、多用类型变量,少用#define预处理命令等使用方法。总之看完之后,收益颇多,《重构》是所有程序员读完都受益匪浅的书籍,而这本书是专门针对OC开发的程序员的,因此针对性最强。读者可自行阅读。如何优雅的解决NSTimer释放问题来自于本书最后一章。
八、iOS应用逆向工程
此书是关于iOS逆向的书籍,由于书籍比较古老,坑是少不了。但大体思路没有什么变化,带你入门没什么问题。我自己看完之后,也做了几个实战案例,可供参考。给要问逆向能做什么,那能做的事情太多了。逆向是另一个世界的大门。当然难度也不会低,有兴趣的可以学习。
iOS逆向实战一:实现按下home键截屏,如何使用hook的对象属性
九、职业生涯规划书籍:《程序员的自我修养》
作为一个有几年工作经验的程序员,是否感觉自己遇到了瓶颈需要更进一步,是否对自己的未来的规划迷茫,自己怎么样才能成为大牛呢?
如今都说是互联网的寒冬,你否也担忧自己的未来呢?程序员的自我修养这本书也许能给你一些答案。作为一个程序员,其中有很多能产生共鸣。
如: 阅读优秀的书籍:好的想法绝不是凭空产生的,尝试从书中寻找那些能激发你创意和灵感的优秀内容。
我尤其鼓励大家去读那些与技术无关的书籍。程序员不善于自我营销,其中一个重要原因是他们自身所掌握的知识体系太过于单一,很难跳出技术范畴与人交流,并引起别人的兴趣和认同。
我们也需要时常审视自己的工作,哪些是让你头疼的重复劳动,怎样才能使用工具来帮你完成。当我们有了这样的意识,我们自然会去尝试寻找或创造一些工具来使自己从繁复的工作中解脱出来,变得更加高效。
睡眠能够帮助我很好地平衡生活,在一个良好的睡眠之后,我总是能够非常有活力地投入到新一天的工作中,我也会变得更有效率和更赋创造力。
上面都是摘自书中的原话,当然书中还有许多好的建议,可以自己慢慢品读。
阅读优秀的书籍,这点我非常认同的,因为我自己在业余时间也在不断的阅读,许多知识只有从书本上才能获得,对以后的价值不言而喻,少刷点短视频、少打点王者、吃鸡,多看点书,对未来也是投资。
重复的工作使用工具来完成,因为在看这本书之前刚好写了个小工具来处理引导图命名的问题,自己还在想以后工作中有必要写些脚本来解决某些问题,刚好看到书中写的,特别有感觉。估计在面试中,这也是个加分项吧。
睡眠还是建立好自己的生物钟吧,我本身不喜欢熬夜,当然有些必要的加班也是没有办法的,如果不是太忙,管理好自己的睡眠时间。
十、针对管理、同事之间相处之道及自身约束等推荐《赢》、《大师的管理课》、《影响力》
这个不是硬性规定,除了技术类外,沟通也是一门很深奥的学问。