5-11
软件工程师要持续学习,就要在以下方面做足功夫。第一,用好知识树。系统性学习并归纳总结。第二,探索知识缘由。能够知其然,知其所以然,才能把知识掌握牢固。第三,掌握方法套路。学习的目的就是为了掌握更为高级的方法和解题思路。

想要更高效地学习,必定要经历一个从被动学习到主动学习的转换过程。如果不能深度学习即深度学习,你就不能真正学到东西。
进阶阶段到高手阶段进阶的这个时候最重要的能力有两个:一是前瞻能力,二是取舍能力。
前瞻能力不仅要求软件工程师看到系统的演进,还要看到未来的趋势,对未来有判断,根据预判对技术选型做一些决策。
拥有前瞻能力的几点建议:1.一定要有知识的广度,去读论文、业内各大公司的资料,去各个公司做广泛的交流,保证有足够多的不同的信息进入你的视野。2.多做跨行业的交流,跳出自己的圈子,跟其他行业的人交流,特别是投资人、创业人等见多识广的人。
5-12
要想做好取舍,关键在于明确目标和学会预测。
第一,明确目标。分析A和B的缺陷哪个对最终目标可能产生的负面影响更大,然后选择影响更小的那个。最终目标就像一把尺子,是衡量最优方案的唯一标准。第二,学会预测。跟前瞻性不太一样,他不是从大的时间轴上预测未来,而是说基于现有信息做出一个预测,然后完成取舍。
5-15
技术难题有时候要自己去找,这对自己能力的提升有很大帮助。找项目要考虑两点:第一,整个行业或公司发展的方向是什么,找对大方向;第二,圈定那些跟我目前工作相关,而我又不太懂,需要继续学习的领域。技术难题的唯一通用解决办法是保持一个好心态:你要有战胜困难的信心,要有接受失败的准备,要会去尝试与众不同的方案。在攻克技术难题时,想法设法尝试不同的方案是最重要的。
任何项目在实施之前都要做技术选型,即选择一种技术作为项目的实现方法。一般来说,选技术会考虑两大方面,一个是宏观、主观的,一个是微观、客观的。
宏观:1.看这项技术解决的是不是大问题。所谓大问题就是格局更大的问题,如果技术解决的是一个大问题,那么就很值得投入时间。2.看这项技术解决问题的方式是否让人有想象空间。也就是说,这个技术是否会让你有一种可以干很多事情的感觉,想象空间越大的东西,操作空间也很多。
5-16
微观:1.看有没有大公司撑腰。这项技术由大公司主导或者被大公司不断投钱,那么它就更有可能成功。2.看有没有很好的技术社区。也就是说这项技术要有人捧。3.看有没有杀手级应用。如果一项技术解决的是大问题,并且有想象空间,那他一定有杀手级应用。杀手级应用,意味着这项技术有颠覆性,并且已经颠覆掉一些东西了。4.看有没有经历十年以上时间。十年是一个成熟技术产品的成长周期,这个时间是跨越不了的。