作为一个基层的技术领导者,平时工作你要面对各种各样的技术细节问题,技术基础成为你能不能作为一个好的技术领导者的前提条件。同时你做事的方式和方法,也是团队成员参考的一个标准,所以基层的技术领导者才是公司真正影响底层技术人员一个重要的标杆。
那如何成为一个好的基层技术领导者呢?
一、完全掌握基础技术
计算机相关的技术太多了,但是仔细分析却发现,只是表现的形式很多,而基础技术并不多。打好基础技术,能够让自己一通百通,更快地使用各种新技术,从而可以更轻松面对新的挑战。这其中可以分为编程和计算机系统部分。
1.1、编程
-
编程范式:各种编程语言都有它们各自的编程范式,用于解决各种问题。C++、Java面向对象编程,C++、C#泛型编程,JavaScript、Python、Lisp、Erlang函数式编程。
编程范式,有助于培养你的抽象思维,同时也可以提高编程效率,提高程序的结构合理性,可读性和可维护性,降低代码的冗余度,进而提高代码的运行效率。 -
算法和数据结构:算法是程序设计的有力支撑。适当地应用算法,可以有效地抽象问题,提高程序的合理性和执行效率。epoll中使用的红黑树,数据库索引使用的B+树,你业务系统使用的各种排序,过滤和查找算法等等。
1.2、计算机系统部分
- 计算机系统原理:CPU的体系结构、分支预测、缓存结构、总线、DMA、中断、陷阱、多任务、虚拟内存、虚拟化,内存的原理,磁盘的原理,固态硬盘,GPU原理等等。
- 操作系统原理和基础:进程、进程管理、线程、线程调度、多核的缓存一致性、信号量、物理内存管理、虚拟内存管理、内存分配、文件系统、磁盘管理等等。
- 网络基础:I底层的ARP协议,中间的TCP/UDP协议,以及高层的HTTP协议。
- 数据库原理:数据库管理系统两大类SQL与NoSQL。
- 分布式架构:负载均衡、DNS解析、多子域名、无状态应用层、缓存层、数据库分片、容错和恢复机制、Paxos、Map/Reduce操作、分布式SQL数据库一致性。
二、提高学习能力
学习能力指能够很快地学习新技术、又能在关键技术上深入的能力。那如何提升学习能力呢?
- 信息源:Google搜索引擎、Stack Overflow、Quora等社区、图书、API文档、论文和博客等等
- 与高手交流:通过技术社区以及参加技术会议与高手交流,参加开源项目和高手切磋。
- 态度:举一反三的思考、不怕困难的精神、开放的心态。
三、坚持做正确的事
做正确的事,比用正确的方式做事更重要,因为这样才始终会向目的地靠拢。
- 提高效率的事。学习时间管理的方式,管理好时间能显著提高自己的效率
- 自动化的事。能自动化的步骤,一定进行自动化
- 技术驱动的事。包括技术改变生活的事。自动驾驶,火星登录等
- 前沿技术的事。选择自己感兴趣的前沿技术,进行一定的学习
四、高标准要求自己
高标准要求自己,不断地反思、总结和审视自己,才能够提升自己。
- 技术嗅觉。充分利用信息源、GET到新的技术动态、参与技术社区讨论、丰富自己了解技术的角度。
- 多实践,学以致用。知识一定要多加使用,才更利于深入到技术的本质。
- 永远在编程。不写代码,你就对技术细节不敏感,无法做出可以实践的技术决策和方案。
以上只是一名合格技术领导者的硬实力,当然平时工作中还需要解决问题的各种软技能。比如:良好的沟通能力、组织能力,驱动力,团队协作能力等等。