Language agnostic 完全缺乏计划和分析瘫痪之间的分界线在哪里?

Language agnostic 完全缺乏计划和分析瘫痪之间的分界线在哪里?,language-agnostic,project-planning,Language Agnostic,Project Planning,在我在编程领域工作的很短时间里,我看到了两个极端: 几乎没有计划的项目,因此成为维护的噩梦 长期处于计划阶段且不从计划阶段开始的项目 后者似乎常常是对前者的一种反应。快乐媒体在哪里?更重要的是,如果一个项目正朝着其中一个方向发展,那么向上述快乐媒体发展的最佳方式是什么?初始规划应大致为O(logn),其中n是预期的总开发时间 如果你需要一周的时间,在餐巾纸上画一些东西。 如果你有一个月的时间,第一天是进行初步设计。 如果你有一年的时间,花一周的时间 这确实假设您反复地重新考虑规划,而不是在没

在我在编程领域工作的很短时间里,我看到了两个极端:

  • 几乎没有计划的项目,因此成为维护的噩梦
  • 长期处于计划阶段且不从计划阶段开始的项目

后者似乎常常是对前者的一种反应。快乐媒体在哪里?更重要的是,如果一个项目正朝着其中一个方向发展,那么向上述快乐媒体发展的最佳方式是什么?

初始规划应大致为O(logn),其中n是预期的总开发时间

如果你需要一周的时间,在餐巾纸上画一些东西。 如果你有一个月的时间,第一天是进行初步设计。 如果你有一年的时间,花一周的时间


这确实假设您反复地重新考虑规划,而不是在没有成人监督的情况下,在代码库中完全按照突击队的方式进行:-)。

分析瘫痪可能有许多症状。我注意到的一点是,每次会议都会问同样的问题,但没有达成任何决议。如果你能向人们指出这一点,也许可以帮助他们承认规划过程正在停滞


如果可以,在项目开始时,说明您希望在规划阶段覆盖一定比例的需求,比如说80-90%。这样你就有了一个明确的目标,而不是追求完美。你可以在以后重新考虑计划和分析,只是不要让它耽误了事情

我认为这取决于两个因素:

  • 项目的长度

    • 这是一个为期一周的项目吗
    • 这是一个为期一年的项目吗
    • 还是介于两者之间
  • 项目中引入的变更的风险

    • 它们是否本质上是架构性的,可能会影响许多原始代码
    • 或者您只是添加了一个新功能
显然,这是上述两个因素的组合。花1个月的时间设计一个需要2天才能实现且对体系结构风险很小的特性是没有意义的。我在这里描绘一个长度/风险/设计时权衡的矩阵

《代码完成2》中有一些有趣的建议,我目前正在阅读。我记不清确切的措辞,所以我在这里解释一下,但它说了一些大致的话:

在设计中可能犯的两个最大错误是:

1. Attemping to design EVERYTHING (you will fail)
2. Designing NOTHING before implementation

在这两者之间找到快乐的媒介是成功设计和规划的关键。根据我个人的经验,我发现“决定”是我的瓶颈

如果是这种情况,则:

  • 列出所有的设计选项
  • 选择一个选项(如果您无法决定一个选项,请选择几个选项)
  • 列出最佳选择的风险
  • 对于每一个风险,头脑风暴一个解决方案,然后设计一个决定性的概念证明并写下来
  • 如果你的概念证明证明它不起作用,那么扔掉这个选项,然后选择另一个
  • “概念证明”是证明某件事的一个最小应用程序。(我的工作时间通常为1-6小时)

    如果你有两个或两个以上选择相等的情况,给自己一个时间限制(比如5分钟,而不是2个月),然后做出决定。。。任何决定,不要回头看


    并且相信自己能够处理在设计时没有考虑到的任何问题。

    伟大的问题-没有绝对的答案-这就是让体验有意义的原因。经验包括:

    • 你能从任何用户/赞助者和这个特定群体那里得到多少详细信息
    • 您当前的团队需要多少细节(技术/业务特定技能级别)
    • 您的赞助者/用户在开发过程中提供帮助的开放程度如何(您的团队有多敏捷?是否包括赞助者/用户?)
    • 您在识别差距方面有多好
    一个重要因素是正在开发的系统-越是“生命”关键,你需要的细节就越多(与网页相比,心脏监护仪)


    越复杂、成本/时间受限、寿命关键的前期工作越多——在工作(从原型到生产)过程中,你能详述的越少。

    你是指从资源/进度安排的角度(即项目管理)还是从详细设计的角度进行规划,但主要是从设计的角度来看,我还没有看到这种情况发生。主要是过于慎重。也就是说,这个过程正在进行,但非常非常缓慢。