看到标题中的 领导 两个字眼,不要以为我准备谈程序员如何转行做管理。这里的技术领导力指的是 技术上的领先、技术上的优势 ,而不是领导他人。
在谈技术领导力之前,我们首先要相信, 做技术有前途 。如果我们内心都不相信做技术是一条不错的出路,我们又怎么能专心向这个方向努力呢?现实是,我们可以在很多场合都能听到程序员技术做不长,吃青春饭,商业模式比技术更重要,等等。这样的言论听多了,会干扰我们对未来做选择,毕竟人活在当下,还要考虑未来。
我们先捋一捋 做技术是不是真的有前途 。
技术重要吗?
现在网络上充斥着 35岁危机 的话题,大意就是说程序员是编程的农民工,干的都是体力活,加班很严重。到了35岁,体力下降,自然竞争不过年轻人,由此推断做技术没有什么前途。更进一步是建议大家要有危机意识,要未雨绸缪,提前转管理或是转行。
这样乍一想也对,从大学毕业到 35 岁,也就是 10 多年的时间。而现代人普遍寿命越来越长,活到 80 多岁是大概率的事情。这之后还有 50 多年的时间,除非暴富,否则是挣不到下半辈子够花的钱的。想到凄惨的后半生,提前做一些准备也是对的。
其实看看国外,五六十岁程序员并不少见。我之前写过一篇文章《 为啥你身边没有40+的程序员 》,对此现象进行了分析,这里再补充一下。
中国自改革开放以来,直到现在仍处于加速发展中。这个过程中,遍地机会,公司可以通过“野蛮开采”来实现自身业务的快速拓展和扩张。这就如同改革开放初期,生产家电,不需要太好的质量,只要能生产出来,就不愁销售不出去,因为那时的中国,普遍处于物资匮乏的阶段。
但是,这是常态吗?
很显然不是,如今家用电器市场竞争如此惨烈,没有过硬的质量,根本就无法存活。这就倒逼厂家投入研发,不断采用新科技提高竞争力,以至于中国人开始惊呼各个领域开始 内卷 。
有人说,理是这么一个理,但是现在就业市场上确实大部分招聘上都写着 35 岁以下这个条件。这依然不会是一个常态,中国和中国的公司也不会这样一直走下去。
首先,看看现在的阿里、腾讯、字节跳动、京东等互联网公司,表面上是做电商、社交、媒体,实际上都是技术驱动公司。在竞争日益激烈的今天,如果不去发展自己的核心技术,提高技术领导力,不从早期的业务型公司转变成为技术型公司,就会走下坡路。这方面,百度就是一个典型的例子,将自己定位成一个广告公司,开始走下坡路。这几年开始醒悟过来,发力人工智能、无人驾驶等新技术,重新走上技术驱动之路。
其次,现在的国际环境也逼迫着中国走向技术创新之路,比如之前采用拿来主义的芯片、操作系统、基础软件,等等,都得到国家的大力扶持。企业也开始明白,打造自主可控的产业链,才能抵御外在风险。这么些年来,华为是这方面的典型,其实阿里、腾讯、字节跳动等公司在操作系统、数据库、云计算等基础设施软件上的投入也很大。这些基础软件的研发,都不是一朝一夕就能完成,相关人才也不是培训机构能够速成的,在这样的氛围下,还担心以后老了竞争力下降么?
最后,如果进入一家公司,既不尊重技术,也不尊重技术人员,赶紧走人,在这样的公司确实干不长久。
所以,无论是一个国家,一个公司,还是一个人,在今天这样技术浪潮一浪高过一浪的形势下, 拥有技术不是问题,而问题是有没有拥有技术领导力 。
只有拥有 技术很重要 这样的信念,我们才能在孤独的技术之路上勇敢的走下去。
什么是技术领导力?
技术领导力不仅仅是呈现出来的技术,而是一种可以获得绝对优势的技术能力。
我们回顾一下,从蒸汽机时代,到电力时代,再到信息时代,科学技术推动生产力的发展,转化为直接生产力的速度在加快。这其中,首先是 关键技术 的突破,可以让我们建造很多更牛的工具。而这些工具促进了生产自动化,大幅提高生产效率。技术推动人从劳动密集型的工作中解放出来,去做更高层次的知识密集型的工作。
聚焦到 IT 领域,技术领导力是:
-
尊重技术,追求核心基础技术。
-
追逐自动化的高效率的工具和技术。
-
开发抽象和高质量的可以重用的技术组件。
-
坚持高于主流的技术标准和要求。
看到这里,估计有很多人会打退堂鼓。我就一普通人,何德何能,能做出改变人类的技术革新?
我们要明白,这个世界是由少数天才推动的,比如牛顿、爱因斯坦这样的绝世天才,多少年才会出现一个。但普通人一样能推动社会进步,因为这世界的技术有两种:
-
一种是像从马车时代到汽车时代这样的技术,也就是汽车的关键技术 —— 引擎
-
另一种则是工程方面的技术,而工程技术可能是让汽车更安全、效率更高、更加舒适。
对于第一种,确实只有少数人才能完成发明或创造,但对于后者来说,所有的工程师都有机会,所以不妨碍我们拥有技术领导力。
如何拥有技术领导力?
作为一个软件工程师,我们怎么让自己拥有技术领导力呢?总体来说,可以从以下几个方面努力:
-
扎实的基础技术
基础技术是各种上层技术共同的基础。吃透基础技术是为了更好地理解程序的运行原理,并基于这些基础技术进化出更优化的产品。对于技术人员来说,基础知识越扎实,走得就会越远。
更重要的是,学好基础技术,能让你一通百通,更快地使用各种新技术。现在很多程序员抱怨技术更新太快,但是如果我们静下心来分析,你会发现,只是表现形式很多,而基础技术并不多。如果能做到触类旁通,再多的新技术也不怕。
哪些才是基础技术呢?可能看这个清单,又有不少人从入门到放弃。没有办法,这就是人性的弱点,只有克服了,才能让自己更加强大。所以,不要担心自己是不是编程的这块料, 以大多数人的努力程度之低,根本轮不到拼天赋 。你至少在别人刷抖音、微博的时候,稍微多努力一些,就能超越大多数人。
下面是一些基础技术的清单:
-
C语言
-
编程范式
-
算法和数据结构
-
计算机系统原理
-
操作系统原理和基础
-
网络基础
-
数据库原理
-
分布式技术架构
需要明白的是,上面这些基础知识难以速成。如果能将所有技术都钻研透,那是绝对的大牛。我们可以先从一两项着手,认真研读相关的书籍和论文,做一头小牛。然后才是终身学习,慢慢成为大牛。无论怎样,这些基础技术值得你用一生的时间来学习,因为基础上的技术和知识,会随着阅历和经验的增加而有不同的感悟。
-
非同一般的学习能力
毕业生或者初入职场的新手经常会强调自己有很强的学习能力,毕竟这个阶段没有什么拿得出手的东西证明自己,但不是每个人都清楚学习能力是指哪些方面。
所谓学习能力,就是能够很快地学习新技术,又能在关键技术上深入的能力。
现在的互联网这么发达,搜索引擎如此强大,并不是说找到现成答案就是学习能力强。
一些提升学习能力的做法:
-
寻找优质的信息源。好的信息源就可以更快速地获取有价值的信息,并提升学习效率。做技术的人应该认识到, Google 搜索引擎、Stack Overflow 比百度更优质。如果能到社区里去找作者或者其他人交流,收获会更大。
-
与高手交流。程序员可以通过技术社区以及参加技术会议与高手交流,也可以通过参加开源项目来和高手切磋。
-
举一反三的思考。
-
不怕困难的态度。
-
开放的心态。实现一个目的通常有多种办法。带有开放的心态,不拘泥于一个平台、一种语言,往往能带来更多思考,也能得到更好的结果。而且,能在不同的方法和方案间做比较,比较它们的优缺点,那么你会知道在什么样的场景下用什么样的方案,你就会比一般人能够有更全面和更完整的思路。
-
坚持做正确的事
这里”正确的事“,并不是一种价值判断,而是将精力集中在:
-
提高效率的事。
-
自动化的事。
-
掌握前沿技术的事。
-
知识密集型的事。
-
技术驱动的事。
计算机技术是一门实践性非常强的学科,实践的重要性怎么强调也不为过。学习知识,一定要实际用一用,可以是工作中的项目,也可以是自己的项目,不仅有利于吸收理解,更有利于深入到技术的本质。并可以与现有技术对比一下,同样的问题,用新技术解决有什么不同,带来了哪些优势,还有哪些有待改进的地方。
最后,即使你以后走上技术管理岗位,或者架构师岗位,也不要放弃编程。不写代码,你就对技术细节不敏感,无法做出可以实践的技术决策和方案。