天天看点

《程序员修炼之道——从小工到专家》 读书笔记

软件工程管理课程也进行了快两个月了,读书笔记也渐渐写到第四篇了,还真的要感谢这门课以及教授这门课程的老师,让我在这么短的时间内阅读了这么多软件工程相关书籍,从《人与神话》提到的沟通问题,《人件》里注重的以人为本,《大教堂与集市》提到的开源与黑客,感觉自己对软件工程这门学科有了更深的认识,有了更广阔的了解,也培养起了我喜欢阅读的兴趣,会主动自己寻找相关书籍进行阅读,并养成了一边阅读一边记笔记的好习惯。

这次的书籍是《程序员修炼之道》,作为预备程序员,读读还是很有必要的,昨天是“1024程序员”节,感觉作为程序员还有节日挺有意思的,可能这就是一种职业自豪感吧。这本书是从编程出发,穿过专业化和技术问题,按照核心问题,即需求,来展开编程相关的思考。

这里面针对程序员,反复提到一个形容词,就是“注重实效”。根据书中所讲,结合我的理解,我认为注重时效这个词主要体现在责任上,对自己负责,对自己的代码负责,对自己的代码中的错误负责。“最大的弱点就是害怕暴露弱点”,我非常认同这句话,要坦然面对自己的错误其实并不是一件容易的事情,不仅要面对,还应该应对,比如提前预估风险,提前制定应急计划,提供各种选择而不是借口。

第一章还提到一个我最近思考比较多的概念,就是“知识资产”。知识资产包括很多,不仅是专业技术,更有用的我觉得是经验。知识资产是需要经营的,途径也有很多,无论是保持学习、参加活动、跟上潮流……总之,不要就此止步,要抓住学习的机会,利用碎片化的空闲时间,说不定哪天所学就起到作用了呢。但也不能像我最近一样,虽然渴求知识,却因为要学的知识太多而感到有些许焦虑,感觉时间不够用。我想,只能慢慢来,认真规划,一个接一个的去执行,学到就是赚到。

书中中间几个章节提到了编程相关的技术经验方法,但由于我个人不是很喜欢写代码,所以看的也不是那么感兴趣,有几点我觉得对我来说是可以学习并找机会实践的。一是注重shell环境。因为平时都是GUI界面,“所见即所得”同时可以理解为“所见即全部所得”,shell环境可以通过构建命令序列,让很多事情自动化,可以大大提高生产率。而我很少使用shell命令,所以不太熟悉它的好处,接下来的时间想认真学习一下这部分,感受一下它的高效。二是写代码要偏执。这里的偏执其实是一个褒义词,针对自己的错误进行防卫性编码,减少出错的机率并制定应急方案。要批判的思考所有的代码,让代码变得有价值。三是黑板概念。它解除了对象之间的耦合,提供一个类似论坛的平台,让知识的生产者和消费者可以匿名、异步的交换数据。我觉得这有点像精益软件工程里的kanban,虽然不是一个东西,但其实都是将一个过程可视化,让更多人参与去交换信息,提高生产效率和质量。

在书后面一个章节提到了需求。在软件产品规划课程上,老师也讲到了需求相关的内容,更偏向用户体验方面,但其实思考思路是大同小异的。需求很少浮于表面,要去深挖,要在用户的角度去考虑需求,与用户一同工作,像用户一样思考。用户的需求要形成一个完整的故事,谁在做什么事情的时候遇到了什么问题,他是怎么解决这个问题的,而我们又能提供什么更好的解决方案。这是个典型的用户故事模板,思考清楚这个其实需求就有一个模糊的概念了。这个时候拥有形式化的模板也很重要,这样可以确保包括了用例中所需的所有信息,减少考虑或记录的遗漏点。

注重实效不仅存在于程序员层面,也存在于团队层面。质量是一个团队问题,团队整体都不应该容忍破窗户,大家都应该认识到质量对于软件开发的重要性。而且团队的每个成员都应该时刻主动去监视环境的变化,如果大家都安心的认为团队中总会有人在处理或关注着某个问题而不去亲自在意,这样就容易导致问题的遗忘,最后就如同温水煮青蛙,问题总有一天会突然爆发。

以上就是我看完这本书后感触最深的部分,其他内容其实也产生过同理心,但是由于篇幅原因就不再赘述,总之,这本书对我启发最大的一点就是,要做一个注重实效的程序员,就是这样。

继续阅读