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


前段时间看完了《程序员修炼之道–从小工到专家》这书。该书没有涉及什么很深奥的技术,或者有特别复杂的设计,都是一些来自经验的总结。它涉及的内容比较广,涵盖了整个软件开发过程中需要注意的地方,从需求分析,到程序编写测试重构,再到项目管理都涉及。它提倡程序员应该拥有良好的素质,必须有正确的观念,良好的习惯。

注重实效的哲学-让你的用户参与与权衡

作为一个优秀的程序员,编写出完美的产品是我们一生的追求。但是实际情况中,需要考虑很多不特定因素,如时间、技术、成本等,导致我们没有办法一步到位。而且用户在向你提需求的时候,很多时候他们只有一个方向,也不清楚具体的细节,不知道自己真正所需要的产品的最终形态。如果你先给用户一个不完美,存在瑕疵,但是可用的软件,让他们及早使用,他们会向你反馈他们真正的需求,能把你引向更好的最终解决方案。今天了不起的软件比明天的完美软件更加可取。
我现在所做的项目就很好的印章了这一点。这是一个线下售卖收银系统,由于在项目搭建初期时间特别紧急,我们只能快速设计,快速编程,快速上线,然后不断的迭代,不断修复各种问题。虽然该项目上线后存在不少的问题,但是至少能够满足用户的核心业务,能够正常的售卖商品。而且在得到用户的反馈后,产品在不断的完善,到目前为止产品已经基于稳定,已经无限接近用户的真实需求了。以现在的角度来看,这也是一个成功的项目。

注重实效的途径-可撤销性

书中举了个切换关系数据库供应商的例子。大概意思就是如果讲数据库的概念抽象出来(抽象到数据库知识把持久作为服务提供出来的程度),你就会拥有“中流换马”的灵活性,抽象能让你的程序更加健壮。
但我想说的是,如果程序都是单一的解决方案,没有可以替代的方案,那有时候对你的程序将是一个毁灭性的隐患。例如你的收银系统只有建行一个供应商,正常情况下系统跑着不会出现什么问题,但是但凡建行端出现任何问题就会导致你的收银系统瘫痪,无法完成在线支付,这对业务来说绝对是一个毁灭性的消息。而且你还无能为力,只能依赖你的供应商进行解决。所以这就要求我们在程序设计必须考虑可替代性、灵活性。
在这里插入图片描述
上图将支付相关的所有操作都封装到一个类里面,这样不但可读性极差,而且不易扩展。如果我们仔细考虑下,其实支付、支付查询、退款、退款查询等的模式都是一致的,我们完全可以奖每个特定的动作抽象出来。改造后如下:
在这里插入图片描述

基本工具

工欲善其事,必先利其器,这个道理中国人都懂。作为一个优秀的开发人员除了必须熟悉基本的开发工具完,还应该熟悉了解自己所在公司的工具。毕竟公司开发出来的工具就是为了解决员工在实际工作中遇到的一些问题,能帮助员工快速的完成开发、快速定位生产问题等。作者就因为对公司的工具不是特别的了解导致很多工作都很难往下开展,甚至还导致了bug的出现(痛苦的领悟)。

小结

当然除了以上内容,该书还有很多内容和细节值得我们细细的去品味,如正交性、按合约设计、需求之坑、无处不在的自动化等等。读完这本书给我最大的感触是,优秀的程序员必须注重实效,培养良好的素质,将正确的观念当成习惯。以用户需求为基准,设计可配置的软件,但不能过分设计。支持拔插式的软件设计,能让你的程序更加灵活,更容易应对各种不确定因素。

作者:张伟峰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章