文章出处:http://www.blogjava.net/BlueDavy/archive/2006/01/01/26282.html
昨晚看切尔西的比赛的时候突然联想到了软件开发,呵呵,来看足球赛:
1、根据比赛双方的实力、主客场、天气等等各方面因素来比赛双方都会制定自己的目标,战平、胜或别的目标。
2、需要在有限的时间内(90分钟)达成目标。
3、多种角色构成。(守门员、后卫、中场、前锋)
4、一定的阵型(4-3-3、4-4-2)和战术(防守反击、短传渗透、长传冲吊)。
5、多变的形式以及多种不定因素(裁判、球员状态等)。
球赛的整个过程需要由整个队共同努力去完成,而教练负责对于全局的把握、战术的调整等。
软件开发和足球赛有很多类似的情况,也是在一定的时间内由多人协作共同去完成目标,在完成目标的过程中会碰到多种不定的因素和多变的需求,通过架构来制定开发过程的阵型,通过引入模式来作为实现目标的战术。
软件开发和足球赛一样,人是其中至关重要的因素,一样的阵型、战术在不同的球队中就会产生完全不同的效果,你不能去要求甲级联赛的球员拥有和超级联赛的球员同样的水平,也不能去要求一个球员永远保持良好的竞技状态,同时,阵型、战术直接影响到个体,也许个体的实力很强,但在一个不适合的阵型和战术中是无法发挥的。
从架构层次去看,球赛依靠4-3-3、4-4-2这样的阵型构成其架构,在实现目标的过程中需要保持阵型,在进展的过程根据实际情况进行调整,但不会频繁变化,教练就象一个优秀的架构师,会根据情况来决定出最佳的架构。
从实现角度去看,在球赛进展的过程中球员会采用多种协作模式,撞墙式配合、下底传中等,同时个体也会采用多种模式,穿档过人、人球分过、变向、踩单车等,好的球员能够纯熟的应用模式到合适的环境中去。
从团队管理角度去看,球赛需要多种角色的球员的共同合作,球员的合作是影响目标达成的重要因素。
从个体角度去看,个体的能力、状态以及对于架构的理解将会影响架构的实现和目标的达成。
某种程度上来讲,足球比软件开发更具难度,极为有限的时间,更多角色的合作,更多不定的因素。