记录曾写给项目组小同事的一封邮件

****系统的开发让咱们项目组有了近距离接触客户、其他软件供应商的机会,这是一把双刃剑,但我觉得好处多于坏处。在与客户反复的沟通过程中,我发现我们的思路有一些问题,实际上给我们自己的发展造成了障碍。

我们总是在想让客户确定,让业务部门明确需求,我们反复在此之上费了很多的心思脑力,同时又倍感琐碎和被动,对业务人员也有很多抱怨,但又解决不了问题。做为一名软件设计开发人员,我们更应该从接受这样的现实:

“只有变化是不变的。”

其实软件设计的很大一部分乐趣就在于以不变应万变,我们要比业务部门考虑得更加全面,考虑到用户可能的各种需求,让软件充满灵活性、可维护性与可扩展性,接口多样化,支持多种配置,架构上形成组件,可任意组合。达到的效果是:以最少的开发量应对业务部门频繁的变化(可维护性),以最少的局部改动应对功能的增强(可扩展性),甚至在部署等各个环节用心,使我们自己的劳动量减到最少,从而达到游刃有余,轻松应对。此外,建立在良好设计代码的基础上,我们将更有自信的与客户、业务沟通。

我想这也是我们提倡软件架构和设计的一个重要原因,如果完全依赖业务部门的需求,设计即需求,没有变化,不考虑未来,那样会让自己陷于被动和不利。

这些都不是虚无缥缈的,给大家举几个例子:

  1. 部署的灵活性:在客户端开发的时候,我们用到了自动升级技术:clickonce,服务器部署最新版本,测试人员在客户端登录时能够联机自动发现版本,选择更新,这样,我们减少了很多的人工版本本管理与分配的工作量。
  2. 架构的灵活性:……..
  3. 具体设计的灵活性:**项目最初设计接口的时候,我想要为:……..

所以,说到另外一个问题:“客户永远是懒惰的。但对开发人员来说,越是简单的接口呈现,背后的设计复杂性越高。”…….

——宜未雨而绸缪,今天絮叨了这么多,希望大家能够摆好一个心态,能够适应变化的心态,要提高设计和代码能力,多学习面向对象OO, AOP的设计思想和方法,琢磨一下各类设计模式。夯实基础,才能不惧怕变化。对于**系统的设计开发我们要站在平台的角度考虑,不能局限于当前的两个项目。

这些也是我上上周,参加一个考试以后的感想,我们做这份职业的核心价值在哪儿:是强大的架构、设计能力。如果以后想做项目管理,而不是架构设计人员、系统分析师,那他的核心价值除了管理之外,还要懂得软件工程的规律,人月不可替换的道理。

发表回复