人们常说,与制造业相比,软件产业还不成熟。特别是关于过程驱动。
问题:作为开发人员,我们可以从制造过程中学习吗?采用他们的流程是否可以提高软件开发的成功率?
我的观点:在制造产品时,产品的生产很大程度上是过程驱动的。您可能有一家工厂,每个人都有他们要遵循的一组特定任务。工人(或机器人)可能整天拧紧螺丝。然后,下一位专家将执行该过程中的下一个任务。工人(和机器人)不会阻止过程,也不会“动态”地弥补问题。零件在整个过程中都经过搅动,输出是成品。它运作良好,公司获得了99.99966%的无缺陷产品。随着时间的流逝,公司消除了效率低下的问题。这令人印象深刻,并且很可能是行业成熟的标志。
在制造过程中,定义的过程可以从字面上创建最终产品。我认为在软件中不是这种情况。我们可能有用于源代码控制,代码审查,检入表,需求收集,SDLC等的流程。但是执行这些流程并不能本身创建成品。这些过程可能是有益的,但与实际创建正交。
假设您的公司与软件开发公司签有合同,该软件将搜索数百万张图像以查找罪犯的面孔。尽管有繁重的过程驱动环境,开发人员仍必须“即时”创建事物。动态地做事违背了制造业的精神。机器人无需考虑即可执行良好的制造过程。
为了创建尚未在人的脑海中扎根的复杂算法,必须实时创建事物。软件开发不是过程的后续,而是计算机要执行的过程的创建。那是根本的区别。无论我们围绕开发进行了多少正交处理,我们在创建时总是会“动态”进行。
与我交谈的每个人似乎都同意制造业的观念。我一个人在想吗?