问题标签 [extreme-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - YAGNI - 不能命名的敏捷实践?
随着我越来越多地将敏捷思维吸收到我的工作方式中,yagni(“你不会需要它”)似乎变得越来越重要。在我看来,这似乎是过滤掉被误导的优先事项并决定下一步不做什么的最有效规则之一。
然而,yagni 似乎是一个在 SO 中几乎没有被提及的概念。我进行了强制性搜索,它只出现在一个问题标题中——然后是次要角色。
为什么是这样?我是否高估了它的重要性?
免责声明。为了抢占响应,我相信我会反对,让我强调一下 yagni 是quick-and-dirty 的对立面。它鼓励您将宝贵的时间和精力集中在获得您确实需要的零件上。
以下是人们可能会提出的一些热门问题。
我的单元测试是根据用户要求还是框架结构选择的?
我是否安装(并测试和维护)单元测试,因为它们脱离了框架?
有多少由我的框架生成的代码我从未看过(但总有一天可能会咬我,即使是 yagni)?
我花了多少时间在我的工具上而不是用户的问题上?
结对编程时,观察者的角色价值往往在于“yagni”。
你使用 CRUD 工具吗?它是否允许(不,鼓励)您将其用作 _RU_ 工具或 C__D 工具,或者当您只需要一两个代码时,您是否正在创建四段代码(加上四个单元测试)?
estimation - FogBugz 估计和结对编程
我使用 FogBugz 作为工具,让我们“展望未来”。该程序需要我们的工作时间,发布任务,分配开发人员对该任务的估计,以及开发人员倾向于低估/高估的倾向,并试图提出在未来的一系列日期发布发布的概率.
现在,由于 FogBugz 考虑到了工作时间,它假设开发人员会将时间投入到分配给他们的任务中,这在 XP 中是不正确的,因为他们之前的决定是完成开发人员的一项任务一起。
这是否意味着我在进行结对编程时不能使用 FogBugz 进行估算?
estimation - 结对编程时如何估计
阅读XP 书,我心中有一个我无法解决的矛盾,想知道你们是否可以提供帮助。
XP 说在索引卡上写故事,分配给开发人员,让她估计任务需要多长时间,然后使用结对编程来完成编码。
因此,她和她配对的开发人员必须选择执行他或她的任务。根据该选择,他们执行的工作将计入她为该任务所做的估计。这个估计是否仍然有效,因为它似乎取决于她与谁一起工作?
agile - 结对编程时如何应对缓慢的反馈?
我在一个极限编程团队工作,每天结对编程。最近,我越来越经常做一些反馈缓慢的事情,大约 3 分钟。例如:改变一些东西,重新编译,运行,看看性能是否有所提高。我认为它削弱了结对编程的质量,而且我认为它对结对编程的影响比对单独程序员的影响更大。如果我一个人,我可以做其他事情,但是如果我是结对编程呢?你会怎么处理?
extreme-programming - 工作面试的结对编程
我们公司一直在考虑取消我们的面试程序,让每个候选人与一些程序员坐下来 4-5 小时,然后做一些结对编程。
我在理论上喜欢这个想法,但我不确定如何才能真正让每个候选人都公平。你如何评价他们?他们的输入真的不取决于每个程序员那天的工作吗?
关于这是一个好主意/坏主意或如何使其发挥作用的任何想法都是我在这里寻找的。
干杯!
编辑:
结果 - 按要求
我们将像以前一样进行面试的第一步。电话后是面对面。我们不会让他们回来进行第三次也是最后一次烧烤,而是让 3 名开发人员回来与团队的所有 7 名成员坐在一起。我们决定让团队决定随后雇用谁。
我们得出这个结论有几个原因。我们相信这将赋予开发人员权力,让他们可以选择他们的工作对象。第二个原因是群体动态。我们认为拥有良好的团队动态非常重要,而且在您雇用一个人之前很难判断他们是否适合。
所以最终的结果是我们将继续进行结对编程课程,但以完全不同的方式和完全不同于最初预期的方式。
任何对这种方法的想法或批评都非常受欢迎!!(此编辑在下面发布为答案,因此如果您认为这不是最佳方法,请随时投反对票)
agile - 共享代码和界面有哪些社交和技术解决方案?
背景:
我是一家中型网络托管公司的产品经理,除了网络托管之外,我们还提供各种补充服务。
今天,我们公司有大约 3-6 个开发团队,每个团队致力于不同方面的网络托管(即 DNS 注册、共享托管、云计算、专用服务器、转售等)。
我们已经非常有机地成长,因此用户界面极大地反映了我们公司的组织,而不是我们的客户会觉得直观的内容组织。
除了这个问题,许多后端系统属于每个团队的领域,但也需要被其他团队使用。例如,共享主机团队需要在其面板上使用 DNS 注册服务。另一个例子,一键式网络应用程序安装程序等网络托管功能是由共享托管团队开发的,但我们也希望将它们提供给专门的托管客户。
仅供参考,我们有一个非常注重敏捷方法和极限编程 (XP) 的编程环境。
问题:
对于那些拥有与我类似的公司工作/编程环境的人,您有什么解决方案/建议可以使这种安排发挥作用,以便我们可以改善用户体验以及代码的协调和共享,同时也让团队保持独立?
即这里有人用过Scrum of Scrums。如果是这样,您对实施它有什么建议?
Scrum of scrums 的任何替代解决方案?
time - 如何在极限编程中管理时间?
我正在监视一场比赛,其中每个冲刺都安排为一小时间隔。每个团队成员都应该在屏幕上有一个倒计时时钟,最好是在终端上。时钟应在 45 分钟、55 分钟和 60 分钟后发出警报。
环境应该创造一种极端编程的感觉。是否有一些现成的终端应用程序可以完成这项工作?
[澄清]团队使用的是 Ubuntu 和 Mac。
visual-studio-2008 - 有没有更好的方法来查看 TFS 中的工作项/与之交互?
我正处于构建应用程序的需求/设计阶段。我们正在使用 VS 2008 和 TFS。我有一堆场景和相关任务。部分需求发生了变化,我想去看看哪些任务需要更改/删除。
使用任何现有的工作项视图都很难查看系统的概述——无论是在 VS 中的网格还是在 Excel 中查看它们。
有没有一种工具可以在分层视图中显示我的工作项?或者,我会采取一些将我的工作项导出到 Visio 的东西,这样我就可以以虚拟的“白板上的索引卡”方式与它们进行交互。
extreme-programming - 结对编程是否意味着您不需要设计文档?
在结对编程中,团队中每个成员的经验都可以传播给新成员。这种体验总是与代码同步,因为这对“高级”知道代码是如何工作的以及设计是什么。
那么在这种情况下,设计文档的用途是什么?
更新
我不是暗示没有设计,我暗示没有文档。对于一个练习结对编程的团队,我认为每个人都是一次性的,因为每个人都知道代码。如果资深开发者离开,我想总有至少一个人懂代码,因为之前分享过经验。
tdd - 测试驱动开发和结对编程
我在一个团队中,我试图说服我的队友采用 TDD(正如我在以前的团队中看到的那样,并且设置相似)。另外,我个人的看法是,至少在开始时,如果同时完成 TDD 和结对编程,它确实很有帮助。这样,两个没有经验的(在 TDD 中)开发人员可以互相帮助,讨论编写什么样的测试并取得良好的进展。
另一方面,我的经理认为,如果我们同时在团队中引入两种新的开发实践,很有可能两者都会失败。所以,他想保守一点,介绍任何一个。
我如何说服他这两者是互补的而不是正交的。还是我错了?