《构建之法》读后感
《构建之法》是一本好书,当我翻开构建之法的第一页时,我就感觉我能从书中得到许多关于编程的方法和相关知识。
当我读到构建之法里的 “敏捷宣言表明的是一些优先级,不必当作圣旨或者教条来争论”,我才恍然大悟。“兵无常势,水无常形,能因敌变化而取胜者,谓之神”,这话,怎么就想不到呢。
就更想《构建之法》的好,幸亏大学就看到这本书,才让我受益匪浅,《构建之法》可真是雪中送炭。
首先,这是一本全景式图书,会让你更了解这个行业,能让毕业生在对行业从陌生到熟悉的过程中,较少地感到惊讶和出乎意料,这是一本与现实接轨的教材。
其次,这是一本最佳实践式的书,涵盖了科学、健康的软件工程开展中的每个方面,介绍了种种方法论,但不是高高在上、纲领性的方法论,而是方法论的最佳实践,确实可用,拿来就用。
第三,这本书让人有情怀,学生对“古老的”瀑布教材或“舶来的”敏捷书籍,难免会缺乏信心:这东西行吗?适用于现代吗?适用于中国吗?而如果到各大论坛、社区、或者询问“过来人”,往往会收获更多的负面信息,让本来有情怀的学生失望,让本来就缺乏情怀的学生甘心。但很明显我们这个行业需要的是更有情怀的人才、更好的职业道德和素养,如果学生在毕业前就俯首认输,行业还有什么希望可言?邹欣老师的教材会让学生知道“应该如此”而且“可以如此”,从这点上看,功德无量。
第四,这本书在介绍方法论的同时,居然会介绍方法论不适用的场景,介绍方法论在现实中是怎样跑偏的,这就好像讲下棋,“这样走,之后的发展会怎样怎样,所以不行”,怎样做会对,怎样做会错——什么叫宏观视角?什么叫最佳实践?什么叫算无遗策?就像画一棵决策树,向哪个分支走,结果会怎么样,清清楚楚,明明白白,让人信服。
第五,这本书在介绍方法论的时候,并没有把“人”放到“方法论”的下层,而是介绍了种种角色、有血有肉有情绪的人,能让学生了解到工作中接触的种种角色及其想法、诉求,避免“以程序为中心”思考问题,而懂得以人为中心来思考,毕竟程序要解决的,是人的事情。这个思想的转变,对程序员来说,至关重要。
这本书涵盖了现代软件工程的全部,每个章节甚至每个段落拿出来,都可以在实践中作为指导。
这是一本浓缩了无数精华的好书,搞软件的应该人手一册,就像每个兵家必备一本《孙子兵法》一样。
读后问题
问题1:“响应变化胜过遵循计划”,第一反应是排斥,我也认为“拥抱变化”的提出有取悦某些人的成分,当然,作为一种方法论,想要推广,必须满足市场最大的需求,而这个行业最大的需求,就是业务的变化。那么如何相应变化呢?
问题2:“重构的第一原则就是不要重构”么?当需求变化的目标与一开始的代码很不兼容的时候,或者大幅度重构(工作量接近重写,而且重构没有重写那样顺畅的体验),或者采用“小修小补”的方式,以不断降低代码质量来“拥抱变化”,饮鸩止渴,至于“持续重构”,其风险和工作量又没人愿意承担。
问题3:那么响应变化,边想边做,是不是缺乏整体性的设计?
问题4:“不谋全局者,不足谋一域”,需求变化自有其范围,我们要做的是否应该是,在计划的过程中考虑到种种变化的可能性并预留出空间?
问题5:这本书让人有情怀,对“古老的”瀑布教材或“舶来的”敏捷书籍,难免会缺乏信心:这东西行吗?适用于现代吗?适用于中国吗?
问题6:书中介绍“方法论”是否是最佳实践方案?
问题7:是否”不要以程序为中心“,围住人来改变,这种思想设计的正确与否?
问题8:敏捷宣言表明的是一些优先级,不必当作圣旨或者教条来争论”,是否需要我们不必沉浸权威中?
问题9:成为软件工程师需要具备的哪些条件?
问题10:什么叫宏观视角?什么叫最佳实践?什么叫算无遗策?