我正在编写一个似乎比我之前意识到的要复杂得多的软件。它执行多个子任务,具有一组完全不同的任务,并将自身集成到其他应用程序、模块和编程语言中。我需要做数百个待办事项,而且一切似乎都太复杂了,无法直截了当地思考。除了“只写”之外,还有哪些设计软件的好方法?我需要以某种方式组织我的项目,我需要知道要写什么,而不是先花一个小时来弄清楚下一步该做什么。
有没有人遇到过类似的情况?
我正在编写一个似乎比我之前意识到的要复杂得多的软件。它执行多个子任务,具有一组完全不同的任务,并将自身集成到其他应用程序、模块和编程语言中。我需要做数百个待办事项,而且一切似乎都太复杂了,无法直截了当地思考。除了“只写”之外,还有哪些设计软件的好方法?我需要以某种方式组织我的项目,我需要知道要写什么,而不是先花一个小时来弄清楚下一步该做什么。
有没有人遇到过类似的情况?
当你意识到你被要求做的事情的全部范围时,我想大多数开发人员都会遇到那个“哦,嘘**”的时刻:)
听起来你正在作为一个单人团队工作,所以这里是我的提示:
与客户交谈- 不能强调这一点。你现在需要进行一次坦诚的谈话。如果他们要求用棍子登月,而你得到的是 tuppence,那么没有人会从这项努力中得到正确的结果。
将系统分解为高级功能(例如,应用程序将 X 导出到系统 Y),与客户一起确定可以增量实施的合理垂直切片并优先考虑它们
在功能内组织子任务并确定其优先级
正如 marcgg 建议的那样,尝试将任务分解为可管理的块,我通常最多使用 4 天,不止于此,而且您对细节的了解不足以准确估计,因此请进一步完善它。 但是,并不总是需要将所有内容都估计为细粒度的细节。只要您和客户都了解可能出现的时间差错在哪里,可以同意稍后改进。
获得像 JIRA 之类的像样的任务跟踪工具。你想从你的大脑中卸下杂耍的任务,这样你就有能力去思考如何实施解决方案。
请记住,运输是一项功能 - 不要在六个月内疯狂地消失在编码漏洞中。定期交付原型(或具有不断增长的功能子集的更好的适当工作版本)并与客户合作,而不仅仅是为客户。
尝试使用 SCRUM 和 TDD。
计划短期迭代(1-2 周),目标明确、时间短,尝试尽快创建一些端到端场景,只创建所需的基础设施。
使用 TDD - 我发现它在面临不明确的目标时会有所帮助 - 通过在编写代码之前编写测试,您一次专注于目标一个功能。
看起来你需要将你的软件组织成几个功能,而不是把它当作一个意大利面条式的代码来处理。
您可能希望使用一些形式主义来构建您的思维,例如用于静态架构的 UML 或用于动态架构的 MSC。
我只遇到过规模小得多的类似情况。但是,我希望这些提示可能会有所帮助。