阅读本文大概需要5分钟。
“洋哥我工作好多年了,目前在一家小公司,一直想成为技术专家,但身边的人包括领导能力都一般,不知道我应该怎么锻炼才能达到技术专家的水平。”
这是今天一个读者的提问,技术专家在业内对标阿里P7水平,也是很多程序员的职场目标之一。
在互联网行业技术专家一般承担着团队攻坚任务,比如各种稀奇古怪的线上bug、高性能/高并发/高可用问题、技术架构的制定等等。
读者的问题勾起了我的回忆:2011年在我工作三年之际,在360晋升到技术专家,随后虽然走上了技术管理的岗位,但屡屡在攻坚之际还会自己上。
结合过去的经历,跟大家分享三点:
1.业务环境
成为技术专家首先要有业务环境,脱离业务环境谈架构师就是耍流氓。
这个道理很简单,在大厂工作的程序员肯定比小公司程序员更容易成为架构师,因为他们天然就能处理千万并发、过亿日活所带来的各种问题又或者他们的业务环境足够复杂足够有深度。
技术人的成长路线首先离不开环境,这不是纸上谈兵看看书,自己做做demo就能解决的问题。
所以我也给提问的读者一个建议:想办法进大厂,哪怕职位和薪资下降,大厂才是技术专家的温床。
我的第一份工作是在腾讯做QQGAME大厅研发,还记得刚毕业就承担千万级别用户的挑战,那段时间真的是痛苦到抓狂,用户的各种稀奇古怪还不能复现的问题一度让我怀疑人生,但回过头看这段时光,给我的程序员职场生涯打下了坚实的基础。
当然这里提到的大厂并不一定是BATTMD级别的,只要符合:用户量大或业务复杂度高即可。
比如SaaS/PaaS行业的独角兽公司,估值可能并不高,但依旧可以充分锻炼人。
2.技术深度
技术专家必须在某个垂直技术栈有足够的深度,简单点说要知其然更能知其所以然。
锻炼技术深度没有任何捷径,首先要有刨根问底的精神而不是把工作做完交差了事,在这个基础上不断钻研 检索资料,这些资料包括:计算机经典书籍、经典开源代码、同事的优秀代码、优秀的架构设计思路等等。
比如Docker技术兴起,改变了CI/CD的方式,推动了云原生技术的发展。那么Docker到底是什么东西呢,其底层无外乎:CGroups进行资源限制、Namespace对进程视图修改、rootfs为容器进程提供隔离后执行环境的文件系统。
了解了Docker的底层原理,才能在实际工作中更好的驾驭Docker。
再举个应用场景的例子:一提到分布式锁问题,大多数同学想到的方案是基于Redis的Master-Slave模式来实现。这个实现方案行不行?分布式锁本质是一个CP需求,基于Redis的实现是一个AP需求,乍一看基于Redis的实现是无法满足的。
3.技术专家的四维力
技术专家还必须具备的四种能力: 技术先见能力、技术构思能力、体系输出能力(影响力)、适应矛盾的能力。
技术先见能力:能准确预判技术和业务产品的适配性,这个就需要不断实战积累了。
技术构思能力:拆解产品业务,设计框架,落地框架。
体系输出能力:能总结技术方法论,并具备沟通及输出能力。
适应矛盾的能力:如何平衡性能和工期、如何平衡空间和时间、如何协调资源,推进项目进展等等。这些统统是适应矛盾的能力。
如何具备以上这些能力呢?无外乎多实战、多总结复盘、工作之外的时间多学习并把学习到的东西应用在工作中,同时还要培养自己的沟通表达、整理输出等能力。
在提升自己的同事尝试多做输出,比如把好的框架抽离出来放在github上、再比如可以尝试写写技术博客等等。
另外还要尽可能争取带团队的机会,只有能负责更大的scope才能加速进步。
以上三点持续做并且做到位,相信大家一定有成为技术专家的可能。
之前写过一篇总结程序生涯的文章,里面有一些技术攻坚案例,感兴趣的朋友可以看看:十三年了!
另外再唠叨一句:程序设计和实现不是一种线性能力,像经验、编码能力、工程能力、知识、学习新知识的能力、对无用部分的识别等这些就不仅仅是线性优势,汇聚到一起会对编程产生倍增级效应。
希望大家在工作中掌握正确的方法,耐住寂寞取得成绩,一起共勉~