源码全开放,没人看——一个框架作者的真实经历
源码全开放没人看——一个框架作者的真实经历先说结论好奇心是天生的。你不能培养它只能筛选它。我知道这话不好听。但这是我花了十几年得出的结论。被封锁的痛2007年我在一家公司做平台本地化。平台代码做了混淆类名方法名全换成a、b、c反编译出来像天书。我硬是debug 反编译跟了两周画了十几张A4纸的映射图把整个架构摸清了。那个过程很苦。但我超级不服气——凭什么不让我看你越封我越要看。这种不服气不是培训出来的。反过来我全开放后来我自己写了框架。从IOC容器到AOP到数据层到工作流一行一行写出来的。我的做法和那家公司完全相反源码全开放。所有用这套框架的公司所有开发人员都能看到完整的源文件。离职了带走。想改随便改。我以为这会点燃什么东西。没有。讲了一场JVM听后即完有段时间我主动组织技术分享。讲JVM——不是那种PPT念一遍的讲法是真刀真枪的内容ClassLoader——双亲委派机制为什么你的类加载器和Bootstrap的不一样自定义ClassLoader能干什么字节码加密解密——class文件在磁盘上是加密的ClassLoader加载时解密怎么实现JVM结构——方法区、堆、栈各存什么为什么字符串在堆里不在栈里初始化顺序——静态块、实例块、构造函数父类子类谁先谁后堆区结构——新生代老年代Minor GC和Full GC的区别为什么大对象直接进老年代Java为什么不用寄存器——为了跨平台JVM是一台虚拟的栈式机器所有操作压栈弹栈不依赖物理寄存器。这是Java一次编译到处运行的底层代价讲的时候有人在听。讲完之后没了。没有人回去自己试。没有人第二天来问我那个ClassLoader自定义的能不能给我演示一下。没有人。就像一场雨下在水泥地上当时看着湿了太阳一出来干干净净。慢慢就不讲了不是生某人的气。是慢慢接受了一个事实多数人不需要知道这些。他们需要的是这个接口怎么调这个配置项填什么值这个报错怎么解决。框架对他们来说是工具不是研究对象。这没有错。你用微波炉热饭不需要知道磁控管的原理。但这也意味着你永远成不了造微波炉的人。好奇心是筛选问题不是培养问题管理书上喜欢写如何激发团队的好奇心、“如何打造学习型组织”。我的经验是你激发不了。好奇心就像色觉。有的人看世界是彩色的有的人就是分不清红和绿。你没法教一个色盲看到红色同样你没法教一个不好奇的人追问为什么。你能做的只有两件事1. 招人的时候筛选。别问你会不会Spring问你最近自己折腾了什么。答不上来的大概率不是你要找的人。2. 给好奇的人留空间。别把所有人的时间填满。好奇心需要空闲才能生长。天天加班赶需求的人没有精力追问为什么。至于其他人——他们踏踏实实完成工作养家糊口这本身很好。不是每个人都需要成为架构师。最后我反编译别人的混淆代码是因为我受不了不让我看。我写框架开放源码是因为我不想让别人受同样的苦。但大多数人不觉得苦。他们觉得能用就行。这不是他们的错。这只是说明那个让我在凌晨三点还在debug的不服气是我自己的东西不是我能给别人的东西。相关阅读《debug驱动学习——三次debug改变我的技术认知》《造过轮子的人学框架有多快——我自己写完IOC和AOPSpring就是换个API》《老木匠、临界质量与Log曲线——一个46岁架构师的AI生存哲学》