很多开发人员都热衷于争论语言之间的孰优孰劣,但这对于一个专业人员来说很重要吗,语言其实就是一种工具而已,重要的是代码,方法,过程,工程与组织之间的关系。“程序=算法+结构”,这是程序的本源定义,也是原始的状态。与代码相关的任何工作,最终仍旧会落足于这样的一条规则。
推动程序逻辑向前发展的是“方法”和“方法论”的出现。长期的编程实践,自然的归演与总结,必须沉淀为某种方法,于是“过程”出现了,于是“对象”出现了,于是相关的方法论出现了。方法不是某个人创建的,而是经过长时间的实践而总结出来的。我们总觉得那些提出方法和模型的人很了不起,其实如果我们耐心的去总结何尝得不出方法和模型。
过程伴生工程出现。过程解决的实施工程角色间的关系问题。很多人如何组织在一起进行开发的问题,他首先把工程中的环节分解出来,这样就有了环节,就有了角色,有了角色就有了沟通。角色的确定,以及角色间的沟通问题,在项目中是非常重要的。工程组织的安排,工作的协调是至关重要的。而“合作无间”是书面上的说词,而真正的沟通的结果是“无间”。
最狭义的工程是描述“是什么”和“做什么”。也就是说,是对目标的描述和成果的检验,而目标的实现,是“过程”和“方法”的事,而“工具”就是最有效,最快速实现“过程”和“方法”需要的。对工程而言,就是一个复杂而庞大的项目,其中需要很高要求的人力和技术,期间团队合作也是必不可缺的。
工程理论是包含组织学的。如果工程关心的是“需求”,“配置”和“文档”等这样一些元素,那么这样的工程只能停留在技术层面,关注的还是工程实现细节,而不是目标。这些是项目接力和技术经理所需要关注的。然而除此之外项目经理和技术经理还需关注人力资源,项目资金以及多个项目之间的协调等。但这些与项目本生并没有直接关系,却与“组织”有关。所以在工程环节中“文档管理”和“配置管理”的词中的管理,是管理的具体技术和方法,而“组织”中管理是管理学上的词。
真正的BOSS是经营者,他决定了一个方向,组织者保证决策与这个方向是同步的,而工程是在这样一个方向,决策的构架下的一个具体行为。所以工程中没有BOSS。
从最简单的编程开始,到现在工程团队的组织开发,实现都是最终目的。所以实现,是软件开发的本质需求。在软件工程系统中,“实现”就如同上帝之手在推动这几十年来的软件工程理论体系的形成。