这本书已经买了将近3个月时间,直到最近才拿出来读,在对自己略感失望之余,我沉心静气地做出计划,安排时间,意外的是3天时间就读完了(当然也有一些其他的原因,后文细说),略感欣喜之余,也越发深刻的感受到「阅读和思考」的重要性。
当时之所以会买这本书,是因为豆瓣上的一篇评论,大致意思是以有别于传统理论教材晦涩难懂,阅读性差的特点,通过一种活泼生动,别开生面的方式将「软件工程」这门学科讲得系统全面,令人印象深刻。于是趁着京东的优惠活动一下子把想买的几本书都买了下来。
因为是专业的学科类书籍,所以其中技术方面的知识的重要性不言自明,这里没必要做书籍的搬运工,本文只谈思维层面上的一些新的认识。
本书提倡「做中学」的教学方法,目标是为了解决「软件工程」这个学科不好教的一个难题。顾名思义,它绝不仅仅是软件工程的学习方法,是可以延伸到学习生活中的方方面面。简而言之就是实践中发现问题,并努力解决问题,进而发现和解决更高层次的问题。这个过程就是学习的过程。 因为所有的高难度体系的共同特征就是第一章的内容需要在掌握后面某一章的内容之后才能深入了解。所以学习的过程中要学会接受一定的未知,你根本不可能一次性就搞懂所有内容,不要奢望在接近DeadLine时「毕其功于一役」,不过一个有用的建议就是努力记住(哪怕暂时不懂的)所有基础概念,随着后期的学习,你会逐渐发现对之前的内容有了全新或更深的认识。也正是这种发现和探索的过程才让学习这件事这么令人如痴如醉。
「技能的反面是什么?」,书中首先抛出了这个问题。要搞懂这个问题,首先要明确「技能」的定义。
指掌握并能运用专门技术的能力,指技术、能力。 --百科
在掌握某项技能之前,我们肯定都是从解决低层次的问题开始,当我们无需动脑就能解决低层次问题后,我们就开始花脑力解决更高层次(中间层次的问题),它们层层递进,解决当前层次的问题才有机会进入下一层解决更高层次的问题,直到最高(可能没有)层次的时候才能称之为「技能」。如下图:
由此可见,技能的反面是解决(低层次)的问题。
书中对软件工程的各个领域(构建管理、设计、开发、测试、项目管理)都有详尽细致的探讨,目前我只选读了3章和我息息相关的内容,从中已然获益良多,尤其其中对软件工程师的个人成长的理解更是解答了我多年的疑问,实为书中的「良师益友」,是IT从业人员必读书籍之一。
附: