软件之“工厂技术”(上)

文章讨论了软件行业中,单纯依赖方法论、流程和项目管理无法显著提升软件水平的问题。作者指出软件工程已陷入困境,而依赖天才架构师也不是解决之道。文章通过特斯拉的超级工厂为例,引入“工厂技术”概念,强调软件开发需要兼顾大规模协作与个体工匠精神。作者认为,开源文化及其社区的开放、协作和创新特性,可能是提升软件工程能力的关键,并提出关注个体技能与群体协作的有效结合,是掌握这种“工厂技术”的核心。
摘要由CSDN通过智能技术生成

软件之“工厂技术”(上)

“黑客也是创造者,与画家、建筑师、作家一样”
——硅谷创业之父,YC创始人,《黑客与画家》作者保罗.格雷厄姆

毫无疑问在ICT融合和智能时代,除去计算产业的计算机架构和芯片工艺上的演进外,最激动人心的就是世界进入“软件时代”。保罗这里提到的黑客就是典型意义上的软件手艺人,工匠。

大家在讨论软件的时候却依然用工业时代的思维或学院派的术语去讨论他,把软件简单看做一个产业或科学来探讨,使得在大规模提升一个企业的软件水平成为了一个老生常谈但又无所适从的“难题”。

软件工程似乎是通用的答案,公司也发起了提升软件工程能力的大型变革项目,也愿意为此付出巨大代价。但是毫无疑问,深入了解和从事过软件开发的人都知道,或者行业内人士都知道,软件工程已经走向死胡同,作为一个学科也停滞不前很多年了。简单通过方法论,流程,项目管理已经无法在软件领域产生很多有价值的成果,过去几年稍微流行过的极限编程,敏捷开发等也并未给行业带来多大变化。大家热衷的云原生的很多技术,究其细节也还都是帮助开发者如何制作工程文件,打包,镜像环境和测试,发布等。在很多程序员高手眼里,软件工程更成为负面的词语,因为软件工程似乎代表了一种“让不会编程的人在一起也能做出高质量程序”的代名词。

既然,方法论不管用,那么就呼唤“英雄”。现在讨论软件的很多话题最后都会落脚到,需要一些天才或很牛的架构师。这在直观上是最让人信服的,在贯穿整个IT产业的各种传奇故事中,或多或少都有这样的“传奇人物”,包括谷歌的大牛“Jeff Dean”。但可惜,过完嘴瘾之后,就得问,这样的人如何培养,如何找?共识是有的,培养似乎培养不出来,找也不好找。难题都抛给HR,也是无解。天才般的人物可遇不可求,其性格、对环境的要求都很难满足,更何况,如果一些大公司有这样的天才人物,那还不得看好他,么又怎样会轻易让他在人才市场上“晃”呢。

靠方法论不行,靠HR招聘远水解不了近渴,而且也无法保障天才能被发现,以及发现了能在这里生长。想大规模提升程序员能力,也发现简单的培训,上课,甚至考试,认证都不是很有效的办法,因为这类方法对传统制造业工人很有效,但的确对软件这样一个有创造性,难以度量其生产效率的行当来说,的确很难。

随着近几年对开源社区的观察和体会,越来越感觉到软件是一个神奇的产业,其规律是介乎在大规模制造和早期手工作坊之间的一种行业,他对从业人员要求也是综合的,这些人既要有工人般的协作,又要有工匠般“手艺人”的个体贡献和能力。同时,在复制的时候难度有很大。仅仅靠流程,制度甚至方法论和一切能写在纸上的东西都无法复制,类似以前CMM认证,也无法有效规模复制这样一种能力,这里姑且把之称呼为“厂”的能力或“技术”。

与之相对应的可称之为“实验室”技术,比如制药,化学,电子仪器类,只要科学家在实验室测试,验证了,就可以利用过去发展的一些企业大规模制造和工业管理思想来规模化提升其质量,成本或效率。当然,制药在临床验证阶段也稍微复杂一些,需要利用在统计学上发现的大样本“双盲随机”实验来验证。但这些都很难比的上软件工厂的复制和验证难度。所以,严格意义上软件既不是科学,也不是工程,还是一种“艺术”,但ICT行业和信息化、智能化时代,对这种手艺人又有大规模、可复制的需求,这是当下一切软件管理的难题症结所在。
在这里插入图片描述

好在近期,有一项工作可以作为类比很好的解释。这就是特斯拉(Tesla)在上海的“超级工厂”,能非常形象的诠释笔者这里给出的“工厂技术”的概念。如何制造Tesla,应该说技术早就成熟了,如何规模制造Tesla在美国的“超级工厂”也早就验证和实践完成了。那么问题来了,建造一个上海Telsa“超级工厂”就很容易了吗,在全球其他地方复制这个“超级工厂”就会很容易吗。答案当然是否定的,这一点从埃隆马斯克在上海的工厂建成仪式上的兴奋和舞蹈可以看出,这样的“工厂技术”的特质。当然,当年马斯克在加州第一个“超级工厂”不眠不休睡在公司好几个月,也可以窥豹一斑理解这点。

有这样一种产业,看起来方方面面都不是难度最大的,技术,单个人员技能,方法等等都是成熟的,在一个小房子或实验室把结果做出来也不难,难就难在规模,在成百上千人一起,在数千平米的厂房或办公区域大规模协作,如何稳定、持续、可信的作出产品,就“难上加难”。工业界的“液晶面板技术”,Telsa的“超级工厂”以及ICT的芯片业也是这样的例子。那么,我个人认为,对软件工程能力也要提升到“工厂技术”这样的高度来认识。
在这里插入图片描述

找一两个人来研究算法不难,找十几个人开发个验证版本也不难,偶尔一个时期,一个合适的小团队(恰好有这么一批能协作的人)作出几款产品也不难,而如何持续、稳定的开发、维护和迭代创新的开发大型软件,那才是难上加难。少数软件大公司如微软等是有这样的能力的。而希望具备这样的能力的公司简单去“挖人”或招聘“工程师”恰好走上误区。因为“工厂技术”的核心是综合人,环境,协作,方法,难以言状的技巧的一个综合“系统”技术。单纯从一个单点上去提高,都有“缘木求鱼”之嫌,容易走上“刻舟求剑”的歧途。这些绝对不是某几种编程语言的编程指南能代替,这里的“知识”和Know How可能就是成百上千的工程师的博客,也可能就是存在在项目组或公司的技术论坛中的帖子,还有就是存在在工程师大脑里的“经验”。但单个人的技巧或经验又无法起到向这样成百上千人在一起协作的经验叠加,在解决更多客户需求中创造性的能“发挥”出来。它即是一种状态又更多是一个“过程”。

而软件这个“工厂技术”相比上述液晶面板等难度更甚,很多人现在讨论的公司的“基因”多少也是软件工厂技术的一个特征。也就是在上述工厂技术的特质上往往还有公司文化、创始人或管理层导向等等更多复杂的“因子”。那么就没办法了吗,说实在的真没有很好的“万能药”,唯一看到可行的是自从软件诞生之初就伴随而行的“自由软件文化”比较反应了软件行业的规律和本质,由此演化而来的“开源文化”和“开源社区”是一种随着ICT产业蓬勃发展一直隐含伴生的,在地下流动的“岩浆”或“泥石流”。开源软件社区的开放,协作和创新以及自组织、扁平化可能是当下帮助企业构筑和规模提升其软件工程能力,构建难以复制,难以学习的核心软件竞争力的“工厂技术”最好的方法。
在这里插入图片描述

所以,本文是跳出开源软件社区作为一种文化或产业手段来看开源社区,他可能更是符合当下或未来开放式创新,规模协作的一种“软件工厂技术”,如何既关注这些人的技能提升和成长,又关注这些人在一起做的事情的有效性,如何能不是简单的把人、事情(产品)分开,又不“形而上”的简单归纳为人力资源或流程质量的事情。

如何能更好的驾驭这样的“工厂技术”甚至决定了一个企业在ICT产业中的竞争力和领导力。

进一步探讨待下篇。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值