到了新公司有两周了。一直在熟悉我们的业务和系统。我们公司是为美国做外包的,但其实是给印度人打下手。项目涉及我们的部分几乎全部的是UI部分的建设。技术上使用了JSF和ADF。对此我也没有什么怨言,毕竟工作并不等同于技术研究,不可能仅仅做你自己熟悉的,或者让你舒服的东西。
大概前天,我们项目组的人在我们组长的带领下开了一个总结会议,讨论了我们上一个阶段工作的成果以及问题。问题主要涉及两个方面:其一,代码复用;其二,客户变化剧烈。这些都是老生常谈的永久性问题。没有什么新意,自从我2002年工作以来,一直都有这两种声音回荡在我的耳边。我已经习惯了。这两个问题总是存在,而且总也无法解决,我们能做的大概也就是抱怨发泄一下而已。
当一个项目开始启动的时候,往往一切都很良好。良好的代码规范,良好的文档,对于复杂性的良好控制。比较好的抽象性设计(提高复用)。以及一些良好的措施用来应对未来可能的问题。但随着时间的延长,一切都会变质。我突然觉得时间似乎是程序员的唯一的难缠的对手。
当然,随着时间的延续,其实复杂性是很难控制的。因为复杂性会随着时间增长,虽然我没有研究过他们两者之间的具体关系,但是显然这个增长是注定的。技术的好坏不是决定性因素。我想原因可能在于这种合作性的工作方式本身所具备的缺陷。毕竟一个团队不可能团结的如同一个人一样的工作。沟通以及认识上的差别和误解导致问题的产生,一开始很小,后来越来越严重,最后无法收拾。
如何控制复杂性,每个项目的经理和团队的领导都需要考虑。