我们要追求负责制度的建立,但是也不要泛化负责制度,换句话说,我们不要把负责当作手段,不要把惩罚当作目的。当惩罚发生时,无论是个人还是企业,都是输家。这一点很重要。在理想情况下,为了避免惩罚的发生,责任的承担都应该是个人自愿的,都应该是在个人衡量自己的业务能力和工作目标之后作出的决定。这就像古时候帐中大将请命出战一样,当他败归本队之后,一般都是高悬免战牌,用不着去单挑送死。
大连办公软件开发决策解决方案的数量,永远比问题的数量要多。在大连办公软件开发实践中,最大的困难往往不是在于寻找问题的解决方案,而是在于选择最佳的解决方案。选择就是决策,选择解决方案的过程,就是软件决策的过程。 在前一节中,我们讨论了软件开发中的负责制度。很明显,负责制度直接决定了软件决策的方式和效果。这也是我把负责制度放进软件实现这一章的原因。 负责制度,可以还原软件开发中的公平和真实,可以为企业补充富有创造精神的新鲜血液,却不会为软件的质量
带来直接的好处。不过,负责制度对软件决策有着深刻的影响,而正确有效的软件决策是保证软件质量的基础。软件决策包含了哪些具体的内容呢?我们来看一个例子。MFK项目开始了软件架构师根据项目的要求选择了软件的架构模式——J2EE架构和MVC模式;他选择WebLogic应用服务器和Oracle数据库;他选择用PLSQL来实现批处理业务;他选择使用Struts框架;他选择Hibernate作为OR Mapping的框架;他选择ACORD标准作为领域模型;他选择高聚合、低耦合的组件模型作为业务实现单元;他选择JBPM作为工作流平台;他选择使用多线程技术来上传文档;他选择使用Ajax技术来处理部分页面内容的刷新;他选择Web前端的实现要兼容主流的浏览器;他选择CAS来实现系统的单点登录;他选择Gufw作为Application Layer Firewall;他选择使用对象引用而不是ID作为参数;他选择简化业务层中的隐喻的做法。
每一次选择就是一次决策。看上去,大连办公软件开发决策活动几乎遍布在软件架构师的所有工作中。同样,在程序员的工作中,也有很多需要决策的问题。例如,选择冒泡算法来完成一次计算,选择观察者模式来订阅分发的消息。