技术领导力学习之道

来源于《左耳听风》技术专栏读书笔记
技术领导力,前提是得有扎实的技术功底。目前技术层出不穷,其核心底层原理基本相同。

1、吃透基础技术,基础技术是各种上层技术共同的基础

具体来说,主要是编程和系统。这些基础知识通常是不可以速成的,可以在一两年看完相关书籍,但是灵活应用需要用一生的时间来学习和感悟。
1)C语言:学习好C语言的好处可以了解应用程序和操作系统编程,还可以更清楚知道程序是怎样精细控制底层资源的,比如内存管理、文件操作、网络通信等。
2)编程范式:面向对象编程(C++、Java)、泛型编程(C++、Go等)、函数式编程(python、JavaScript)等
3)算法和数据结构
4)计算机系统原理:CPU 的体系结构(指令集 [CISC/RISC]、分支预测、缓存结构、总线、DMA、中断、陷阱、多任务、虚拟内存、虚拟化等),内存的原理与性能特点(SRAM、DRAM、DDR-SDRAM 等),磁盘的原理(机械硬盘 [盘面、磁头臂、磁头、启停区、寻道等]、固态硬盘 [页映射、块的合并与回收算法、TRIM 指令等]),GPU 的原理等。
5)操作系统原理和基础::进程、进程管理、线程、线程调度、多核的缓存一致性、信号量、物理内存管理、虚拟内存管理、内存分配、文件系统、磁盘管理等。学习操作系统的价值在于理解程序是怎样被管理的,操作系统对应用程序提供了怎样的支持,抽象出怎样的编程接口(比如 POSIX/Win32 API),性能特性如何(比如控制合理的上下文切换次数),怎样进行进程间通信(如管道、套接字、内存映射等),以便让不同的软件配合一起运行等。要学习操作系统知识,一是要仔细观察和探索当前使用的操作系统,二是要阅读操作系统原理相关的图书,三是要阅读 API 文档(如 man pages 和 MSDN Library),并编写调用操作系统功能的程序。这里推荐三本书:《UNIX 环境高级编程》《UNIX 网络编程》和《Windows 核心编程》。学习操作系统基础原理的好处是,这是所有程序运行的物理世界,无论上层是像 C/C++ 这样编译成机器码的语言,还是像 Java 这样有 JVM 做中间层的语言,再或者像 Python/PHP/Perl/Node.js 这样直接在运行时解释的语言,其在底层都逃离不了操作系统这个物理世界的“物理定律”。所以,了解操作系统的原理,可以让你更能从本质理解各种语言或是技术的底层原理。一眼看透本质可以让你更容易地掌握和使用高阶技术
6)网络基础:计算机网络是现代计算机不可或缺的一部分。需要了解基本的网络层次结构(ISO/OSI 模型、TCP/IP 协议栈),包括物理层、数据链路层(包含错误重发机制)、网络层(包含路由机制)、传输层(包含连接保持机制)、会话层、表示层、应用层(在 TCP/IP 协议栈里,这三层可以并为一层)。比如,底层的 ARP 协议、中间的 TCP/UDP 协议,以及高层的 HTTP 协议。这里推荐书籍《TCP/IP 详解》,学习这些基础的网络协议,可以为我们的高维分布式架构中的一些技术问题提供很多的技术方案。比如 TCP 的滑动窗口限流,完全可以用于分布式服务中的限流方案
7)数据库原理
8)分布式技术架构:数据库和应用程序服务器在应对互联网上数以亿计的访问量的时候,需要能进行横向扩展,这样才能提供足够高的性能。为了做到这一点,要学习分布式技术架构,包括负载均衡、DNS 解析、多子域名、无状态应用层、缓存层、数据库分片、容错和恢复机制、Paxos、Map/Reduce 操作、分布式 SQL 数据库一致性(以 Google Cloud Spanner 为代表)等知识点。学习分布式技术架构的有效途径是参与到分布式项目的开发中去,并阅读相关论文

2、提高学习能力

所谓学习能力,就是能够很快地学习新技术,又能在关键技术上深入的能力。
1)、学习的信息源。常见的信息源有 Google 等搜索引擎,Stack Overflow、Quora 等社区,图书,API 文档,论文和博客等
2)、与高手交流:可以通过技术社区、开源项目来和高手切磋
3)、举一反三的思考。比如,了解了操作系统的缓存和网页缓存以后,你要思考其相同点和不同点。了解了 C++ 语言的面向对象特性以后,思考 Java 面向对象的相同点和不同点。遇到故障的时候,举一反三,把同类问题一次性地处理掉
4)不怕困难的态度。遇到难点,有时不花一番力气,是不可能突破的。此时如果没有不怕困难的态度,你就容易打退堂鼓。但如果能坚持住,多思考,多下功夫,往往就能找到出路。
5)开放的心态。实现一个目的通常有多种办法。带有开放的心态,不拘泥于一个平台、一种语言,往往能带来更多思考,也能得到更好的结果。而且,能在不同的方法和方案间做比较,比较它们的优缺点,那么你会知道在什么样的场景下用什么样的方案,你就会比一般人能够有更全面和更完整的思路

3、坚持做正确的事

1)提高效率的事:你要学习和掌握良好的时间管理方式,管理好自己的时间,能显著提高自己的效率。
2)自动化的事
3)掌握前沿技术的事:掌握前沿的技术,有利于拓展自己的眼界,也有利于找到更好的工作。需要注意的是,有些技术虽然当下很火,但未必前沿,而是因为它比较易学易用,或者性价比高。由于学习一门技术需要花费不少时间,你应该选择自己最感兴趣的,有的放矢地去学习。
4)知识密集型的事
5)技术驱动的事:不仅是指用程序驱动的事,而且还包括一切技术改变生活的事。比如自动驾驶、火星登陆等。就算自己一时用不着,你也要了解这些,以便将来这些技术来临时能适应它们。

4、高标准要求自己。

只有不断提高标准,你才可能越走越高。所以,要以高标准要求自己,不断地反思、总结和审视自己,才能提升自己。
1)Google的自我评分卡:Google 的评分卡是在面试 Google 时,要求应聘人对自己的技能做出评估的工具,它可以看出应聘人在各个领域的技术水平。我们可以参考 Google 的这个评分卡来给自己做评估,并通过它来不断地提高对自己的要求
2)敏锐的技术嗅觉.这是一个相对综合的能力,你需要充分利用信息源,GET 到新的技术动态,并通过参与技术社区的讨论,丰富自己了解技术的角度。思考一下是否是自己感兴趣的,能解决哪些实际问题,以及其背后的原因,新技术也好,旧技术的重大版本变化也罢。
3**)强调实践**,学以致用:学习知识,一定要实际用一用,可以是工作中的项目,也可以是自己的项目,不仅有利于吸收理解,更有利于深入到技术的本质。并可以与现有技术对比一下,同样的问题,用新技术解决有什么不同,带来了哪些优势,还有哪些有待改进的地方。
4)lead by example

Google 评分卡
0 - you are unfamiliar with the subject area.
1 - you can read / understand the most fundamental aspects of the subject area.
2 - ability to implement small changes, understand basic principles and able to figure out additional details with minimal help.
3 - basic proficiency in a subject area without relying on help.
4 - you are comfortable with the subject area and all routine work on it:For software areas - ability to develop medium programs using all basic language features w/o book, awareness of more esoteric features (with book).For systems areas - understanding of many fundamentals of networking and systems administration, ability to run a small network of systems including recovery, debugging and nontrivial troubleshooting that relies on the knowledge of internals.
5 - an even lower degree of reliance on reference materials. Deeper skills in a field or specific technology in the subject area.

应该阅读的计算机经典书籍:
1)《代码大全》 虽然这本书有点过时了,而且厚到可以垫显示器,但是这绝对是一本经典的书。
2)《程序员修练之道》 这本书也是相当经典,我觉得就是你的指路明灯。
3)《计算机的构造和解释》 经典中的经典,必读。
4)《算法导论》 美国的本科生教材,这本书应该也是中国计算机学生的教材。
5)《设计模式》 这本书是面向对象设计的经典书籍。
6)《重构》 代码坏味道和相应代码的最佳实践。
7)《人月神话》 这本书可能也有点过时了,但还是经典书。
8)《代码整洁之道》 细节之处的效率,完美和简单。
9)《Effective C++》/《More Effective C++》 C++ 中两本经典得不能再经典的书。也许你觉得 C++ 复杂,但这两本书中带来对代码稳定性的探索方式让人受益,因为这种思维方式同样可以用在其它地方。以至于各种模仿者,比如《Effective Java》也是一本经典书。
10)《Unix 编程艺术》《Unix 高级环境编程》也是相关的经典。

机器学习资料推荐
1)吴恩达教授(Andrew Ng)在 Coursera 上的机器学习课程非常棒。我强烈建议从此入手。对于任何拥有计算机科学学位的人,或是还能记住一点点数学的人来说,都非常容易入门。这个斯坦福大学的课程后面是有作业的,请尽量拿满分。另外,网易公开课上也有该课程。
2)卡内基梅隆大学计算机科学学院汤姆·米切尔(Tom Mitchell)教授的机器学习课程,这里有英文原版视频和课件 PDF 。汤姆·米切尔是全球 AI 界顶级大牛,在机器学习、人工智能、认知神经科学等领域都有建树,撰写了机器学习方面最早的教科书之一《机器学习》,被誉为入门必读图书。
3)加利福尼亚理工学院亚瑟·阿布·穆斯塔法(Yaser Abu-Mostafa)教授的 Learning from Data 系列课程 。本课程涵盖机器学习的基本理论和算法,并将理论与实践相结合,更具实践指导意义,适合进阶。
除了上述的那些课程外,下面这些资源也很不错。
1)YouTube 上的 Google Developers 的 Machine Learning Recipes with Josh Gordon 。这 9 集视频,每集不到 10 分钟,从 Hello World 讲到如何使用 TensorFlow,值得一看。
2)还有 Practical Machine Learning Tutorial with Python Introduction 上面一系列的用 Python 带着你玩 Machine Learning 的教程。
3)Medium 上的 Machine Learning - 101 讲述了好多我们上面提到过的经典算法。还有,Medium 上的 Machine Learning for Humans,不仅提供了入门指导,更介绍了各种优质的学习资源。
4)杰森·布朗利(Jason Brownlee)博士的博客 也是非常值得一读,其中好多的 “How-To”,会让你有很多的收获。
5)i am trask 也是一个很不错的博客。
6)关于 Deep Learning 中神经网络的学习,推荐 YouTube 介绍视频 Neural Networks。
7)用 Python 做自然语言处理Natural Language Processing with Python。
8)以及 GitHub 上的 Machine Learning 和 Deep Learning 的相关教程

书籍推荐
1)《机器学习》,南京大学周志华教授著。它是一本机器学习方面的入门级教科书,适合本科三年级以上的学生学习。这本书如同一张地图一般,让你能“观其大略”,了解机器学习的各个种类、各个学派,其覆盖面与同类英文书籍相较不遑多让。
2)A Course In Machine Learning,马里兰大学哈尔·道姆(Hal Daumé III)副教授著。这本书讲述了几种经典机器学习算法,包括决策树、感知器神经元、kNN 算法、K-means 聚类算法、各种线性模型(包括对梯度下降、支持向量机等的介绍)、概率建模、神经网络、非监督学习等很多主题,还讲了各种算法使用时的经验技巧,适合初学者学习。此外,官网还提供了免费电子版。
3)Deep Learning,麻省理工学院伊恩·古德费洛(Ian Goodfellow)、友华·本吉奥(Yoshua Benjio)和亚伦·考维尔(Aaron Courville)著。这本书是深度学习专题的经典图书。它从历史的角度,将读者带进深度学习的世界。深度学习使用多层的(深度的)神经元网络,通过梯度下降算法来实现机器学习,对于监督式和非监督式学习都有大量应用。如果读者对该领域有兴趣,可以深入阅读本书。本书官网提供免费电子版,但不提供下载。实体书(英文原版或中文翻译版)可以在网上买到。
4)Reinforcement Learning,安德鲁·巴托(Andrew G.Barto)和理查德·萨顿(Richard S. Sutton)著。这本书是强化学习(Reinforcement Learning)方面的入门书。它覆盖了马尔可夫决策过程(MDP)、Q-Learning、Sarsa、TD-Lamda 等方面。这本书的作者是强化学习方面的创始人之一。强化学习(结合深度学习)在围棋程序 AlphaGo 和自动驾驶等方面都有着重要的应用。
5)Pattern Recognition and Machine Learning ,微软剑桥研究院克里斯托夫·比肖普(Christoph M. Bishop)著。这本书讲述了模式识别的技术,包括机器学习在模式识别中的应用。模式识别在图像识别、自然语言处理、控制论等多个领域都有应用。日常生活中扫描仪的 OCR、平板或手机的手写输入等都属于该领域的研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值