一个人团队的软件生命周期方法[关闭]


15

我正在为我的硕士项目构建一个软件系统,并正在寻找适合“一个人的团队”的特定方法的建议。


1
很高兴您提出这个问题,我目前处于这种情况。我已经接手了两个人的团队,他们没有流程,没有灌输源代码控制,持续集成,测试驱动的开发等等。我自己想知道我将如何做才能提高效率,以及在最终被允许雇用我下面的人时如何做好最好的准备。
maple_shaft

Answers:


11

我以单人的“供出租的软件枪”为生,他主要在家里工作,所以我很想听听其他人对此有何评论。

我发现一些重要的事情:

  • 正如Denis所说,源代码管理至关重要-但是SVN并不是唯一的选择。我主要使用Perforce,而git是一个不错的选择。我喜欢“主线”开发模型;这样一来,我就可以在代码分支中进行实验,在工作时将其合并到主线中,如果不行则将其垃圾。
  • 我使用笔记本做笔记使用程序跟踪任务。目前,我为后者使用Redmine。在此之前,我使用了Fogbugz。我也喜欢Redmine,因为它具有一个非常好的内置Wiki,我可以将其用作持久注释和指向重要站点的链接。
  • 跟踪我的工作状况,并为自己设定一些合理的限制也很重要,这样我就可以完成工作而不会感到疲倦-见下文。

这些年来,我的其他技术也在不断发展,我根据项目和客户的需求对其进行调整。人们为我的工作代码付钱,而不是无所事事,因此我尝试使流程轻巧,避免客户烦恼。但是我发现一些敏捷技术对我来说非常有效:

  • 我目前的一位客户倾向于放弃我要实施的重要功能,并且在完成之前不会惹我。因此,我发现在Scrum冲刺中进行这些工作很棒。我的猜测是,这可能对硕士项目有用,除非您的研究顾问是控制狂。
  • 我当前的其他客户倾向于“停止处理并修复该错误”类型的紧急情况。我尝试通过Scrum做到这一点,并在一次冲刺后放弃了。因此,我使用看板来执行此操作,并且效果更好。

独自工作的另一个难题是,您没有人告诉您该做什么,何时做,或者您是否做得足够好,或者什么时候因为做得足够而辞职-所以您必须做为自己。我个人更喜欢Scrum,因为我可以跟踪自己相对于冲刺目标的表现。对于看板项目,我可以跟踪我投入了多少时间,但是我不喜欢它,更不喜欢基于目标的东西。

我的一些朋友发誓要让Pomodoro专注于任务并跟踪个人效率,我正在考虑尝试一下。

我也有一个正式的过程可以向我的客户发布代码,以确保他们得到的是“正确的”东西,但这可能超出了您所要求的范围。


3

在其他地方使用SVN,对所有内容进行版本化。对于跟踪,notebook将用于更简单的项目,如果需要,您可以使用许多免费的任务/错误跟踪应用程序(Redmine很酷)。在我看来,敏捷/ XP /持续集成/其他会有些过大。


3

除了“ 个人软件流程”之外,我还没有发现有关供单个开发人员使用的正式流程模型的太多信息。PSP相当繁重的文档和文书工作(无论是原始形式),对于执行工作的特定技术并没有太多要说的(相反,PSP专注于数据收集以寻找需要改进的地方),但这是一个开始开发可用于中小型项目的个人流程的要点。

我认为最好的行动方案是简单地遵循一些流程模型中的一些适当选择的(根据您的需求和项目而定)被广泛接受的最佳实践。看一下跟踪完成的工作/剩余的工作,管理需求,版本控制,测试(特别是单元测试和验收测试),持续集成,编码标准,您将不需要它的方法。如果您还没有,我建议您阅读Code CompleteThe Pragmatic Programmer并练习他们的技巧。

单独工作的最大好处是,除了外界力量对您的限制外,一切都取决于您。您不需要与其他人一起工作,因此选择使您能够以最有效的方式工作的技术更加容易。多年以来,您可能已经弄清楚了自己的最佳工作方式,因此这将是一个不错的起点。然后在此基础上应用已知的“最佳实践”以增强您的能力和技术。


1

这个家伙正在询问具体的方法,人们正在回答“使用X / Y软件”。与工具无关,实际上有许多方法,而且似乎还没有针对它们的验证报告:敏捷,迭代,螺旋,瀑布,XP,V模型,TDD。


事实是,大多数研究都用于与团队合作。据我所知,只有PSP才设计供单个工程师使用。甚至在此范围内,PSP仍专注于指定如何跟踪数据以识别需要改进的地方,并且仅提供一些有助于改善软件质量的高级任务,而没有具体说明如何执行这些任务。
Thomas Owens
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.