软件开发的未来






2.36/5 (8投票s)
最近我一直在深入思考软件开发的未来以及我对其发展方向的看法。大学毕业后,我曾在七家公司工作(两家设计工作室、两家软件工作室、一家社区创业公司、一家互联网银行和一家投资银行),我的结论是……
引言
最近我一直在深入思考软件开发的未来以及我对其发展方向的看法。大学毕业后,我曾在七家公司工作(两家设计工作室、两家软件工作室、一家社区创业公司、一家互联网银行和一家投资银行),我的结论是,我在大学里学到的所有 SSADM(结构化系统分析与设计方法)或开发生命周期在现实世界中都行不通。是的,如果你能向客户收取两百万的费用,让他们等待两年才能交付一个内网系统,那你可以随心所欲,但如今,客户的业务发展太快了,这套方法已经不再适用。一年前甚至两年前开始的项目,在我们公司现在已经过时了,必须被废弃并重新开始。或者,如果业务从一开始就深度参与你的需求规格,而且他们根本不明白“已批准”意味着什么,你只会得到一个结果:你永远无法完成项目,即使完成了,也无法满足业务需求(80%综合征)。
考虑到这一切,我们需要专注于软件工厂和 Web 服务,这将使我们能够缩短上市时间并提高客户满意度。要做到这一点,你需要两个独立的团队以及它们之间的接口。
为什么是软件工厂?
软件工厂是应对日益增长的缩短开发生命周期需求的答案。你可以预先构建和测试大块代码,为构建特定类型的应用程序做好准备。如果你编写有效的、经常使用的软件工厂,你甚至可以在项目开始前就达到 80% 的完成度。
为什么是 Web 服务?
使用 Web 服务的主要原因是集中访问数据和功能。如果你用 Web 服务构建你的联系人管理系统,那么任何需要部分或全部数据的其他系统都可以与之链接。如果你用 Web 服务构建你的地址检查系统,那么任何时候你在任何应用程序中需要一个地址,你都可以利用相同的工具。
工厂开发团队(大脑)
工厂团队的职责是生成通用的代码包,供许多应用程序使用,从而使产品团队的工作更轻松、更快速。这可以是在完全通用的层面,比如微软的 Web 服务软件工厂,也可以是在特定层面,例如,实现 Dijkstra 算法作为一个工厂。工厂团队的成员将花费大量时间在工厂解决方案的研究和开发上,并快速将任何新技术整合到他们的模型中。工厂团队必须由最顶尖的、大师级以上的开发者组成,才能从中获得有用的解决方案,并且他们需要能够快速适应,如果整个工厂由于业务方向的改变而被放弃,并需要从头开始构建一个新的工厂,他们也不能因此感到沮丧。对工厂团队来说,测试和稳定性至关重要,因此需要时间才能达到正确的水平。
产品开发团队(四肢)
产品团队专注于利用工厂团队提供的工厂,快速交付有效的业务解决方案。该团队的开发人员只需要具备平均水平的技能,就能有效地使用提供的框架。解决方案的测试时间将大大缩短,因为最复杂的代码部分将由工厂团队完全测试过,这应该就像使用现成的盒装产品一样。
开发者布道师(神经)
在这种情况下,开发者布道师的职责(尽管他们还有其他角色)是帮助开发人员掌握软件工厂,并将产品团队的任何反馈带回工厂团队,供他们在下一版本工厂中进行整合。此外,他们还应确保任何开发生产问题都能有效地传达给工厂团队。这可能是最重要的角色,集培训师、开发者、外交官和谈判代表于一身,其目标是为企业(无论是内部还是外部项目)创造更多价值。开发者布道师应该了解并能够熟练使用所有新技术,以便在出现新的工厂机会时提醒工厂团队,并对产品团队进行相关培训。他们应该与产品供应商保持良好联系,以便让整个开发和管理团队了解新功能可以带来的优势。
有了这个模型,你的企业将能够有效地交付解决方案,为你的企业或你的客户的企业提供相对于竞争对手的优势。是的,开始这种方法需要奉献精神和毅力,因为建立你的初始软件工厂需要时间。显然,如果你已经有一个正在开发解决方案的团队,那么改变将几乎不可能,但如果你刚起步,并且有自由从头开始构建开发团队……