技巧要高于技术,这是我在软件开发和设计方面的一种观点,在我的个人介绍页面里我也讲了这点,现在我就继续围绕这个观点谈一下。
前不久在项目中需要开发投币器接口,交给A员工去做了,在我的一些帮助下他总算是把功能大概实现了,虽然最终效果并不是我想要的。然后我就开始给他做一些设计上的改进,首先我说了,要你设计这个接口的目的就是为了让其它业务层在不用很了解你(投币器)的原理的情况下就能轻松方便调用,这个就要求你把属于你分内的职责在内部解决,也就是我们在设计上说的封装。具体要封装到什么地步呢,那你就站在调用者的角度思考,如果我需要投币器接口,我都想要哪些功能以及如何调用或者获取这些数据呢?首先我需要实时监控设备状态,然后我还能控制它进行一些操作,比如开启关闭确认收款等。还有为了满足“懒人”的设计思想,我还希望这个接口能自己收到钱后通知我,而不是我主动向它要。于是这个接口最终设计成了这个样子:内部操作完全封装起来,开放了几个方法,如:开启、关闭、确认收款、取消收款等,又开放了几个事件:状态改变、准备就绪、收到钱币、钱币入箱等。这样一来,接口内外职责就划分的很清楚,而这些并不需要多高的技术,也就是说这些都是基础要求,再加上设计上的技巧来实现的。
在项目实施过程中,经常会碰到客户需要改业务需求。而我们作为开发人员最不想看到的就是我们刚开发完的模块又要重新开发,这就要求我们在设计业务时要掌握技巧来避免后期改动太大,或者在客户提出新需求时,能巧妙地使用现有模块和资源,在对原系统最小影响下提出新的开发方案。在日常工作中这些都太常见了,比如如何实现可以随意更改软件界面风格,如何实现自动更新,如何实现自定义安排按钮次序……相信跟我相处的人都比较清楚这个,我“最擅长”做的一件事就是否定别人的方案并提出更为友好、对原系统影响较小、开发代价较小的方案。由于项目安全原因,这里我就不再举例介绍。
不要一味地去追求新技术,尤其是微软开发框架下日新月异的新技术出现,一味去跟进不可避免地会让我们变得浮躁,我们要静下心来,先把之前学会的掌握的基础技术用好。企业需要的是稳定可靠的软件,而不是应用最新的技术。我们要做的是在掌握了基础和必要的技术之上,再多花些心思去思考如何在这些技术上巧妙实现我们的业务需求。
技巧要高于技术,就好比是我们拿到一个业务需求,考虑用什么实现以及如何实现,明显是后者更为重要以及要花费更大的精力与心思。一个好的软件需要花费大的心血,这些心血当然不可能是大部分用在寻找用什么技术实现上,而是用在如何巧妙地设计出来上。
时间有限,目前就谈到这里吧。毕竟又不是高考写论文,话说咱也好久木有写过论文了,现在都是有一点写一点,慢慢积累吧。
PS,最近发现谷歌都是秒收咱的文章,虽说要国庆了,互联网上的一些外来玩意儿要严加看管了,于是咱搜索的时候就经常被404,在这种环境下谷歌依然对俺是不放弃不抛弃,着实让我感动。
一条评论
基础很重要,任何新的技术大都建立在基础之上。文中提到的接口封装,感觉你的team中提到的这位还是基础的问题。可以适当向team中的成员传导一些开发的原则,开放封闭原则等。