你应该了解这一软件开发的自然属性
创始人
2025-02-12 11:11:03
0

什么是软件的生产制造过程?需求收集,分析,设计,开发,测试,打包,发布;这些是软件的生产制造过程吗?

看上去好像没有问题,这不就是将软件从无到有制造出来的过程吗?好吧,那让我们用下面这张图来比较一下:一辆汽车的生产制造过程和一个软件的生产制造过程有什么区别。

一辆汽车的生产制造过程和一个软件的生产制造过程的区别

汽车上到生产线,工人按照既定的程序不停“重复”的生产着同样规格的产品,对于汽车来说,生产线上同一批次的汽车一定是一样的;对于软件来说,如果是同样的软件,生产的过程可以被简化为“复制”和“粘贴”。而我们所理解的所谓软件的生产制造过程其实对应的是“原型车”的设计过程,因为每次经历这整个过程的软件都不再是统一批次(版本)。

从这个角度来说,软件开发其实一直处于“设计”过程,而从来不会进入和传统制造业类似的“生产”过程。传统的瀑布模式的软件项目管理思路其实就是在用管理不停重复”生产“过程的方法来管理一个不断变化的“设计”过程,注定是不适合的。

[[191557]]

也许大家对汽车生产线还是不够熟悉,那我们来举个做菜的例子。你要做一道西红柿炒鸡蛋,正常的工序是:炒蛋,拿出,放油,放葱,放西红柿,放糖,放入炒好的蛋,放盐,出锅。没毛病,这就是一盘正常的西红柿炒蛋,按照这个工序,任何经过简单培训的人都可以很容易的快速复制这道菜。但是,假设你已经完成了放糖的步骤,这时候客人说他有糖尿病,怎么办?你只能倒掉西红柿从来,还好炒好蛋还可以用。又或者,客人点了西红柿炒蛋,上了桌客人说这个不对,我要的是黄瓜炒蛋 … … 作为大厨的你是否会提刀见客?好吧,其实软件开发的过程远比这个复杂,推倒重来算好的,盖好了大楼再拆掉地下室这种事在软件行业也是家常便饭,用户搞不清西红柿和黄瓜算好的,至少他承认搞不清,很多用户会要求你把黄瓜做成西红柿的味道。现在你理解为什么会有程序员暴打产品经理的事情出现了吧?

这就是软件开发的自然属性,它不是一门科学,更不是一门工程;因为科学和工程都是把已经解决的问题作为经验/定理,供大家重复使用;而软件开发更像是炒菜,就算是最有经验的大厨,每次的菜也都要重做,再详细菜谱也无法保证炒出一样的味道;环境,时间,材料甚至大厨心情的都会对味道有影响。更糟糕的是,至少做菜的材料和过程是可见的,软件开发的过程是不可见的,你看到的只是设计人员写了一堆菜谱,程序员不停的把代码扔到锅里,而这些好像和***那道菜都没啥关系。

牢记这一点,这才是软件开发的本质,任何希望用既定的计划去约束这个过程,任何希望用代码工人和管理流程代替开发人员的自主性和创造性的努力都将失败;软件开发永远在设计,就像陆远说的:每个厨子都是一名设计师。

[[191558]]

我要说的是:不会做菜的程序员不是好设计师 … … 但至少我们都是设计师,不是编码工人。

【本文为51CTO专栏作者“徐磊”的原创稿件,转载请通过作者微信公众号devopshub获取授权】

戳这里,看该作者更多好文 

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...