单人应用程序开发?

时间:2009-10-06 03:17:00

标签: project-management

嘿所有人。我想对我一直试图找到一些信息的问题有所了解。 如果您是从头开始构建项目的独立开发人员,您如何管理项目?过去,我曾参与过几个已经发展成相当大项目的个人项目。在几乎所有这些项目中,我都试图在正常软件开发项目(即产品负责人,开发人员)中佩戴通常所有角色的帽子。 ,建筑师,测试员等)。似乎当我离开项目一段时间并回来时,很难回到我正在做的节奏中。所以,我有一些问题:

  • 如果我知道要求(在此 当前时间),我是否记录下来 无论如何?如果是这样,我该怎么办呢 这样做,我该如何管理这些 要求? 产品积压, 功能列表等
  • 如果是这种情况,那么产品积压或使用案例是否有点过分?
  • 如何有效地适合 他/她到各个角色的时间?
  • 什么是正常的事件流程 那人会跟着? 开始编码 马上,写下用户 故事/用例,然后进入 OOA/D
  • 这个级别的图表/建模是否足够? 域模型,类图等

基本上,我很好奇当你是孤独的独立开发者时,SO社区中的每个人都会开始从开始到部署开发项目。需要哪些步骤,文档和其他项目相关的活动来帮助将这个项目从一个不切实际的业余爱好项目带到更专业的项目?任何帮助,参考或建议将不胜感激。提前谢谢。

9 个答案:

答案 0 :(得分:8)

我发现,关于开发独奏的最困难的部分是让自己继续前进是很困难的。即使你这样做是为了维持生计(AKA,经营自己的软件业务),除非你有紧迫的需求(AKA,如果你不赚钱就会挨饿),可能很难坐下来而且只是代码。

从您的角度来看,我建议您遵循有意义的良好软件实践。例如,如果我是一名独立软件开发人员,我就没有理由创建一个协作开发环境。我真正需要的只是一个SVN服务器,我的IDE和一个记录文档的地方(可能会设置一个wiki或网站或其他东西)。我个人会创建一个现实的计划,并坚持这样做。

至于文档的工作量,这实际上取决于您和您正在开发的产品。例如,我肯定会建议记录您的要求。除非你的产品是微不足道的,否则你根本不会记住它们以及为什么你想要某些产品而不是其他产品。然而,管理完整的积压工作本身就是一项工作。在独奏程序员的情况下,这可能没有意义。

基本上,我试图解决的问题(并且应该遵循每个项目 - 不仅仅是在这种情况下)是足够的管理是有意义的。其余的应该集中在产品的工作和开发上。

您可能想要查看的其他内容是阅读此内容 - Agile Programming Works for the Solo Developer。还有其他类似的文章。可能会给你一些好主意。

答案 1 :(得分:2)

  

如果我知道要求(在此   当前时间),我是否记录下来   无论如何?如果是这样,我该怎么办呢   这样做,我该如何管理这些   要求?产品积压,   功能列表等?

我有两个功能列表:

  • 说明成品范围的高级视图
  • 我在此次迭代中实现的功能列表

因为我不需要将它传达给其他人(还)我倾向于写下我不了解的关于项目的事情(如果我已经知道它没有必要把它写下来):它是当它变得太复杂,或者有我尚未定义但需要定义的细节时,我开始以书面形式定义它们。

但我在开始编码之前尝试调查/制作business-case for the project

  

如何有效地适应   他/她到各个角色的时间?

无论如何,当我不得不离开电脑时,我做了非程序员,产品所有者的思考。

除此之外,我的周期是:

  • 实施更多功能
  • 集成 - 测试
  • [重复上述]

每隔3到6个月,我会根据我的预计时间表对新功能进行比较,然后重新校准:即,在接下来的几个月内制作一个新的优先级功能列表。

  

什么是正常的事件流程   那人会跟着?开始编码   马上,写下用户   故事/用例,然后进入OOA / D?

我开始兼职或在业余时间工作,以确保我有:

  • 理解所需的功能
  • 做出重要的架构决策
  • 根据需要编写任何一次性原型来学习新技术

之后我准备开始全职开发了。

  

这个级别的图表/建模是否足够?域模型,类图等?

我根本不使用图表(除了UI的草图)。通过构建代码和重构,我能够知道/记住/重新发现/决定哪些软件组件实现了哪些功能。

答案 2 :(得分:1)

  

当我离开项目时似乎   一段时间后回来,确实如此   非常难以回到   我正在做的节奏。

您需要更多地评论您的代码。如果您保留代码,请在两周后回来,并且不记得代码是如何工作的,您需要更多评论。

  

如果我知道要求(在此   当前时间),我是否记录下来   反正?

是的,出于同样的原因。

  

如何管理这些要求?

如果您在每个功能中都有足够的细节来慢慢记忆,那么功能列表就可以了。

  

如何有效地适应   他/她到各个角色的时间?

将每个功能分解为越来越小的任务,直到您觉得可以在半天或更短的时间内完成每项任务。

  

什么是正常的事件流程   那会跟着吗?

这取决于您的开发风格。一般来说,我会遵循一个清晰但简单的架构,在可行的情况下利用软件模式,并为您的代码提供足够的单元测试。

  

图表/建模是什么   足够这个水平?

充分的图表/建模,使项目清晰。

  

有哪些步骤,文档和其他内容   项目相关活动是必要的   帮助实现这个项目   不切实际,爱好项目   更专业的东西?

除了我已经提到的内容之外,请确保您拥有一个良好的源代码管理系统和每日备份。

祝你好运!

答案 3 :(得分:1)

如果你认为你有可能在一段时间内完成这个项目的工作,那就留下它,然后再回到它...你最好的办法是对待文档对于该项目,就像你在一个大型团队一样工作。

这意味着记录需求(即使它们来自你自己),编写用例(如果功能将变得复杂,否则一些其他形式的文档就足够了),以及某种级别的UML图表(或其他特定领域)图)可能包括活动图/类图/等。

这样,当你离开项目一段时间后,你可以回到一个记录良好的想法,并从你离开的地方继续。

作为旁注,我尝试做大部分的事情,无论如何......如果我找到有兴趣与我合作的项目,我可以让他们快速加速并获得他们在我的想法上。

答案 4 :(得分:1)

这就是我的工作方式,YMMV:

  • 为所有内容保留一个电子表格 - 项目列表,以及一些顶级项目/待办事项/提醒

  • 为您拥有或正在处理的每个产品/项目创建一个“项目”文件夹,并创建一个包含项目文档和代码的结构。

  • 在此文件夹的根目录中为每个项目保留顶级“全能”文档。在本文档中保留您的想法,研究,笔记等。

然后,如果您想要整理,请保留一个MS项目文件(或类似文件),并为每个项目中的各个步骤绘制时间表。这有助于跟踪每个项目的进度,并确保您不会忘记任何事情。基本上让你自己诚实。

如果你需要跟踪你正在为客户做的项目工作的进展,我理解Basecamp是一个很好的解决方案。我目前正在为自己的公司进行评估。见www.basecamphq.com

答案 5 :(得分:1)

即使是独立开发人员,您也应该至少记录项目的整体功能,然后记录您要完成的特定功能的要求,然后为您的功能生成一个简短的伪代码目前正在努力。

这样一来,如果你最终脱离了那个项目,你可以回过头来看看你能够轻松完成的任务。出于同样的原因,在细节方面走得太远也毫无意义。

对于一个独立的开发者来说,这也是一个很好的激励工具 - 通过一些方法来获取进展是一种显示进步的方式 - 当你咀嚼几千行时,你可以开始感觉到你没有做的事情代码,似乎你距离实际完成“模块x”还有几英里远。

最后 - 关于代码注释 - 我至少尝试填写新函数在大纲中应该具有的操作/行为,然后在注释之间编写代码。此外,有一个简单的英语解释,为什么你在if / else分支支持条件中的逻辑...

答案 6 :(得分:1)

我相信在单人发展方面取得更好的成绩可以通过适当的工具支持和任务来实现,这可以弥补人们的不足并帮助组织工作时间。任何能够以最少的创建时间成本生成元数据的工具都会对您的软件有所帮助。

  • 用于跟踪用户行为/代码更改历史记录的VCS和工具 - 非常重要的是添加良好的提交消息
  • 用于存储项目相关数据的思维导图工具(例如XMind),blacboard也很有用:)
  • 时间跟踪工具(例如Toggl.com)
  • 写了很多acceptance test并使用验收测试框架

当然,这些线索也适合非单人发展:)

答案 7 :(得分:1)

作为一名独立开发者,我发现你的时间非常昂贵。这意味着你必须平衡可持续性和动力 - 即使你只是一个人,你必须做的事情,这样你六个月后就可以回去看旧东西而不浪费时间,而不用花太多时间维护它会破坏你的流量的系统。

您的问题表明您正在考虑相当重量级的工具和流程,但80/20规则适用 - 例如,您可以通过TDD充分利用文档,使用平台的doc工具生成API文档,加上规格,清单等的维基

在这种情况下,我建议你仔细选择你的平台。关于建模的问题表明您正在使用一个产生大量代码和工件的平台,但您可能能够获得大部分功能,从而在其他地方获得更少的管理开销。今天我正在开发一个.NET Web应用程序,我用“正确的方式”编写,但现在意识到在这种情况下,通过使用PHP和PHP MVC框架来保持一个干净的结构,我可以更有效地提供相同的功能

我推荐的具体工具:

  • 分布式版本控制系统(比集中式开销少得多)
  • 您可以使用的具有良好工具的最轻量级平台
  • 用于轻松捕获和维护大量内容的Wiki
  • 无论您从项目一开始就可以使用哪种测试框架
  • 可以从任何地方访问的轻量级TODO列表系统

答案 8 :(得分:0)

我曾经在一个非常小的团队(一个dba和一个C#开发人员)上工作。即便如此,我发现编写需求,正式测试,源代码控制和错误跟踪非常有用(我们对我们的功能和错误使用了错误跟踪)。它帮助我们不忘记任何事情,一年后当你进行维护时,你有一些东西要研究,以帮助你理解你的所作所为。此外,当我们两个人离开时(大多数人最终继续前进),那里有下一个人的文件。

相关问题