我要这天,再遮不住我眼,
要这地,再埋不了我心,
要这众生,都明白我意,
要那诸佛,都烟消云散!
---《悟空传》
很多人入行以后,都是靠一门语言,几个框架谋生,在这个行业摸爬滚打几年以后,会产生一些疑惑:作为热爱技术的码农,以后的路该怎么走?
我觉得有两个方向可供大家参考:一个是“上天”,一个是“入地”。
上天
“上天”的意思就是慢慢往上升,刚开始的时候就是在一些框架中做一个填空人员,在别人的指导下实现小块的业务需求,比如用spring,hibernate/Mybatis 去写税务软件的某一个模块。
后来职责扩大,自己开始负责一个或者几个模块,带着别人做开发,看到的领域也越来越大,开始向外扩展,去学习系统的缓存是怎么设计的,数据库读写分离,主从复制是怎么做的,session是怎么管理的,搜索是怎么实现的,消息队列是怎么用的,怎么做到高可用性、高并发等等。
由点及面,着眼系统整体和业务的全局,慢慢具备了设计系统架构的能力:把需求转化为合适的系统组件,让这些组件以合适的方式连接、部署、运行。
经过长时间的实践、历练和经验的积累,把很多东西都研究透了,知道各种技术的优缺点,终于迎来了质变的一天:突然发现自己具备了技术选型的能力,对于某种需求,能够选取合适的软件和技术架构来实现它。
这时候即使软件业发生了一些变化,出现了很多新技术,例如:DevOps,容器,微服务,前后端分离,Angular,React,CQRS等等,你发现稍加研究就能参透这些技术的本质,他们要解决什么问题,有哪些最佳实践,能否在自己的项目/产品中采用。恭喜,你已经成功上天了!
注意,我说并不是架构师,技术总监,CTO这样的title,而是一种能力。
那些“上天”的人讲究知识面的广度,对深度并没有极致要求,你可能并不了解一个软件的内部细节实现,但是一定知道这个软件的特点、能力、性能和使用范围。
入地
对于“入地”的人,恰恰相反,要求深度而不要求广度,要求是领域专家,一个形象的比喻是要求一个两厘米的口子得有两公里深。
“入地”的人专注于某一类技术,比如说有人特别喜欢安全领域,把各种攻击、防御方法研究透彻,成为了一个安全专家。或者有人就是喜欢搜索,把搜索引擎原理搞了个明明白白,成为了一个搜索专家。
很明显,“入地”要求一个人对这个领域真的超级感兴趣,要不然就经不起诱惑,耐不住寂寞,别人都热议云计算、大数据、人工智能,你还能静下心来要就动态字节码生成吗?你还能研究Tomcat的原理吗?
“入地”的领域非常多,例如安全、搜索、应用程序框架、缓存、JVM、分布式、RPC框架等。或者更加底层的数据库开发,Web服务器开发,编译器开发等。
这些领域对软件的正确性、安全性、可靠性、性能要求极高,所以从事这些软件开发的人,肯定得真正的精通操作系统、网络、算法等基础知识,这些人是真正的专家,收到大家的尊敬。
哪个更好
“上天” 和 “入地” 哪个更好,更高级?其实没有贵贱之分,就看一个人的爱好了,每一条路都不容易,都需要努力的奋斗才行。
最怕的是搞不成低不就,工作多年还是待在中间,那就容易被IT的大浪拍死在沙滩上了!
本文摘抄自《码农翻身》 -微信公众号