将项目分解为小任务

时间:2009-09-19 10:53:44

标签: project-management

我想知道,当一个新项目到来时,比如说建立一个社交网站,我该如何将项目分解成小任务。每个项目通常有2-4个程序员,通常没有测试人员。我应该从一开始就把整个网站分成4小时的任务。我们应该分阶段做吗?那么测试呢,程序员可以测试代码吗?

感谢您的时间。

5 个答案:

答案 0 :(得分:6)

我们使用一个相当简单的系统。

  • 首先,我们将项目拆分为用户故事或“垂直”。例如“更新客户”。
  • 列出streadsheet第一列中的所有垂直列表。
  • 然后沿顶部放置图层或活动。例如,数据层,UI,日志记录。
  • 对于矩阵中的每个元素,您可以分配估算值并决定应该由谁来开发它。
  • 将其分解为4小时元素是好的,因为然后每个开发人员都可以说:“我今天要在scrum中执行这两项任务”。

我们通常会针对sprint中要完成的活动为每个sprint执行此操作。

测试程序员应该通过编写单元测试来测试代码,但测试人员应该执行系统测试。

答案 1 :(得分:5)

对于一个论坛来说这是一个很大的问题,所以我将首先推荐一本书:

Agile Estimating Planning by Mike Cohn

正如你从标题中可以看出的那样,它呈现出敏捷的方法。

在您购买和阅读本书之前,这个极短的版本可能会有所帮助:

  • 首先进行粗粮计划。类似于:我们计划在两个月后部署第一个版本,其中包含使其真正可用的基本功能。之后我们将每月推出一个新版本。确保你没有深入细节。因为现实无论如何都会杀死所有详细的计划。您可以将此计划中的步骤视为阶段,但请注意,它们匹配经典阶段分析,设计,实施,测试,部署

  • 第一阶段计划更详细地说明您要做什么。使用垂直切片进行规划,即不计划:首先我们将GUI设置为模型,然后是数据库,但使用完整功能,通常建模为用户故事。例如“作为用户,我想将订单输入系统”这将是一个用户故事。该用户故事的实现意味着从Userinterface到持久性的所有内容,包括测试。 (谷歌的“用户故事”和“迭代计划”了解更多相关信息。)

对于您的测试问题:开发人员测试他们的代码比没有测试更好。但是有更好的方法可以确保高质量的代码。我建议采用以下方法:

  • 进行测试驱动开发,即首先编写测试,然后执行。这种方式迫使您和您的团队使代码结构良好,它支持快速更改代码,因为测试会告诉您有关破坏的内容。

  • 至少部分时间配对编程(越多越好)。这确保了至少两个人理解每行代码。它也可以作为隐式训练,最后用作代码审查,这是一件好事,因为已知代码审查在查找错误方面比测试更有效。

  • 您仍需要对整个应用程序进行手动测试。

阅读和谷歌的更多内容:敏捷,scrum,xp,TDD,BDD,规划扑克,

答案 2 :(得分:1)

您需要学习一本关于项目管理的基础书籍,阅读并练习您从中学到的知识。查看Wikipedia关于项目管理的文章是一个很好的起点:http://en.wikipedia.org/wiki/Project_management

分解项目的一种方法是设定里程碑并进行粗略估算以达到这些里程碑。不要过于复杂化。通常,项目计划和估算在项目开始时是不可靠的。但随着你的进展,当你逐渐了解自己正在建设什么时,计划会有所改善。

你可以把你的项目分解成4小时的任务,但这将是微观管理(除非你真的可以把工作单位放到4小时:))我建议反对它,特别是在项目的开始

关于程序员测试他们的代码:

今天让程序员测试他们的代码是很常见的,测试是一个巨大的领域,如项目管理。例如,您在系统开发生命周期的不同阶段进行不同类型的测试:

  1. 在开发过程中,您可以进行测试驱动开发 - >让您的开发人员首先编写测试,当他们的代码根据测试进行验证时,就可以将其提交到您使用的任何源代码存储库。

  2. 一旦提交了所有代码并且您拥有软件的早期版本,就可以进行内部测试,例如系统测试,您可以让测试人员或程序员测试应用程序。

  3. 当您对系统测试感到满意时,您可以在将其部署到任何地方之前进行用户验收测试。用户验收测试应由您的目标用户执行。

  4. 祝你的项目好运:)

答案 3 :(得分:1)

另一本你可能会觉得有用的书是

Software Estimation: Demystifying the Black Art

史蒂夫麦康纳尔

除了我只能重复别人所说的话:基本上是“分而治之”。

答案 4 :(得分:0)

  

测试怎么样,程序员可以测试代码吗?

如果您没有任何质量保证,程序员必须测试他们的代码!

我还建议程序员进行代码审查(查看彼此的代码)。作为团队负责人,我曾经在签到之前审查新员工的所有内容:

  • 质量控制(确保它们不是检入错误)
  • 另外,训练(看看是否有他们不知道并且应该知道的东西,我可以告诉他们)

当我的评论停止发现错误时,我会停止查看某人的代码,这会在他们学会测试自己的代码时发生。