IT部门和产品开发部门之间的编程有何不同?

时间:2009-05-19 23:21:10

标签: development-environment

我们公司最近决定,我们IT部门的一个很好的部门实际上是在进行产品开发而不是内部IT开发,现在已经创建了一个新的部门。

在此类转换期间,开发人员应该寻求哪些类型的更改?

内部开发和产品开发之间是否存在任何差异?

7 个答案:

答案 0 :(得分:3)

我不知道这些差异会在一个现有的群体中有多快地发挥作用,这个群体从一个角色转变为另一个角色,但同时兼任内部开发人员和产品开发人员,两个巨大差异跳跃于脑海:需求和测试。

作为内部工具的开发者,我几乎获得了关于界面,组织甚至范围的自由统治。规格是以电子邮件的形式说“你能写一些做X的东西吗?”同样,测试几乎不存在。经过我能够做的任何测试,这些工具将直接部署到他们的目标受众,并且当他们出现时,错误报告直接来自那些最终用户,再次通常通过电子邮件甚至霍尔滑车。

既然我正在进行产品开发,那么差异就是戏剧性的。规格是30-100页的Word文档,我们有一个专门的测试部门,它确保我们生产的匹配那些规格。我得到了项目经理的更好支持,并且对于我对需求或设计的反馈有明确的渠道。可以说,产品开发为个体开发者提供的自由度较低,但作为(希望)更有组织,更好支持的团队的一部分,可以作为交换。

答案 1 :(得分:2)

[我和杰夫合作。]

正如其他人所说,主要区别源于用户的性质

  • 开发内部应用程序时,您通常会使用数量有限的应用来处理来自单个部门或群组的用户,而且他们主要是一个专属用户群。
  • 在开发外部产品时,您正在与看到整个辣酱玉米饼馅的用户打交道,他们付钱的客户可以在其他地方开展业务。

这种差异很重要,因为跨多个应用程序的连贯用户体验对付费客户变得更加重要,他们会看到整套应用。

  • 在IT案例中,业务和用户本身通常都不关心他们的应用看起来和其他部门使用的其他应用不同的事实。如果由于某种原因他们确实关心,他们对此采取任何行动的能力就会受到限制。虽然可以建立跨应用程序一致性的业务案例(对内部员工的品牌推广,使用多个应用程序的员工的可用性,通过重用公共库,模式,服务等而降低开发成本),但这种关注通常是紧接着开发新的业务功能。
  • 在产品案例中,用户关心整个应用集的一致性,如果 可以做一些事情,如果经验很薄弱。

因此,一个主要的区别是连贯,高质量的用户体验的相对重要性。但是,这个目标本身具有重大的<强>组织分支,我们已经开始看到。

  • 我们会看到越来越重视“横向”活动,寻求建立标准并改善团队之间的沟通,因为此类活动直接支持生成连贯产品的目标。跨领域团队(如用户体验)将变得比以前更具影响力,我们可能会看到新的跨领域团队(例如,跨多个系统而不仅仅是单个系统查看架构的团队),我们可能会看到更多关于不同应用程序的功能,更多交叉培训等的演示文稿。
  • 应用程序开发团队在绘制自己的课程时将拥有比以前更少的自主权。用户体验团队(与最终用户,业务利益相关者和工程团队合作)将指定有关可视化设计,交互设计等的标准,并且应用团队将采用这些标准。我们将看到测试实践变得更加标准化。跨应用程序的构建和部署将更加统一和协调。跨应用程序的监控,警报,响应时间SLA和其他运营指标将更加统一。应用程序团队将无法再为自己定义这些内容(尽管它们肯定可以为更广泛的讨论做出贡献)。
  • 管理层将越来越多地分配资源,以便在整个产品中实现全局优化,而不是针对各个应用进行本地优化。因此,过去各个应用程序团队的组成相对固定(开发人员,SQA等),我们应该期待看到更多的流动性。

答案 2 :(得分:1)

您的客户面临巨大差异。 IT开发人员将公司的其余部分(有时是合作伙伴/子公司)作为其主要客户。产品开发开发人员将客户(即购买产品的人员,即公司存在的原因)作为主要客户。

答案 3 :(得分:1)

是的,非常如此。执行推动收入和发票的活动与被视为开销的活动之间存在巨大差异。

答案 4 :(得分:1)

我的经验是,在房子的产品开发方面工作的人有更多的预算,更好的培训,更好的旅行和更熟练的员工。在一家产品开发公司工作过,总觉得低技术员工被扔到了IT部门。

答案 5 :(得分:1)

内部开发非常注重流程。他们只是希望提供xyz功能,并使其基于公司范围的战略运作。当您的主要产品是您的代码时,这不是迭代的make-the-product更好的循环。因此,内部的东西通常只是“足够好”,而软件公司可能倾向于在“正常工作”之后很长时间内改进产品。

请注意,内部开发团队可以通过“足够好”来逃脱,但软件开发公司可以在的同时逃脱它,但最终将失去那些努力改进的人

我认为在这两种环境之间移动可能会对系统产生任何影响,但这并不是说它们都不能以同样的方式运行 - 只是根据我的经验,它们可能不会。例如,当UI是内部软件时,通常会给予较低的优先级,因为客户通常会获得使用它而不是付费使用它。

答案 6 :(得分:1)

我在两种类型的组织中都等于时间。我工作的特定组织,软件开发是IT部门的一部分,将软件开发视为成本中心,软件开发作为产品的一部分被视为利润中心。

这两者非常不同。在我的案例中,开发人员的技能水平差别很大 - 从事公共产品工作的人员总体上技能更高,更关心他们的工作质量。作为真正公共产品的开发者,您实际上正在为公司赚钱。

在我的内部软件工作中,我通常有一组已知的固定需求。我设计了一个解决方案,但如果质量问题(包括代码质量),匆忙编码并交付结果,总是给出一个不合理的截止日期。通过任何短QA流程发现的任何错误通常只有在他们提出正式的修复请求时才会得到修复。

根据我的经验,产品开发几乎是相反的。所有的要求都没有固定(只有我那个星期工作的东西是固定的),设计通常由那些在产品上工作时间最长的人决定。我决定要花多长时间(但必须真正解释为什么并证明时间合理),编码通常不会匆忙。在产品开发中通常尝试创意更加困难,因为供公众使用的产品应该使用经过试验和测试的方法。

因此,我想说,如果创造力非常重要,那么产品开发可能不适合您,因为您个人拥有的特定想法不太可能进入产品,除非您可以为其制作商业案例并以某种方式使它比业务已经规划的更重要。

根据软件的部署方式,选择特定的库也会更加困难。例如,政府使用的软件通常必须通过Common Criteria认证,这可以消除某些库选择。