管理为软件开发准备了人以及做事的平台,在此基础之上才能启动真正的软件开发。
在其他环节之中,与管理最为贴近的是流程。从一定程度上讲,流程甚至可以算做是管理的一种手段,在“逻辑链8:组织行为”中,我们曾提到了。
为使经验转化为价值,适用于多个项目的,特定的因果关系和时序需要被提取出来并强制实行,最终形成的就是流程。所以完美的管理方法需要完美的流程作为支撑。
对管理影响最大的是估算。有了估算的结果,才能有资源分配这类事情的发生。所以完美的管理方法事实上是需要完美的估算作为输入。如果实际需要100人月,估算结果却只有50人月,并按照50人月分配了人力,那管理难度必然倍增。
如果把管理抽象为一个处理器,那么这个处理器最关键的输入是人员特征和项目特征,这两点对把握管理中各个环节的尺度至关重要。
比如说,对于软件自身比较简单,但规模比较大的软件,和难度比较高,但规模比较小的软件,其管理方法可能会不同。虽然遵循相同的逻辑链,但在尺度上将有所差别。
从输出来看,管理的主要输出是人的状态,次要输出是各种计划。
如果团队中有下面这样的现象,那基本上是因为管理没做好。
●团队整体处在得过且过的状态,没人会去主动思考,哪里可以做点改进,但抱怨却很多。
●出事后互相推诿。
●随便做什么事都纷争不断,形不成统一认识。(www.xing528.com)
●一旦开始做事,大家各行其是,临时起意的情况非常多。
●总是犯些显而易见的错误。比如,事到临头才发现需要的软件没买。
●日程表和实际情况严重不符,完全无法执行。比如,某一个人会被分配并行完成多个任务,但每个任务都要求每天投入8小时。
●多次犯同样的错误。
●流程上定义好的事,一执行就变样。
●……
Outsourcing的影响
Outsourcing即是常说的外包。外包与其说是一种分工的手段,倒不如说是一种纯粹的商业行为。从商业的视角考察外包,是一个非常复杂的话题,很难详细展开。但从工程角度看,外包事实上增加了管理的难度。这种难度主要来源于两个方面,一是权利和责任的分化导致很难遏制代码质量下滑;二是地域分散所带来的各种内耗。
对于一份代码,其非功能性质量(如可维护性等)事实上是一个有机体,需要持续维护。然而这一部分质量并不能很好地量化(逻辑链6),也就不能很好地对应于人件费用,这会导致启用外包时出现有心的人无力,有力的人无心这样一种局面:例如,发包的人有心,期望收获非功能性质量,但没力量去做,而接包的人有力量去做,却没理由这样做。这必然会导致代码内在质量的下滑,但这是权利和责任分化的一种必然结果,暂时还看不到解决方法。
与此同时,团队成员地域分散必然会导致沟通效率下降。利用COCOMOII考查的结果是这会对工作效率产生56%的影响。也就是说,在同一地点工作的团队,其工作效率可能比分散在很多地域的团队高56%。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。