读到《构建之法》,相见恨晚。
《构》是用心之作,作者邹欣老师有扎实的工程实践经验和理论基础。他花心思琢磨传统软件工程教学的缺陷,把软件工程这门课程做了「重构」。他并不只是写了一本书这么简单,而是通过自己和众多愿意突破传统的老师,把这套教学方法带进了真的课堂。
我也在《构》这本书的教学实践微信群里,看到邹欣老师和众多一线工程师对学生作业的讨论和点评,非常认真和投入。我想邹欣老师并没有把《构》当成一本摆在书店的书,而是把它作为改进软件工程教学方式的引子。有更多的院校实践这些方法,更多的学生因此而收益,才是他真正的期望。
软件工程大概分为「个人技能」「团队协作」「流程和规范」几部分。《构》梳理得干净利落,心态、技巧、工具等等,不一而足。大到沟通原则,细至单元测试方法,都有所涉及。
更难能可贵的是,跟我过去读到的软工书籍差别很大,这本书写得非常通俗易懂,甚至有些俏皮,完全不像板着脸的软件工程「教材」,而是不断用打比方和讲故事的方法阐述软件工程中的概念。
除了软件工程本身,我还想跟大家分享的是,在一个细节上我的「脑洞大开」。
在第二章里,有一份对比表格,对比的是菜鸟程序员和资深程序员在整个软件活动中,不同环节的时间投入。
在这份表格中可以看到,资深程序员在分析和设计以及测试中投入的时间超过菜鸟,反而在编码环节的投入低于后者。
编码一直以来是我们对「生产软件」最直观的理解 —— 生产软件不就是程序员坐在电脑前
啪 啪 啪 敲键盘写代码吗?我们会把所有其他诸如计划、设计、代码复审和测试工作统称为写代码外的「其他工作」。
我们会认为在软件活动中,用 80% 的时间写好代码,其他 20% 把其他杂七杂八做一下就好了。
其实,软件工程这个学科就建立在对「写代码之外的其他工作」的重视和优化之上。编码如果是我们看到浮在水面上的冰山一角,那么计划、估算、设计和测试等等才是水面下的完整冰山。
就像开篇时提到的足球,全场比赛大部分时间,其实是在无球跑动,拉扯空挡,干扰传球,拽衣服扯裤子中度过的。
这些「大部分时间」,最终都被有限的几个进球光环所笼罩,成为并不引人注目的「其他时间」。
一个真正熟谙某领域的高手,应该即能冷静地对待热血沸腾的精彩,又能有意识、反直觉地重视默默无闻的「大部分时间」。
他们看到临门一脚之外的兢兢业业,看到功成名就背后的隐忍琐碎,看到绽放之前的生长,爆发之前的积累。
他们愿意花时间计划和测试,他们愿意在中场控球和等待,他们对待看似不重要的「小事」同样毕恭毕敬。
他们看见平凡才是唯一的答案。