杂谈:人与软件

作者在 2007-10-22 19:09:00 发布以下内容
  长期以来,程序员被看作是沉默寡言的典型。他们能够长时间独自坐下来,不跟别人讨论,面对纸张及电脑屏幕来工作的人。现在,这种现象早已经不尽然了,新的尤其是敏捷方法论更强调的是人们之间的有效沟通,而最有效的沟通便是面对面的交流,这也是结对编程取得巨大成功之所在。正如水晶方法论创始人Alistair Cockburn对软件开发活动的总结:“软件开发是一场资源有限的创建与交流的协作性游戏。游戏的主要目标是交付有用的可工作的软件,次要目标,是为下一场游戏做准备,既知识的累积。下一场游戏可以是改变或者替代当前的系统,或是创建另一个相关的系统。”

   一个软件开发团队的成功依赖于合作、交流及协调,而这些因素却都以人为核心,恰恰是人这个大的因素左右了项目的成败,而不是所选择的任何过程与技术,而这个因素却常常被人们所忽视。当技术与人们的认识和文化价值观相抵触时,技术就不会再产生效力。一个拥有充足人员且具有良好机能的团队往往能更好地完成项目,而不在乎让他们使用什么样的过程及技术。

   然而,人的能力却是不可预测的,他们善于寻找、学习并有主动性,特别是善于进行非正式面对面交流,但同时,人们也具有会犯错误、墨守成规、只想创新、积习难改与变化无常等缺点。正因为人是变化无常的,我们不能指望人会成为可预料的或每个人都会变成一个样子。正如你不能希望给一个人双倍的酬劳,制定双倍的惩罚制度,并付出双倍工作时间,就希望能够得到双倍的成果输出一样。这是因为,人不是机器,而是复杂的情感生物,输出的成果最终取决于当时的思考质量、思考速度、主动性、身体状况、情绪等诸多因素。但是,人的内在潜力却是非常巨大的,只要用纪律和宽容来应付人们的共同弱点,便可以去其短,扬其长,来激发人们的内在潜力。当人们有了工作自豪感和公民感,再加上善于寻找和主动性后,我们会发现人们每天都会积极地完成工作,这将使项目长期处于最佳状态。在这方面,XP(极限编程)采用丰富的、短的、非正式交流途径,同时强调技能、纪律、个人理解水平,将中间件需求降到最低的方法,来获得尽可能高的质量和生产力。

   变化总是在发生

   他们总是不断地拿走你的奶酪。

   预见变化

   随时做好奶酪被拿走的准备。

   追踪变化

   经常闻一闻你的奶酪,以便知道它产什么时候开始变质。

   尽快适应变化

   越早放弃旧的奶酪,你就会越早享用新的奶酪。

   改变

   随着奶酪的变化而变化

   享受变化

   尝试冒险,去享受新奶酪的美味!

   做好迅速变化的准备,不断地去享受变化

   记住:他们仍会不断的拿走你的奶酪,如果你不改变,你就会被淘汰。

   -- 引自<谁动了我的奶酪>

   面对市场经营的特殊挑战,只有那些具有高度灵活机制的企业才能立于不败之地。不能适应变化,变化就会把你变得面目全非。再完美的计划也时常遭遇不测。软件中的所有东西都在变化。需求在变、设计在变、业务在变、技术在变、团队在变、团队成员在变。问题不在于变化,因为变化总在发生,问题在于在发生变化时没有能力应付。只有变化是不变的,时刻准备着这样调整一点,那样调整一点。通过许多小的调整,而不是几次大的调整来控制软件的开发,也就是说我们需要利用及时反馈来知道我们何时出现了错误,我们需要很多机会来纠正这些错误,而且,我们必须能够以比较合理的成本完成这样的纠正,即使你不得不朝完全不同的方向前进,这就是作为一名程序员的生活。敏捷就是快速、轻松和灵活,迅速行动的能力,以最少的开销完成工作的能力,适应不断变化条件的能力。

   这就像XP方法论创始人Kent Beck对XP所做的比喻:“XP团队应该是智慧的游牧人,随时准备迅速收起帐篷,跟随牧群到处流浪。这里的牧群可能是与预期不同方向的设计、与预期不同方向的客户、离开团队的成员、突然升温的技术或者是不断变换的商业环境。”敏捷软件开发的根本是相信在我们混乱的业务环境中有不可预测性,相信人们或团队在面对这种不可预测性时,有能成功交付软件能力的可预测性,而这些,这是由于开发人员之间的有效沟通、与客户和管理者之间的有效沟通,才使得这种被称为富于创造与交流的协作性软件开发游戏取得成功。

   再富裕的国家,也会因为浪费人才而变得贫穷。与之类似,企业生存的最大课题就是培养人才,有了好员工,不愁没有好顾客。企业的发达,乃人才的发达;人才的繁荣,既事业的繁荣。把人放在第一位,其他事情就会少发愁。

   -- 引自<管理智典>

   <资本论>指出:一切剩余价值皆是由人创造的,而不是其它任何机器。在软件开发中的任何分析和设计工具不管有多先进,都不可能自动产生设计及代码,而真正产生设计及代码的,恰恰是操作它们的人,过分信赖过程与工具以及低估人的智力和经验都是一切灾难的源泉。

   与此同时,<设计模式>一书也指出:在软件开发和
文章评论,共0条
游客请输入验证码
浏览477434次