当您需要在公司中建立软件开发基础架构时,最重要的是什么?

时间:2009-01-20 14:52:33

标签: infrastructure

假设您为一家突然决定进行自定义内部软件开发的大公司工作。此外,他们希望能够为客户提供成功的开发(如果有的话)。

现在你负责它。

您认为构建成功的软件开发基础架构最重要的是什么?

  • 灵活应对未来发展
  • 对使用过的技术(包含c,java,.net,web,mobile,...的项目)的灵活性。
  • 什么样的工具(源代码控制,伪造......),硬件(虚拟,单独的开发和生产......),流程(指南,代码审查......)等。

更新:请不要回答您需要合适的人和正确的工具。这正是我正在寻找的..什么是正确的工具,你会先雇用什么类型的人加入你的团队?想一想,因为你将成为这一发展的领导者。

10 个答案:

答案 0 :(得分:10)

让自己通过Joel Test至少得分为10分。

答案 1 :(得分:5)

我认为拥有合适的人才是最重要的。如果你的程序员很臭,那么别的什么都不重要。

答案 2 :(得分:5)

负责人知道他们在做什么。

答案 3 :(得分:3)

显然,有很多因素,但我认为这些是至关重要的:

  • 雇用聪明人(并支付他们的价值)
  • 选择适合开发类型的好工具(不要选择便宜的工具)
  • 建立版本控制系统和策略
  • 建立测试机制和政策
  • 不要害怕外包你不知道该怎么做的东西

答案 4 :(得分:2)

  • 为这份工作找到最好的人。如果他们不愿意为您提供最好的服务,或者给您的人事预算带来困难,那么您的开始就会很糟糕。
  • 为工作找到合适的工具......软件,硬件,供应商的支持合同等等。
  • 在开发生命周期的早期建立程序,并确保您有适当的人员来使用它。这就是您如何评估机会评估,开发,测试和后期制作支持。确保您拥有生命周期每个部分的人员和工具。

答案 5 :(得分:2)

不要试图在技术上保持灵活性。首先关注一种技术(Java,.NET,等等......)然后根据需要转移到其他技术。您将能够使用任何技术解决问题,但很难找到适合许多技术的人。

在基础架构层面,源代码管理是必须的。持续集成是一个优势。花些时间来实现您将能够发展的标准项目布局。它使开发人员更容易切换项目。花点时间建立一个良好的构建过程(Ant,Maven,在Java世界中)。将构建过程与IDE集成在一起,这样开发人员每次想要测试代码更改时都不必等待5分钟来部署项目。

答案 6 :(得分:2)

我同意Guillaume:如果你想从头开始建立一个部门,你需要关注。你需要建立自己的团队,让每个人都成长为新的职责,相互了解等。试图一次性进入太多方向是失败的方向。

因此,确定您要开发的技术。由于您的示例中的主要目标是内部开发,因此内部要求将决定您的决策。在构建您的团队时,请牢记这一主要目标。

对于内部开发,您至少需要两个已经了解公司及其流程的人员。 (两个因为当第一次重大危机袭击你时,一个人肯定会生病或在假期)。另一方面,你需要一些局外人,他们并没有根据“我们总是这样做”的心态来确定,他们可以开箱即用。由于上述原因,这些人也应该至少有两个人。您作为团队领导的工作是平衡这两个团队并将他们整合到一个团队中。

对于未来的增长,始终要考虑有机增长。 不要将团队规模增加200%,在这里聘请一个新人和另外一个人(或gal)。慢慢构建你的团队。 当您开始一个新项目时,总是考虑扩展您的团队专业知识。为每个项目尝试新的东西。这可以是新的源存储库,自动日常构建过程,编写规范或文档的新系统,甚至是不同的技术(例如,当您通常使用.Net,Delphi或C ++开发时的Java)。只要确保你从不尝试在重要项目中实现重大突破。 (我曾经为一家公司工作过,他决定从VB 6.0切换到.Net,这是他们之前尝试过的最大项目。他们活了下来。几乎没有。)

这样你的部门就会慢慢但不断扩展其能力。然后,当机会为外部客户进行开发时,您已经积累了所需的大部分知识,以便将其拉下来。

哦,是的,而且smacl也是对的:如果你想让你的部门长期生存,你需要坚实的质量保证/质量管理。

从第一天开始制定(并遵循)您的质量保证规则。保持它们尽可能短且灵活。添加你发现的缺失内容,并抛弃那些被证明是不必要或不切实际的内容。

不确定这是你想知道的,但我觉得有必要这么说; - )

答案 7 :(得分:1)

制定强有力的质量保证战略,包括验收标准和变更控制。最好保持轻量级以适应内部客户。此外,还了解如何进行需求分析,期望管理和资源管理。

换句话说,不要只是为了创造蹩脚的解决方案,浪费更多的时间而不是保存而且无法维护。花些时间思考你想要什么和需要什么,如何实现它,以及它将花费多少。

答案 8 :(得分:1)

我将提供一个更专注于编码和开发人员/架构师角色的答案,以及之前关于团队,版本控制,qa等的答案,这些当然都很重要。

您的许多决定都非常依赖于您的特定业务和软件结构(单个产品代码库,SOA,许多项目等)。但总的来说,您应该花费大量时间预先开发支付巨额费用的核心软件基础设施SDLC期间的红利。

软件基础设施

  • 编码命名约定例外

  • 处理策略记录

  • 策略设置和配置

  • 基类和助手类

  • 一般架构和图层

    (演讲,立面,领域 实体,数据商店等)

  • 设计工具,如UML 2.0 要求

  • 管理/最终用户互动

还有更多,但这些肯定是一些需要考虑的基础知识。我参与的所有成功项目都包含了不错的软件基础设施。我还要指出,许多失败的项目都有一个共同的主题......缺乏共同的基础设施。在大多数情况下,这些失败的项目是由一个非技术人员领导的,他们认为他们可以简单地向一些程序员提出一些想法并期望他们在几周内交付。

总而言之,您需要投入一些前期规划和原型设计,以确保长期成功!

祝你好运。

瑞艾芙德
www.blacksaber.com

答案 9 :(得分:0)

您应聘请的第一批人员应该是经验丰富的高级专业人员。然后从他们/他们的输入建立起来。稍后加入初级人员。