7

我正在编写一个似乎比我之前意识到的要复杂得多的软件。它执行多个子任务,具有一组完全不同的任务,并将自身集成到其他应用程序、模块和编程语言中。我需要做数百个待办事项,而且一切似乎都太复杂了,无法直截了当地思考。除了“只写”之外,还有哪些设计软件的好方法?我需要以某种方式组织我的项目,我需要知道要写什么,而不是先花一个小时来弄清楚下一步该做什么。

有没有人遇到过类似的情况?

4

5 回答 5

7

当你意识到你被要求做的事情的全部范围时,我想大多数开发人员都会遇到那个“哦,嘘**”的时刻:)

听起来你正在作为一个单人团队工作,所以这里是我的提示:

  1. 与客户交谈- 不能强调这一点。你现在需要进行一次坦诚的谈话。如果他们要求用棍子登月,而你得到的是 tuppence,那么没有人会从这项努力中得到正确的结果。

  2. 将系统分解为高级功能(例如,应用程序将 X 导出到系统 Y),与客户一起确定可以增量实施的合理垂直切片并优先考虑它们

  3. 在功能内组织子任务并确定其优先级

  4. 正如 marcgg 建议的那样,尝试将任务分解为可管理的块,我通常最多使用 4 天,不止于此,而且您对细节的了解不足以准确估计,因此请进一步完善它。 但是,并不总是需要将所有内容都估计为细粒度的细节。只要您和客户都了解可能出现的时间差错在哪里,可以同意稍后改进。

  5. 获得像 JIRA 之类的像样的任务跟踪工具。你想从你的大脑中卸下杂耍的任务,这样你就有能力去思考如何实施解决方案。

  6. 请记住,运输是一项功能 - 不要在六个月内疯狂地消失在编码漏洞中。定期交付原型(或具有不断增长的功能子集的更好的适当工作版本)并客户合作,而不仅仅是客户。

于 2010-02-15T10:53:03.497 回答
6

将您的项目分解为小任务(不到一天的工作)。按组组织它们。优先考虑它们(也许你需要做功能 X 才能做 Y)。开始编码!


任何项目,无论多么复杂,都只是一系列较小的任务。一旦您意识到这一点,就更容易集中精力并找到处理项目的方法。当然,将所有事情分解成小任务是工作而不是微不足道的。如果您没有这方面的经验,请尝试向同事寻求帮助。但获得经验的最好方法是尝试!

根据您的情况和个人偏好,您可以考虑使用敏捷方法,例如Scrum 或看板。您还应该使用项目管理工具来跟踪您必须做的事情。它可以是从发布到关键跟踪器的任何内容,只需找到适合您的。

于 2010-02-15T10:28:05.747 回答
3

尝试使用 SCRUM 和 TDD。

计划短期迭代(1-2 周),目标明确、时间短,尝试尽快创建一些端到端场景,只创建所需的基础设施。

使用 TDD - 我发现它在面临不明确的目标时会有所帮助 - 通过在编写代码之前编写测试,您一次专注于目标一个功能。

于 2010-02-15T10:28:23.360 回答
1

看起来你需要将你的软件组织成几个功能,而不是把它当作一个意大利面条式的代码来处理。

您可能希望使用一些形式主义来构建您的思维,例如用于静态架构的 UML 或用于动态架构的 MSC。

于 2010-02-15T10:30:13.917 回答
1

我只遇到过规模小得多的类似情况。但是,我希望这些提示可能会有所帮助。

  • 有一个设计会议(最好与同事一起)来确定您的软件的粗略架构
  • 尝试将复杂的故事分解成更小的子任务,这些子任务可以一一管理
  • 编写单元测试——如果你觉得你现有的设计不太正确,这些将使你能够大胆地重构你的代码而不用担心破坏某些东西
于 2010-02-15T10:33:06.170 回答