如何使用软件产品和您自己的代码组装项目

时间:2009-06-13 20:50:12

标签: project-management evaluation

假设你手边有一个特定的项目,它可以分为几个部分,你并不完全确定会出现的所有困难。 时间至关重要。

  • 您如何决定零件是否应使用软件产品或您自己的代码? (考虑到,有些工具很棒,但需要很多时间来学习)
  • 您如何选择合适的软件产品?
  • 选择合适产品的阶段(如果有的话)需要多长时间(百分比),以及评估单个产品需要多长时间?
  • 是否有回头路,是否在改变主意后,在产品上付出努力,发现它不合适?

我很想听听有关这些的任何经验法则。

5 个答案:

答案 0 :(得分:3)

改变您的决定就像改变房屋的蓝图一样。

这完全取决于你在时间和金钱方面的花费。

一些注意事项:

0)在开始之前以清晰简单的术语理解问题。了解对其成功至关重要的事情,然后使用该列表查看是否有任何软件,语言或工具可以帮助它,以及成本是多少,如果成本超过收益。

1)使用crammer的日程安排。如果你只有1天或1周的时间,那就按照你的构建顺序构建它。令人惊讶的是,当您必须以100%的质量完成50%的功能时,多少都无关紧要。专注于价值,价值,价值。阅读37 Signal的书“获取真实”这一内容。

2)不要重新发明轮子。从头开始构建东西总是更容易。除非你正在做一小部分实现并且它真的更简单,这意味着你可以避免抽象,直到你忘记你正在构建的东西,考虑它。如果你可以更快,更好,更便宜并且在相同的时间内构建它,那就去做吧。

3)了解工具的功能以及提供解决方案所需的任何工具所带来的好处。您应该熟悉或至少了解许多工具,或者至少知道这些工具。可能没有整合。

4)选择一种用于解决许多问题的语言。您可能会发现许多优秀的库和工具来构建您的软件,从而节省您的时间。如果您需要能够提供,可以运行的东西,并且您可以依靠其他人的智慧,使用已建立的东西,或者在需要时可以轻松访问.NET或Java的语言。

答案 1 :(得分:2)

对于软件的每个部分,您都认为是软件组件/包:

  1. 您如何决定零件是否应使用软件产品或您自己的代码? (考虑到,有些工具很棒,但需要很多时间来学习)

    • 问问自己,您正在考虑的组件是否是产品主要业务核心的一部分。

      • 如果没有,那么通常最好使用现有的解决方案,而不是花太多时间。

      • 如果是,请确保没有比您计划的更好的现有产品。 - 考虑购买许可证而不是开发产品。

    • 在线搜索类似组件(商业,开源甚至文章/演示源代码)。

      • 是否有任何要求来自组件?
      • 他们花了多少钱,开发并维护类似的组件会花费更多吗?
      • 许可证条件是什么? - 你的产品可以吗?
      • 如果组件包含用户界面,是否可以查看并且易于使用?

      • 如果您对上述所有问题的回答都是肯定的,那么请不要自行开发该组件。

      • 如果不是:

      • 组件是开源还是在文章/演示代码中发布? - 如果是这样,它是健壮的,您是否可以将代码改进或使用它作为示例来帮助您编写更适合您的要求的代码? - 如果是这样编写自己的代码,请使用代码作为您自己组件的一部分,不是从头开发

      • 如果您对上述问题的回答是否定的,那么您必须自己开发(或者您在错误的地方搜索)。

  2. 您如何选择合适的软件产品?

    • 见1的答案。
  3. 选择合适产品的阶段(如果有的话)需要多长时间(百分比),以及评估单个产品需要多长时间?

    • 清除一整天,搜索现有组件,阅读它们(功能,价格,评论)并下载+安装最多5个。
    • 清除另一天评估2-3个产品,比较演示/示例,查看代码,编写2个使用每个的小例子(相同示例不同的产品)。
    • 如果您选择超过3个,请清除另一天并测试其他日期。
  4. 是否有回头路,是否在改变主意后,在产品上做出努力,发现它不合适?

    • 始终设计您的软件,以便每个组件都可以更换。

      • 这保证了总有“回头路”。 (使用接口和适配器设计模式,分成许多组件,尽可能松散地连接所有组件(使用事件,绑定等) - 松散耦合。
    • 即使你自己实施了某些东西,也要确保有办法回来 - 有时你可能会使用错误的技术/设计,并且必须用你开发/购买的新组件替换组件。

    • 其他经验法则:

    在考虑每个组件之前,请考虑使用哪种应用程序范围的技术。

    • 使用C#,Java,Delphi等更现代的语言,在汇编中编写文章的时间越长,C语言越少,C语言越少。

    • 哪个更具有与您相关的自我组件?您的团队有什么经验。

    • 如果您使用的是.NET(C#),那么WPF可以帮助您降低GUI和业务逻辑之间的耦合,并制作更好看的GUI,但需要时间来学习如何使用它(5天非常推荐最低课程。

答案 2 :(得分:1)

与任何艺术一样,困难在于基于非常大的可能解决方案空间构成良好的解决方案。有很多方法可以解决这个问题,因为有开发人员。

我通常会花一些时间来理解问题,并尽可能清楚简洁地说明问题,最好以书面形式。问题描述应该完全从任何可能的解决方案中抽象出来。接下来,我通常会列出需要应用于解决方案的可用约束(时间,预算,法律,政治,绩效,可用性,团队内的技能可用性等)。

然后理论认为,您需要在市场上寻找能够解决问题并同时满足约束条件的东西。在实践中,这个过程并不是那么简单:你试图找出可能有用的市场类别,然后研究它们,看看有什么可用,并且不断尝试尽可能地减少约束和能力之间的差距,通常会回过头来重新审视和重新协商约束。

一些通用提示:

  1. 在研究过程中不断回到原来的问题。

  2. 总有不止一个解决方案,尝试在深入之前扩展搜索空间的广度(专注于解决问题的方法)。

  3. 明确一些值得研究的选项,以及在决定是否进一步调查之前,花费在每个选项上的时间。

  4. 很难找到最佳解决方案,特别是技术领域不断变化。寻找足够好的解决方案:“The Paradox of Choice - Why More is Less”。

  5. 在几个选项之间进行选择时,很少值turning to users for help(除非他们是软件专家)。如果你有很多看起来同样具有吸引力的选择意味着你需要回过头来更好地理解原始问题,那么你很可能错过了一两个要求。

  6. 关于using third-party components的一些进一步说明(指GUI组件,但也很容易应用于其他软件领域)。

  7. 关于项目的更多关于scoping, composing and researching的说明。

答案 3 :(得分:1)

  • 您如何决定零件是否应使用软件产品或您自己的代码? (考虑到,有些工具很棒,但需要很多时间来学习)

问自己两个问题 1)它是一种成熟的产品吗?如果是,那么
2)创建自己提供的功能需要多长时间。如果该值乘以您的小时费率大于产品的费用,则使用该产品。

  • 您如何选择合适的软件产品?

咨询您的其他开发者网络。他们使用过它们,遇到了问题吗?咨询互联网。使用该产品创建原型。它运作良好吗?任何重大错误?

  • 选择合适产品的阶段(如果有的话)需要多长时间(百分比),以及评估单个产品需要多长时间?

这取决于项目的规模,以及产品对成功的重要性。大多数情况下,您将能够在很短的时间内获得产品的高级视图。

可能只需几分钟就可以使用它,然后你说 - 不是 - 没有准备好黄金时间。如果超过了它,那么一两天的实验可能会告诉你它通过了你的项目。

如果这是一个涉及许多开发人员的庞大项目,那么您可能希望花更多时间使用它来制作原型应用程序,以确保值得投入所有时间。

  • 是否有回头路,是否在改变主意后,在产品上付出努力,发现它不合适?

如果你发现它没有运作,回去就没有错。事实上你可能不得不这样做。理想情况下,您会尽早发现这一点。不是在第11个小时。同样,这是原型制作的目的。

答案 4 :(得分:1)

这里已经有了一些非常好的答案,所以我不会重复,但是你应该考虑一点,尽管我会想到它显而易见我还没有看到它在这里提到:
您可以使用的人员来实施解决方案,他们的核心竞争力以及他们的一般能力水平 你必须要实现这一点(假设它是一个团队,而不仅仅是你自己 - 但即使只是你,也是相关的......)会对结果产生巨大影响。如果你没有经验丰富的程序员来帮助你开发这个,你最好找一些OTS产品为你做的工作......或者,即使你有不太可能成功的程序员,你仍然可能希望找到一个整体项目风险较低的解决方案。