【问题标题】:What's most important when you need to establish a software development infrastructure in your company? [closed]当您需要在公司中建立软件开发基础架构时,最重要的是什么? [关闭]
【发布时间】:2009-01-20 14:52:33
【问题描述】:

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

现在由你负责。

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

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

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

【问题讨论】:

  • 在不知道您从事什么行业、您将开发什么类型的应用程序、您拥有什么操作系统的情况下,很难就雇用谁以及购买什么工具提供详细的建议支持,您可以负担多大的团队,等等。
  • 想从 5-10 人的团队开始……一开始主要为 windows 操作系统开发。行业独立

标签: infrastructure


【解决方案1】:

让自己以至少 10 分通过Joel Test

【讨论】:

    【解决方案2】:

    我认为拥有合适的人将是最重要的。如果你的程序员很臭,其他都无所谓。

    【讨论】:

      【解决方案3】:

      知道自己在做什么的负责人。

      【讨论】:

        【解决方案4】:

        显然,有很多因素,但我要说的是关键因素:

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

        【讨论】:

          【解决方案5】:
          • 为这项工作找到最优秀的人。如果他们不愿意为最好的产品买单,或者让您在人事预算方面遇到困难,那么您的开端就很糟糕。
          • 为工作获取合适的工具...软件、硬件、供应商的支持合同等。
          • 尽早为您的开发生命周期建立程序,并确保您有合适的人员来使用它。从您如何评估机会评估到开发、测试和后期制作支持,这都是一切。确保您拥有适用于生命周期每个部分的人员和工具。

          【讨论】:

            【解决方案6】:

            不要试图在技术上保持灵活性。首先从专注于一种技术(Java、.NET 等)开始,然后在需要时转向其他技术。您将能够使用任何技术解决问题,但很难找到擅长多种技术的人。

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

            【讨论】:

            • 但是如果你想提供不同的技术怎么办。您让项目团队使用不同的技术进行开发,但您为他们提供独立于技术的基础架构(源代码控制、伪造系统、指南......)
            • 如果它是需求的一部分,那么它就是需求的一部分。但通常,最好的技术是开发人员最了解的技术。而且你很少能找到擅长多种技术的开发人员。
            【解决方案7】:

            我同意 Guillaume 的观点:如果你想从头开始建立一个部门,你需要集中精力。你需要建立你的团队,让每个人都成长为新的职责,相互了解等等。试图同时进入太多的方向是走向失败的方向。

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

            对于内部开发,您至少需要两个已经了解公司及其流程的人。 (两个是因为当第一次重大危机袭击你时,一个人肯定会生病或在度假)。另一方面,你需要一些局外人,他们不被“我们一直这样做”的思维定势,他们可以跳出框框思考。出于上述原因,这些人也应该至少是两个人。作为团队负责人,您的工作是平衡这两个团队并将他们整合到一个团队中。

            对于未来的增长,请始终从有机增长的角度来考虑。 不要将团队规模增加 200%,在这里雇佣一个新人,在那里雇佣另一个人(或女孩)。慢慢建立你的团队。 当您承担一个新项目时,请始终考虑扩展您的团队专业知识。在每个项目中尝试新的东西。这可以是一个新的源代码库、一个自动化的日常构建过程、一个编写规范或文档的新系统,甚至是一种不同的技术(例如,当您通常使用 .Net、Delphi 或 C++ 进行开发时使用 Java)。只需确保您从不尝试在重要项目中实现重大飞跃。 (我曾经在一家公司工作,该公司决定从 VB 6.0 切换到 .Net 以完成他们之前尝试过的最大项目。他们幸存下来。勉强。)

            这样,您的部门将缓慢但不断地扩展其能力。然后,当有机会为外部客户进行开发时,您将已经积累了完成它所需的大部分知识。

            哦,是的,smacl 也是正确的:如果您希望您的部门长期生存,您需要可靠的 QA/QM。

            从第一天开始制定(并遵循)您的 QA 规则。使它们尽可能短而灵活。添加您发现缺少的内容,并丢弃证明不必要或不切实际的内容。

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

            【讨论】:

              【解决方案8】:

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

              换一种说法,不要只是随意创建蹩脚的解决方案,浪费的时间多于节省的时间,而且无法维护。花点时间考虑一下您想要什么、需要什么、如何实现以及需要花费多少。

              【讨论】:

                【解决方案9】:

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

                您的许多决定在很大程度上取决于您的特定业务和软件结构(单个产品代码库、SOA、许多项目等)。但一般来说,您应该始终花大量时间预先开发核心软件基础设施,这将支付巨额费用SDLC 期间的股息。

                软件基础设施

                • 编码命名约定异常

                • 处理策略日志记录

                • 策略设置和配置

                • 基类和辅助类

                • 一般架构和层

                  (展示、外观、领域 实体、数据存储等)

                • UML 2.0 等设计工具 要求

                • 管理/最终用户交互

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

                归根结底,您需要进行一些前期规划和原型设计,以确保长期成功!

                祝你好运。

                雷福德
                www.blacksaber.com

                【讨论】:

                  【解决方案10】:

                  您应该首先雇用经验丰富的高级专业人员。然后从他们/他们的输入中建立起来。稍后添加初级人员。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2023-03-23
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-10-15
                    • 2010-09-13
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多