大家好,我是 Snow Hide,作为《左耳听风》这个专栏的学员之一,这是我打卡的第 60 天,也是我第 84 次进行这种操作。
今天我温习了该专栏里一篇叫《如何才能拥有技术领导力?》的文章。
关键词总结:吃透基础技术(编程部分:C 语言、编程范式、算法和数据结构。系统部分:计算机系统原理、操作系统原理和基础、网络基础、数据库原理、分布式技术架构)、提升学习能力(学习的信息源、与高手交流、举一反三的思考、不怕困难的态度、开放的心态)、坚持做正确的事(提高效率的事、自动化的事、掌握前沿技术的事、知识密集型的事、技术驱动的事)、高标准要求自己(Google 的自我评分卡、敏锐的技术嗅觉、强调实践,学以致用、Lead by Example)。
所学总结:
吃透基础技术
- 对于技术人员来说,基础知识越扎实,走得就会更远;
- 学好基础技术,能让你一通百通,更快地使用各种新技术,从而可以更轻松地与时代同行;
- 学习基础技术能让你更好地掌握更高维度的技术。
编程部分
C 语言
- 它的内存管理更为直接,可以让我们直接和内存地址打交道。它还能让你更清楚地知道程序是怎么精细控制底层资源的,比如内存管理、文件操作、网络通信;
- 如果你需要写一些如 lock free 之类高并发的功能,那么了解汇编语言,就能有助于你更好地理解和思考。
编程范式
- 面向对象编程:C++、Java;
- 泛型编程:C++、Go、C#;
- 函数式编程:JavaScript、Python、Lisp、Haskell、Erlang;
- 学好编程范式,有助于培养你的抽象思维,同时也可以提高编程效率,提高程序的结构合理性、可读性和可维护性,降低代码的冗余度,进而提高代码的运行效率。
算法和数据结构
- 学习算法不仅是为了写出运转更为高效的代码,更是为了能够写出可以覆盖更多场景的正确代码。
系统部分
计算机系统原理
- CPU 的体系结构、内存的原理与性能特点、磁盘的原理、固态硬盘、GPU 的原理。
操作系统原理和基础
进程、进程管理、线程、线程调度、多核的缓存一致性、信号量、物理内存管理、虚拟内存管理、内存分配、文件系统、磁盘管理。
网络基础
- 网络层系结构、底层的 ARP 协议、中间的 TCP/UDP 协议、高层的 HTTP 协议、TCP 的滑动窗口限流。
数据库原理
- SQL(B+ 树、强一致性)、NoSQL(较弱的一致性、较高的存取效率、哈希表或其他技术)。
分布式技术架构
- 负载均衡、DNS 解析、多子域名、无状态应用层、缓存层、数据库分片、容错和恢复机制、Paxos、Map/Reduce 操作、分布式 SQL 数据库一致性。
提升学习能力
学习的信息源
- Google、Stack Overflow、Quora、图书、API 文档、论文、博客。
与高手交流
- 不仅有助于了解热门的技术方向及关键的技术点,更可以通过观察和学习高手的技术思维及解决问题的方式,提高自己的技术前瞻性和技术决策力。
举一反三的思考
- 了解操作系统的缓存和网页缓存以后,你要思考其相同点和不同点。
不怕困难的态度
- 绝大多数人是害怕困难的,所以,如果你能够不怕困难,并可以找到解决困难的方法和路径,时间一长,你就能拥有别人所不能拥有的能力。
开放的心态
- 能在不同的方法和方案间做比较,比较它们的优缺点,那么你会知道在什么样的场景下用什么样的方案,你就会比一般人拥有更全面和更完整的思路。
坚持做正确的事
提高效率的事
- 你要学习和掌握良好的时间管理方式,管理好自己的时间,能显著提高自己的效率。
自动化的事
- 程序员要充分利用自己的职业特质,当看见有可以自动化的步骤时,编写程序来自动化操作,可以显著提高效率。
掌握前沿技术的事
- 由于学习一门技术需要花费不少时间,你应该选择自己最感兴趣的,有的放矢地去学习。
知识密集型的事
- 知识密集型的事仍需要人来完成,所以人的价值此时就显现出来了。
技术驱动的事
- 不仅是指用程序驱动的事,还包括一切技术改变生活的事。
高标准要求自己
Google 的自我评分卡
- 在面试 Google 时,要求应聘人对自己的技能做出评估的工具,它可以看出应聘人在各个领域的技术水平。
敏锐的技术嗅觉
- 你需要充分利用信息源,GET 到新的技术动态,并通过参与技术社区的讨论,丰富自己了解技术的角度。
强调实践,学以致用
- 一定要实际用一用,可以是工作中的项目,也可以是自己的项目,不仅有利于吸收理解,更有利于深入到技术的本质。
Lead by Example
- 不写代码,你就对技术细节不敏感,就无法做出可以实践的技术决策和方案。
末了
文中还提到了技术领导者需要有良好的沟通能力、组织能力、驱动力、团队协作能力等等。