从事软件开发行业,我们免不了要使用软件:操作系统、虚拟机、IDE、消息队列中间件、缓存中间件、HDFS、各种预研的编译器、Tensorflow等等。
在我看来,虽然软件有无数种,但是每种软件的了解却不出以下几种维度——
第零层:
知道个名头,知道是干什么的
第一层:
会一些基本的使用(调用)并逐渐掌握到(60%以上)的使用方式
比如JVM和Java编译器,你会写一些Java代码,并在JVM上运行你的代码以实现一些功能
比如操作系统,你会一些基础的命令
比如redis,会搭建一个单机版,并可以使用其命令
第二层:
对大部分(60%以上)的配置项(设置项)都能懂
比如JVM,你会设置一些JVM的运行参数
比如操作系统,你会配置一些系统运行参数
比如redis,你会配置各种参数,这个时候你应该已经可以搭建各种类型的redis集群,并使用客户端对其进行连接
第三层:
对其源码大部分(60%以上)已经读懂,原理和运行机制已经深度理解
比如JVM,你对其源码已经基本吃透,这时候让你做一些移植和JVM裁剪、JVM源码修改、重新编译等工作已经不是问题
比如操作系统,同JVM
比如redis,你已经深度理解了redis的运行机制,redis自身的bug你已经可以解决,redis不满足你的要求你已经可以调整它的代码
第四层:
你已经对软件的社区和作者造成了深度的影响,你不断的提出建议或者意见,并提交解决方法,成为了社区名人,大家都觉得你很屌,甚至超越了原作者
比如linux,linus经常和你书信往来,并对你感到由衷的佩服,如果你比他年轻很多,他甚至会要求你做他的软件的继承人
比如JVM,Oracle公司决定高薪聘请你做他们公司的技术指导
第五层:
你越来越觉得到这个软件设计的不完善,都是些愚蠢的设计,并开发了一个同类软件,完全超越这个软件
比如linux,你已经做出了一个崭新的操作系统,你开发的操作系统,设计在当前看来几乎是完美,假以时日和宣传必定超越所有同类,一统该类软件的江湖,linus甚至为你让步,停止更新linux内核,并发布官宣
第六层:
你的软件已经站在巅峰,你觉得冯诺依曼机的架构已经不能满足你的需求,为了让你的软件运行的更好,你迫切需要一种崭新的计算机架构,于是你开始着手设计一种新型计算机架构来运行你的软件,从这以后你踏上了其他领域——也许你会涉足量子领域,也许你会搞生物,也许你的新设计会和相对论挂钩,或者你的新架构就是改造恒星?如果到这一层,凡人已经看不透你了,我觉得人类的未来就靠你了,你加油吧。
第七层:
还想看第七层是什么样的?醒醒吧!
(以上内容从第三层以后都是扯淡,仅供娱乐)