在系统管理部门,服务器和 IT 基础设施正在迁移到数据中心,IT 人员有时会被裁减。同样的事情是否可能发生在软件开发人员身上,世界上的软件可以由少数几家大公司生产,而不是由这么多开发人员生产?
10 回答
不。
构建软件并不是一项可以很好扩展的活动。如果一个女人需要 9 个月才能生孩子,那么 18 个女人需要 1 个月吗?上面有人提到了“神话人物月”——这个问题首先在那里被提及。在某个时候,团队中开发软件的沟通和间接成本实际上开始阻碍前进的动力。
还有一种观点认为,伟大的程序员和普通程序员(或者——那些浪费时间在 StackOverflow 上发帖的人和那些不这样做的人)之间的生产力差异是 10 倍。Net-Negative Productive Programmers——那些通过糟糕的实践、糟糕的设计决策或以某种方式破坏团队士气的人实际上会导致消极的生产力。
另外,大多数软件公司都专注于一种软件或一种语言,而且总是有新的东西出现。“创新发生在别处”——一旦你足够大,你就会很舒服地做你一直在做的事情,所以你不会去寻找可能破坏你当前模型的新事物。
开源现在很大——所以你不可能真正找到一家大公司,它会锁定除了他们的软件之外的所有软件。(不管微软多么想……)
我会争辩说不——在短期内。有了 TDD 和配对编程和其他东西,看起来更小更敏捷的团队是要走的路。
我总是回到诸如“神话人物月”之类的事情上。我可以拥有一个拥有 1000 名开发人员的大型公司——但这并不意味着 1000 个工时的项目会在一天内完成。
只是看起来不太好用
有些人会关注印度的大型开发公司,并认为一旦解决了所有问题,就有可能实现这一目标。
总是有人尝试自动化软件的生成。只写 UML,然后用程序神奇地编写软件。
但是系统管理员总是需要的,也许不再那么需要了。那里有成千上万的小型 IT 基础设施和服务器托管公司。
软件开发也是如此。随着工具和框架以及一切的改进,对实际程序员的需求将会减少。但是总会有小公司在做定制的东西,而像 SAP 这样的大公司则在构建大框架。还必须有人编写框架。
所以不要担心你的工作:)
也许部分,但不完全。
除了各种规模的软件公司(主要生产软件)之外,还有许多公司需要定制软件作为其产品的一部分——例如,雷达设备的固件。这样的公司雇佣了大量的个人开发人员,外包这样的工作既不实际也不有效,因为它需要有人为需要的东西创建精确的规范。创建好的规范可能比创建软件更困难。
我认为廉价商品硬件和资源(如“云计算”)的可用性增加了发展的动力,更加分散。拥有庞大资源的大型企业无法再享有与独立或小型开发团队相比的优势。
从某种意义上说,就像外面有几家大出版社,但外面还有很多独立作者(或作者群体)。例外是所有那些较新的“汤姆克兰西”系列小说,都是用代表无数不为人知的作者的笔名写的。
我不认为我们会看到这种情况发生。
开发软件的很大一部分是对您正在从事的问题领域有深入的了解。一家大公司不可能拥有大量部门的重要问题领域知识。
与 IT 或 HR 等外围支持功能不同,软件开发也往往是使公司有价值的核心的一部分。外包核心竞争力是一个非常危险的提议。不仅存在巨大的知识产权问题,而且处理外包的公司总是有可能离开或决定他们不想再做这项工作。如果发生这种情况,外包工作的公司基本上已经死了。
好的软件旨在提高用户的工作效率,这主要意味着了解人们的工作以及他们是如何做的。鉴于其中的组织和工作流程种类繁多,这需要设计人员和开发人员尽可能紧密地工作到应用点。将这些工作流程规范化为单个应用程序的所有尝试都不可避免地以与任何人的工作不匹配的软件告终。
基于当前可用的任何软件开发过程,我不会很快担心它。
服务器的管理是可以自动化的。运行良好的现代服务器场不再让系统管理员直接登录服务器。一切都通过自动化进行部署和管理。
与软件开发相比,每个单独的程序仍然必须由真正的人编写。创造行为没有自动化。正因为如此,软件开发更像是一门手艺,而不是一个行业。一个行业可以扩大和扩大。工艺只能通过分割成独立的组来扩展。这就是 1000 名开发人员项目的工作方式。他们完全由六人组成的团队组成。
所以,不,除非有人发明了一种真正的工具来自动化创建软件的行为,并将其从一门手艺变成一个行业,否则你不会看到与系统管理员相同的趋势。你所看到的是,低工资国家正在采用这种工艺,而雇用廉价工匠可能更具成本效益。请注意,我说的是“可以”,而不是“将”。软件开发的最大成本是沟通,而当您离岸时,沟通最有可能失控。
大公司愿意这样做,但它永远不会被完全拥有。一方面,大型组织将遭受一直困扰大公司的大量问题。
永远不要与一个有明确目标和编写好代码的技能的开发人员或小团队打赌。所有人都可以轻松获得最佳实践、出色的工具和知识。没有理由(事实上有很多理由不这样做)将开发转移到集中式组织。