在庞大的工程面前,“语言”究竟扮演着什么样的角色?答案是,语言只是工具。从代码、方法、过程、工程到组织,
对于一个程序员或者以程序员自命的人来说,看清楚这一切的第一步,就是认识到:语言只是工具。
我们从程序说起,程序=算法+结构,这是编程的精义,在所有开发行为之前,它就已经存在,就像愚公在数千年前
就已经用类同的行为在做编程实践。只是有了逻辑之后,我们拿什么来实践行为?没错,推动这种逻辑向前发展的,是
方法以及方法论的出现。长期的实践,不断地积累,必然会沉淀为某种方法。之后,会出现“过程”、“对象”,最后是相
关的方法论。这是时间的必然发展结果,而不是由于某个人或者某个组织的关系,换句话说,就算是没有你,也会有别
人总结出这些方法。模式作为一种方法,就是你昨天书写代码的那个行为,意识到做事的行为,才能感受到模式作为一
种方法的价值,这就需要编程经验。而经验来源于回顾、理解和分析,这在理解过程中也是需要的。
伴随着工程,过程出现了,解决的是工程中角色之间的关系问题。团队在一起进行开发,分化出每一个环节,就有了
角色,有了沟通,哪些环节重要则取决于具体的编程行为,也就是具体的项目。谈到项目,就会说起项目经理,分不清
玩家和客户的项目经理是可怕的,意味着他不懂哪个环节更加重要。那么在角色中,沟通最重要,工程组织是否合适,
相互的协作是否紧密是这个项目成功的保障。
再来说说工程,最狭义的说法工程是对目标的描述和成果的检测。在这之中,目标的实现靠的是“过程”和“方法”,而
要想快速的实现其所需,取决于“工具”,即语言。
过程伴随工程而出现,那么工程是怎样出现的呢?几年前开发一个小工具可以不讲工程,但是随着软件规模的不断增
大,会要求不同的知识领域的角色参与,要求更多的人力、技术与管理资源。所以,“团队”作为开发行为的模式,是软件
规模和复杂度渐次累积的结果。而那些没有团队意识的软件公司,在此面前将无法继续生存。
工程需要组织,这是项目经理所要担任的职责,所以说作为项目经理,可能说绝大部分的工作都是非技术性的。为项
目的各个阶段建立计划并细化;确立阶段目标以及评核办法;对角色展开培训,为每一个人准备其所需要的资源;组织交
流,让每一个成员意识到项目所存在的风险。需要注意的是,我们平时所说的BOSS并不是组织者而是经营者。
总的来说,从最初一个小小的编程到如今团队工程的组织开发,我们的目的都是为了实现一个目的,这是软件开发的
本质需求,所以,过程、单元、记录、对象的出现,都是出自于实现的需要。