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

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

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

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

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

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

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

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

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

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

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

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

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

进一步探讨待下篇。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月11日
下一篇 2021年1月11日

相关推荐