本文主要是介绍软件的“矿”与“二流器件”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
软件的“矿”与“二流器件”
特斯拉、宁德时代、比亚迪全球买矿,斥资百亿押宝电池原材料,围绕着高镍电池及下一代电池的成本,电池企业秣马厉兵,试图掌握对上下游的定价主动权的“买矿时代”正在到来。
最近我们在“向下扎到根”的项目中,很多硬件项目也要深入到“沙子”这个层面,毫无疑问以硬件制造业为主的很多技术最后的根必须扎到最基本的“原材料”上。
电子器件要扎根于沙子中的硅,同样在“软件扎到根”的项目中,那么软件的“沙子”是什么? 大家自然而然的想到的就是“语言”、“数据库”,的确这些最基本的“元技术”如果不可获得,那么软件开发是要出大问题的。
同样,在很多硬件器件不可获得下,我们不得不用“二流器件”打造一流产品,同时要有帮助二流器件成为一流器件的责任和使命。
但最近的一些深入的对开源社区的细致洞察中,不禁思考一个问题,什么是软件业的“矿山”,什么又是软件行业的“一流器件”?我们在软件上面临用“二流器件”打造一流产品的同样的问题吗?我们在开发中用到的器件到底是“二流”还是“一流”的?
在得出结论前先举几个例子。
Go语言的出现编程效率极大提升,应该算是程序语言中的“先进要素”了,但如果你需要使用到高可用的分布式键值(key-value)数据库,你会选择从头来写一个,还是使用刚刚从CNCF毕业的etcd呢?
红帽的OpenShift已经是K8s商业版本的代表之作,Openshift中包含了两个已经开源并成熟的Operator来解决低延时场景的节点性能调优和应用性能增强,分别为Node Tunning Operator, Performance Addon Operator,如果你在开发中恰好需要开发低时延的解决方案,你会选择自己写呢,还是使用Openshift提供的成熟方案呢?如果你觉得自己写得好,是否打算在未来某个时间开源出去呢?
同样的例子还可以列举很多,大致分为几类。一类是最新K8s版本如提升性能?安全的机制的,只要切换最新版本就能获得的优势。一类是诸如性能调优Operator,或者单策略转换成多策略框架的Scheduler机制,如果你的应用不去调用或改写,即使切换新版本也使用的是老的模式。
当然,跳出K8s这样的开源项目,大型基金会或Github上还不断有新的项目冒出来,比如指标监控领域除去著名的Prometheus之外,还源源不断的有Thanos,Cortex, Chaos Mesh, OpenMetrics, OpenTelemetry等等在孵化的项目。同时,看到我们在商业版本的规划中,要么同样类似的功能按部就班正在路标队列中“排序”,要么架构师、客户甚至程序员自己早就希望换掉陈旧的代码和框架,但因为工作量或技术原因迟迟不能列入“特性规划”而一推再推,曾经令我们骄傲的代码反而成为食之无味弃之可惜的“鸡肋”。
由此,不由得想,软件和硬件或传统制造业极大的不同的确在于其开放和生产、制造是一体成型的,虽然也会用到一些其他国家的“螺丝刀”(编程IDE、语言之类的),但更多的器件和原材料的机理有很大不同,不是一个简单的“来料加工”,更不是简单的“元器件组装”。
如果硬要类比,我更愿意相信,软件的矿和沙子并不在大自然中,而是在人脑里,是在一个个鲜活的程序员的“大脑里”,如何在这些智慧的、分布式的“人脑”里挖矿,确保这里的矿山资源源源不断的“再生”或者“可持续”才是软件“扎到根”的更为关键的因素。同样,基于这个思考,进一步看,我们的软件“原器件”的先进性要素和可获得性,我们如果程序员不够“开放”,用的都是最原始的“沙子”(C,Java,Go等语言)来做开发,效率低下可想而知,即使用了几个诸如K8s,Openstack的开源部件,但如果版本同步跟不上,程序员和架构师对开源版本最新特性不了解,不掌握,勉强切换到最新版本,其实用的还是老的接口,旧的框架机制;更不用说,各大基金会中源源不断冒出的新的开源组件、项目,如果也不知道,那么我们就不得不低层次重复造每个“轮子”。
以上话题可以展开很多,希望更多机会后续能展开讨论。比如Vmware作为最大私有云厂商,为什么要在KubCon成为做分享31个议题最多议题分享者?为什么苹果也在KubCon上积极分享自己的技术和创新?为什么很多公司愿意把自己的“甩开对手几条街”的技术“贡献”给开源社区?等等。这些都没有绝对的答案。
但从最近的一些软件产业的变化和洞察开的这个“脑洞”如果总结几点,大概是:
第一, 软件的矿是无形的“智力资产”,基本存在于程序员大脑里,但挖矿地点应该是在开源社区、Github或开发现场;软件开发既制造既生产,一体成型。制造边际成本为0。
第二, 软件业中基本要素,程序语言,IDE等最多是螺丝刀之类,算不上“原器件”,如果不能及时获取、Sourcing业界最新的开源软件、架构和技术,基本上就一直是在开发和设计上被“锁死”在“三流器件”上。
第三, 获取软件“一流器件”、“二流器件”以及努力把“三流器件”升级为“二流或一流”器件,主要靠开放的程序员,开发的开发和设计,开放的社区,传统供应链控制很难管控。
总之,软件除去基本的连续性考虑之外,更应该担心的是如何提升能力,获得先进“一流”或“二流”器件,避免直接在原矿上开采、制造和低效率开发。在工业时代,能聚集起大几万程序员的“软件公司”如微软,如我司都是“现象级”企业了,听说最近字节跳动也即将迈入10万员工企业,但即便如此,在数字时代,在智能时代,如何用好全球程序员这个“金矿”才是生产力升级关键。
GitHub 最近发布了 2019 年度报告,GitHub 用户增长十分迅猛,新增了一千万用户,有超过四千万用户。2019年GitHub 用户新建了四千四百多万仓库,合并了八千七十多万 pr,关闭了二十多万 issue。刚刚过去的一年,又新增了一千万用户。如何与全球5000万程序员一起“挖矿”,挖这5000万程序员大脑里的“矿”可能更是值得我们思考的问题。
而获得先进器件的能力瓶颈主要在有多少能驾驭开源社区的“程序员”,即使要去挖矿,也应该迎着朝阳,踏上“远山”,高效、智慧的挖出更具价值的“矿”和“一流器件”。
这篇关于软件的“矿”与“二流器件”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!