工作到第五年,我开始害怕了。
害怕的不是写不出代码,而是每天写的都是同样的代码。增删改查,接口文档,联调测试,周而复始。五年下来,除了熟练度,好像没什么长进。
直到有一天,一个刚毕业的同事问我:“哥,Spring Boot启动的时候到底发生了什么?”我张了张嘴,发现自己答不上来。那一刻我意识到,我写了五年Java,其实一直活在黑盒里。
一、教育的困境:为什么大多数程序员停在CRUD?
中国的程序员培养体系,有一个很奇怪的现象:学校教理论,不教实战;工作教实战,不教理论。结果就是,很多人会写代码,但不懂代码;会用框架,但不懂框架;能调通接口,但不懂底层。
学Java的人最多,但真正懂Java的人最少。Spring Boot一键启动,MyBatis自动映射,JPA帮你生成SQL。你用着舒服,但也因此失去了理解的机会。
老师说:“CRUD程序员和架构师的差距,不是代码量,是认知深度。”
什么叫认知深度?就是看到现象能想到本质,看到结果能推导原因,看到问题能定位根因。一个接口慢了,CRUD程序员会加索引、加缓存;架构师会看执行计划、分析锁竞争、排查网络延迟。前者解决问题,后者理解问题。
教育的困境在于,大多数人满足于“能干活”,不愿意“搞明白”。因为搞明白太慢、太难、太折磨人。
二、科技的纵深:从“用框架”到“懂框架”
Java架构师课程要做的,就是帮你打开那些黑盒。
Spring Boot启动流程是什么样的?@Autowired怎么实现依赖注入?事务注解背后发生了什么?MyBatis怎么把接口和XML映射起来的?Netty的Reactor模型怎么工作的?
每一个问题背后,都是一条通往底层的路。
我第一次跟老师读Spring源码的时候,整个人是懵的。几百个类,几千行代码,层层嵌套,绕来绕去。但跟着跟下来,突然有一天,我发现自己能看懂了。不是记住代码,是理解了设计者的思路:为什么这么分层,为什么这么命名,为什么这么处理异常。
那一刻的爽感,比写完一万行代码都强。
老师说:“框架是别人写好的代码,但不是黑盒。打开它,你才能变成写框架的人。”
三、人文的思考:技术的尽头是哲学
学得越深,越发现技术其实是有共性的。
并发问题的本质是资源竞争,设计模式的本质是解耦与复用,架构演进的本质是权衡与取舍。这些道理,放在技术里成立,放在生活里也成立。
有一次老师讲CAP理论,说分布式系统只能在一致性、可用性、分区容错性之间三选二。然后他问:“你们觉得人生是不是也是这样?”
教室里安静了几秒。那一刻我忽然明白,学技术不只是学技术,是在学一种思维方式。怎么权衡、怎么取舍、怎么在约束条件下找到最优解。这些东西,写代码用得上,过日子也用得上。
老师说:“好的架构师,首先是好的思考者。”
四、经济的逻辑:为什么架构师值钱?
市场上Java程序员很多,但架构师很少。为什么?
因为架构师不是“写代码”的,是“做决策”的。技术选型选什么?团队分工怎么分?系统怎么拆分?瓶颈怎么优化?风险怎么规避?每一个决策都影响成本、影响进度、影响结果。
企业愿意为这些决策付钱,因为一个好决策能省几百万,一个坏决策能亏几千万。
更重要的是,架构师的能力是“复利”的。CRUD写十年,还是CRUD;架构做十年,经验越积越厚,判断越来越准,价值越来越高。
老师说:“CRUD是卖时间,架构是卖判断。时间有上限,判断没有。”
五、学完之后,我变了什么?
课程结束之后,我最大的变化,不是会画架构图了,是看问题的角度变了。
以前遇到一个需求,我第一反应是“用什么框架”。现在第一反应是“为什么要做”“怎么做更好”“有没有更简单的方案”。
以前看别人的代码,只会看对不对。现在会看为什么这么写,有没有更好的写法,换我我会怎么写。
以前觉得自己是“写代码的”,现在觉得自己是“解决问题的”。
前几天那个刚毕业的同事又问我:“哥,你说我该怎么成长?”我说:“别满足于会写,要追求懂。每一个黑盒,都值得你打开看看。”
那一刻我想起五年前那个被问住的自己,心里默默感谢那些熬过的夜。
老师说:“告别CRUD,不是为了不写代码,是为了写更好的代码。”
现在,我终于懂了。
暂无评论