当您决定使用哪种方法或流程进行项目时,您是否应该考虑人为因素?如果对事物有任何抵抗,你是顺其自然还是强迫人们改变?
例如,假设您想推动结对编程,但团队成员拒绝以该模式工作(或表示不喜欢),您会做什么?让他们习惯它,试着说服他们去做或顺其自然,让他们做他们喜欢的事情?
答案 0 :(得分:7)
人为因素是最重要的因素。
如果您不考虑其他因素,请考虑该群体的文化和倾向。
希望进程失败的人会成功。改变过程要比改变人们容易得多。
答案 1 :(得分:2)
首先尝试推理,你可能错了:
如果你对某些事情有抵抗力,你通常可以给出你认为好的原因,并听取他们为什么认为这是坏事的观点,并找到一些共同点。
你永远不应该强迫人们违背他们的意愿做某事,而是试图根据你的逻辑推理说服他们。很多时候,你会看到他们的理由改变了你的观点。
如果您的开发人员太害怕表达自己的意见,那么您应该让他们放心地表达自己的意见。如果他们仍然不情愿,那么你应该考虑新的开发人员。
脚踏入门原则:
如果你想尝试一些你和他们都没有经验的新概念,比如结对编程,那么你可以让他们尝试1-2周,然后你可以在试用期后再坐在一起评估成效。我想大多数人会发现,如果他们没有经验,如果是为了找出方法的有效性,并且只是为了试用期,尝试一些新的东西是完全合理的。
如果在此试用期过后,您测试的内容成功,那么您的开发人员将更加开放。
请勿更改,找到合适的人
如果你100%做某种做事方式,并且你的开发者100%反对它,他不会尝试它并且没有合理的理由,而不是试图改变他你最好找到一个适合你做事方式的开发人员。
如果他们100%反对你想要改变的东西,你必须做出决定。开发人员本身对您来说更重要,或者您希望更改的流程更重要。
如果你强迫别人做他们不想做的事情,他们会找到一种方法让你的方法失败。
答案 2 :(得分:0)
是。您的开发过程需要人性化。也就是说,有越来越好的开发实践,你应该努力使用更好的实践。最好的方法理解人的优点和缺点,并采用促进前者的做法并对后者进行补偿。
例如,大多数敏捷流程都非常重视信任开发人员做正确的事情 - 努力工作和重视质量。它们允许开发人员对流程和产品有重要的意见。这充分利用了人类对期望的提升。另一方面,人类难以同时管理太多的复杂性,因此敏捷实践坚持将事情分解为可管理的块。
另一方面,我们知道人们不喜欢做不直接增加工作价值的事情。敏捷实践,认识到单元测试之类的价值,然而坚持这一点,并要求开发人员尽管最初不愿意遵守它。使用TDD可以通过为开发测试提供真正的价值来弥补这一点 - 您首先要做它们并让它们指导设计。这是一种胡萝卜加大棒的做法,让开发人员最初不愿意接受这种方法的价值并自己购买。
答案 3 :(得分:0)
调整流程
与您的员工建立良好流程的关键在于使流程适应您需要或想要的仪式数量。我们在工作中使用RUP,RUP的核心目标之一是根据您的项目和人员量身定制仪式。
例如,小型项目需要的仪式和工具支持要少得多。同样,对流程不熟悉的人需要时间来适应。最好不要让他们充满信息,让他们按照自己的节奏适应。
告诉我钱!
让人们购买新流程就是让他们犯错(或者以过去为例)然后向他们展示这个过程如何帮助防止这个错误。尝试并绘制一条直线,以显示该过程如何帮助他们改进工作方式。
例如:如果人们对自动化构建和自动运行测试有抵抗力,那么下次他们发布修复程序就会破坏已经运行的代码时使用这个机会来说明自动化测试会抓住它被释放之前的错误,节省了每个人的时间和金钱。
<强>自动化强>
为了确保人们能够适应流程,尽可能多地从他们那里消除人为干预。使用自动捕获的信息尽可能自动地构建,测试和报告。
这有助于支持流程是通过消除“唠叨”因素。许多人抵制新的过程,因为他们认为这意味着他们需要做更多的工作或者最终产生很少结果的额外工作。通过自动执行现有任务并从中收集数据,您可以获得很多好处,而不会增加任何单个开发人员的工作量。
一个典型的例子是持续集成。 CruiseControl,TeamCity或Hudson等持续集成工具可与版本控制存储库配合使用,以提取最新版本的源代码,构建该代码,执行和存档测试结果以及打包部署内容。这不需要开发人员的额外努力,但是你得到了许多额外的“过程”作为回报。您现在知道您的源代码有多好,您可以轻松地分发它,并且您可以更早地捕获错误。