Project management 在复杂的层次上设计软件?

Project management 在复杂的层次上设计软件?,project-management,writing,Project Management,Writing,我正在写一个软件,它看起来比我之前意识到的要复杂得多。它执行多个子任务,具有一组完全不同的任务,并将自身集成到其他应用程序、模块和编程语言中。我要做的事情有数百件,而且每件事似乎都太复杂了,无法直接思考。除了“只写”之外,还有什么好的软件设计方法?我需要以某种方式组织我的项目,我需要知道该写什么,而不必先花一个小时来决定下一步该做什么 有人遇到过类似的情况吗?将项目分解为小任务(不到一天的工作)。分组组织。对它们进行优先级排序(也许您需要执行功能X才能执行功能Y)。开始编码 任何复杂的项目都只

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


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

将项目分解为小任务(不到一天的工作)。分组组织。对它们进行优先级排序(也许您需要执行功能X才能执行功能Y)。开始编码


任何复杂的项目都只是一系列较小的任务。一旦你意识到这一点,就更容易集中精力,找到一种方法来完成这个项目。当然,把每件事分解成小任务是一项工作,而不是琐事。如果你没有这方面的经验,试着从同事那里得到帮助。但是获得经验的最好方法是尝试


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

尝试使用SCRUM&TDD

计划简短的迭代(1-2周),目标明确、简短,尝试尽快创建一些端到端场景,只创建所需的基础架构


使用TDD——我发现,当面临不明确的目标时,它会有所帮助——通过在编码之前编写测试,您可以一次只关注目标功能。

看起来您需要将软件组织在多个功能中,而不是将其作为一个单一的意大利面代码盘来处理


您可能需要使用一些形式主义来组织您的思维,例如用于静态体系结构的UML或用于动态体系结构的MSC。

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

  • 举行一次设计会议(最好是与同事一起),找出软件的大致架构
  • 试着将复杂的故事分解成更小的子任务,这些子任务可以一个接一个地管理
  • 编写单元测试——如果您觉得现有设计不太正确,这些测试将使您能够大胆地重构代码,而不必担心破坏某些东西

我想大多数开发人员都会遇到这样一个“oh-sh**”时刻:当你意识到自己被要求做的事情的全部范围时:)

听起来你是一个人的团队,所以这里是我的建议:

  • 与客户交谈-这一点怎么强调都不够。你现在需要进行一次坦诚的谈话。如果他们用棍子向你要月亮,而你却得到了一大笔钱,那么没有人会从这项努力中得到正确的结果

  • 将系统分解为高级功能(例如,应用程序将X导出到系统Y),与客户机一起确定可增量实施的合理垂直部分,并对其进行优先级排序

  • 在功能中,组织子任务并确定其优先级

  • 正如Margg所建议的,试着把任务分解成可管理的部分,我通常最多用4天,如果超过这个时间,你对细节的理解不够准确,因此需要进一步细化然而并非总是需要对每件事进行精确的评估。只要您和客户都了解可能出现的时间延误,就可以同意以后改进

  • 找一个像样的任务跟踪工具,比如JIRA之类的。你想从大脑中卸下杂耍的任务,这样你就有能力了解如何实施解决方案

  • 记住,运输是一项功能——不要在六个月内像疯了一样消失在编码的洞里。定期交付原型(或者更好的、具有不断增长的功能子集的正确工作版本),并与客户合作,而不仅仅是为客户服务