当前位置: 首页 > 科技观察

直击灵魂:软件开发第一原则与10倍效率

时间:2023-03-18 16:57:25 科技观察

近日,埃隆·马斯克(ElonMusk)欲收购推特,闹得满城风雨。一些亏损严重的国内大厂(比如今年亏损800多,去年亏损1166亿,甚至超过一年的收入)应该想办法让马斯克收购。你为什么这么说?因为一个大厂一旦被马斯克收购,大厂的研发效率可以提升十倍、几十倍,员工可以裁员50%甚至90%,从而快速扭亏为盈成利润。这是因为马斯克的第一性原理运用得很好,性能提升10倍是大概率事件。如果说一般人的目标是在现在的基础上提高10%,马斯克的目标是在现在的基础上达到10倍。《连线》杂志的JackStewart发现,如果在马斯克的世界里,一件事情一年完成,在别人的世界里,则需要7-8年。比如马斯克创立的SpaceX公司的猎鹰9号火箭,不仅可以回收利用,而且再利用的周转时间已经缩短到21天。一次可发射53颗“星链”卫星。SpaceX火箭发射的成本仅为1960年代俄罗斯联盟号成本的3%(即1/30)。此外,马斯克于2017年创立了钻探公司,不到两年的时间,在旧金山建成了一条全长1.83公里的隧道。如果按照传统地铁方式开挖的估算成本是11亿,那么掘进公司的建设成本只有1000万,只是百分之一。言归正传,我们来讨论以下四个问题:第一性原则其实是一种思维方式软件开发的第一性原则是什么?在软件开发中,如何利用好第一性原理?利用好第一性原理带来的好处?1、第一原则其实是一种思维方式。最早提出第一性原理思维的人是古希腊伟大的哲学家亚里士多德,他将其定义为“认知事物的第一基础”,而著名的法国哲学家、数学家笛卡尔则将其描述为“系统地怀疑一切值得怀疑的事物”untilyouobtainanindisgutabletruth”(类似于批判性思维),维基百科的定义是:从基本规律推导和计算假设以及经验拟合。第一原理常被引申为“审视事物的本质,敢于质疑过去的设定,突破过去的认知,通过演绎的方法进行推论,最终得出新的结论”,可以说是认知的哲学思想事情,也就是分享和解决问题的思维方式。无论哪个领域,万物都有其本质,正如老子所说,“人法地,地法天,天法道,道法自然”。因此,我们要追溯事物的本质,即追溯自然规律和物理规律,从而把握事物最本质的特征,并对规律进行推演、分析和推导。根据事物的内在特性改变事物,进而了解事物在不同场景下的表现形式,而不是随波逐流、照搬别人的话,不会只看到事物的表面现象,不会照搬别人的系统,机械地处理和体验,不会在复杂的环境中被不确定因素影响而迷失了前进的方向。例如,电池是新能源汽车的核心部件,成本占整车比重很高。为了降低特斯拉的电池成本,马斯克的逻辑是,“我不管现在的电池有多贵,我只是回到本质,问自己一个问题:电池的硬成本构成是什么?它能反正要减,成本是多少?无非是铁镍铝等金属,除了采购这些金属的成本外,是绝对不可能减的,剩下的成本都是在这个过程中产生的人类合作,所以有优化的空间。”单一原则思维直击事物本质,产生的效果大相径庭,正如谷歌X实验室主任泰勒所说:“尝试做一个新事物,无非就是两种风格。一是微小的改变,如工艺改进、外形优化等,此时往往只能获得10%的提升;但如果你想实现真正巨大的创新(10倍的改进),通常你必须重新开始,尝试一种完全不同的方式,你必须打破一些基本假设。”就连硅谷也有一个流行的想法:把一件事情做得好10倍比10%要容易得多。一步步的进步靠的是努力和更多的资源,而10倍的进步靠的是勇气和创造力,靠的是第一性原理思维和熟练的工作。2.软件开发的首要原则是什么?“第一性原理”自2017年接受采访时提到马斯克以来,近年来在互联网和投资界开始流行,但在软件开发中并没有得到足够的重视。软件开发的首要原则是什么?一般来说,首先要思考一些与软件开发相关的基本问题,比如:什么是软件?为什么要开发软件?软件是如何开发的?软件从哪里来,到哪里去?例如:软件=程序+文档=数据结构+算法+文档,使抽象的软件更加具体,软件开发转化为数据结构和算法的设计与实现,文档的编写。一个软件的交付,不能保存数据结构和算法,但是可以保存文档,尽量简洁。当软件设计简单,UI界面非常友好时,就不需要任何用户手册了。今天的大多数应用程序都没有在线帮助(文档)。软件是如何开发的?简单来说,如果通过需求定义、设计和编程、测试、集成来构建,哪个环节可以省略?哪个环节的优化空间最大?按照一些管理者的习惯性思维,任何环节都不应该去掉。甚至有管理者说,每个环节都没有优化的余地,我们已经优化的很好了。是不是真的?软件实际上是在团队与内部研发人员协同开发的过程中产生的。正如马斯克所说,“剩余的成本是在人类协作过程中产生的,因此还有优化的空间。”而比尔·盖茨也说过“杰出程序员的价值是普通程序员的一万倍”。因此,软件开发的各个环节都有优化的空间,这也是为什么亚马逊团队招最优秀的人,追求像2-piecepizza这样的小团队。人工成本在软件开发成本中占很大比重,“人员优化”是最值得做的事情。软件开发第一原则:软件开发是人的智力活动,人是决定因素。因此,在软件开发中,需要优化所有与人相关的活动,包括个人能力和团队合作。3.如何在软件开发中用好第一性原理?从第一原则出发,要优化人员,首先要优化要开发的软件本身。就像,我在给学生讲解敏捷开发模型的时候,强调“分解研发组织”或者说“建立小团队”的前提是要开发的系统是可以分解的。系统分解得越干净,小团队的工作就越独立,工作效率就越有保障。这就是今天微服务和无服务器非常流行的原因。系统的复杂度取决于业务的复杂度。如果业务复杂,则软件系统不采用任何架构(微服务、无服务器等)。这个时候就必须进行业务重组,业务转型,或者业务架构优化。虽然业务驱动研发,但业务不是一成不变的,是可以改变的。我们要勇于打破商业常规,大胆创新。从第一条原则出发,优化业务和软件本身之后,我们就可以开始优化软件开发的各种活动,砍掉一些不必要的环节,把一些环节交给工具或者机器人,从而优化组织和团队。例如:是否可以自动收集需求?例如,构建用户反馈系统,自动收集用户需求;利用知识图谱、机器学习等对需求进行分析提炼;构建需求模型并自动生成代码;编程辅助机器人自动补码、实时代码检测分析等;封装成标准组件、原子服务等;使用JVM和容器技术减少对环境的依赖;集成自动化测试和自动化部署交付流水线...人太多往往是一件坏事,范登在他的一篇《低风险创业》书中说,如果你创业有很多钱,那不是一个好东西,因为钱多了,就会招人,做很多广告,买流量等等。产品不错,但最后钱花光了,产品卖不出去,还得下岗。少钱创业,不会把精力花在营销上,而是能省就省,脚踏实地做产品,以产品功能和质量赢得市场。道理是一样的。在软件开发中,一旦人手不够,我们喊缺人、招人,就不会努力去思考如何优化工作,如何减少不必要的浪费。不招人,日思夜想优化工作,反而带来高效率。当然,我们并不反对人多力量大,但如何有效分配人力,精准使用人力,也是追求更高研发效率的目标。被认为是经典战法之一),起源于抗日战争,成熟于解放战争,在抗美援朝战争中广泛使用,充分发挥我军优势在数量上减少敌人武器的优势。综上所述,软件研发的创新点很多。从第一原则出发,软件研发降本增效的基本要点是:优化一切与人(包括人和组织)相关的活动,招到合适的人,培养人。能把它放在第一位,尽可能少的招人做正确的事,以终为始,从客户真正的需求出发去构建软件,从业务架构和系统架构入手,质量内建,和追求极致的简单如果能让工具做的事情,尽量让工具标准化、组件化、原子化、服务化。更多内容还可以参考:软件开发效率的底层逻辑。4、利用好第一性原理带来的好处?如果从第一原则入手,就能做到“10倍效率”。事实上,你可能达不到10倍的效率。3次,也可能是20次、30次。即使是2倍的性能,它也相当不错。如果像腾讯、阿里这样的大公司业绩翻倍,那就是奇迹了。我们期待奇迹,相信奇迹一定会发生。