我怎样才能将产品推向市场以满足最后期限

时间:2010-08-14 08:10:03

标签: c# asp.net asp.net-mvc-2

我的矿山客户不关心优雅和结构良好的代码。我正在用最少的第三方工具从头开始编写应用程序。我正在使用l2s,Recatcha,tinymce,lucene和结构图。

我希望尽快将客户产品推向市场,同时牺牲优雅的代码。是否有任何工具可以让我将产品推向市场?

7 个答案:

答案 0 :(得分:7)

没有客户关心优雅且结构良好的代码。这不是你编写优雅且结构良好的代码的原因。你写它是因为它更短,更简单,编写速度更快,包含更少的错误,更容易找到这些错误。

ADD:我知道上面写的内容听起来很矛盾。当我开始工作时,我也不相信。我必须学习艰难的方法。因此,要明确这一点:当尝试编写优雅,结构良好的代码时,通常会发生这种情况:

  • 你会引入微妙的错误导致奇怪的,不可复制的行为,并且比首先编写代码花费的时间多10倍
  • 你会多次解决同样的问题。或者,反过来说:优雅的解决方案可以解决一系列问题,而丑陋的解决方案只能解决一个问题。或者是一个问题的一部分。
  • 你会重复很多次。这意味着需要编写更多代码,需要维护更多代码,更多错误。
  • 您将编写一周后您不理解的代码。因此,与其添加新功能/解决错误相比,您将浪费时间来弄清楚为什么某些代码可以工作(或不起作用)
  • 你会解决错误的问题。这是迄今为止最严重的危险,如果你试图节省正确计划物品所需的时间,就会发生这种情况。

答案 1 :(得分:4)

好的代码适合您而不是您的客户。

我认为不存在这样一种神奇的药丸。

但我宁愿建议你结帐Joel的12 Steps to Better Code。并非所有原则都适用于您(如果您不与至少一定数量的人合作),但版本控制,如何处理错误,测试和其他方面的内容将比您的想法更有帮助。

答案 2 :(得分:3)

假设无法添加更多团队成员,您可以:

  1. 工作时间更长(咖啡和披萨的直播,直到你或项目完成)
  2. 推迟版本2的某些功能。
  3. 牺牲品质。
  4. 送货迟到。
  5. 选择权属于您,但选项2将是我的建议。具有较少功能的程序比不能依赖的功能丰富的产品更好。

答案 3 :(得分:2)

有点陈词滥调,但没有工具可以让你得到你想要的结果,只有人。就此而言,没有任何工具能够保证人们真正想要使用的强大,可靠,设计良好且吸引人的产品 - 这些都是只有肉食才能解决的问题。恭敬地,如果我是你,我会小心“将产品推向市场”的整个概念:我确信你有理由采取这种方法,但更多的匆忙确实经常会降低速度,不太理想的结果。

答案 4 :(得分:2)

如果您没有时间按照合理的标准制作产品,那么了解哪些部分可以偷工减料,哪些部分不可以。

要做到最重要的是组件之间的接口。确保它们是正确的,并且组件之间的耦合尽可能小。

例如,如果您的报表生成器有时会崩溃,偶尔会生成错误的结果,并且缺少和损坏的功能,您可以在以后有空时修复它,甚至废弃整个模块并正确执行。

如果您已经破解了界面,并且它依赖于以某种方式存储其数据的其他组件,或者依赖于其他模块的内部工作,则将其撕掉并彻底替换它将变得更加困难。

不要吝啬高级模块的设计和它们之间的接口。继续问自己我是否必须撕掉这个模块并以不同的方式进行,它是否会影响我的任何其他模块......答案应该尽可能多地知道。它是“容易”去修复代码,但如果它是一个纠结的混乱,那就不行了。只要你以后可以轻松更换它们,小型组件就不需要很好。

强制性评论 - 我当然不是建议任何人编写错误的代码。只是有时会有一些必要的业务要求会导致你无法完成所有事情的最后期限,知道哪些事情可以在以后解决,哪些事情你不能解决,这是一项重要的技能。

所以无论如何回答你的问题设计工具,比如UML绘图工具等,可能比编码工具更有用

答案 5 :(得分:2)

大多数情况下你最终得到这个:

http://www.scottsimmons.tv/blog/wp-content/uploads/good_2dcheap_2dfast.jpg

我听到一位项目经理曾说过另一个关于为团队增加额外人员的说法:

“这不是因为你有9个女人,生孩子的时间只需要一个月。”

答案 6 :(得分:0)

我建议使用CruiseControl.NET或hudson等持续集成工具,编写许多JUnit测试(或等效的C#)。

这种方式即使您快速开发并且没有花足够的时间来计算所有部分,CI服务器也应该防止您产生错误,这将导致您花费很长时间才能找到。

那就是说,我同意其他人所说的,你写出优雅的代码,这样你(或你的队友)就会理解它,而不是让你的客户满意。