如何拥有技术领导力?
第一,吃透基础技术,基础技术是各种上层技术的共同的基础。
计算机技术太多,但仔细分析你会发现,知识表现形式多,而基础技术并不多。学好基础技术,能让你一通百通,更快地使用各种新技术,从而可以更轻松地与时代同步。
基础技术主要是两部分:编程和系统。
编程部分:
**C语言:**更接近底层,能更好地理解程序的运行。
**编程范式:**培养抽象思维,提高编程效率,提高程序的结构合理性、可读性和可维护性,降低冗余度。学习编程范式:多了解各种程序设计语言的功能特性。
**算法和数据结构:**任何有技术含量的软件中一定有高级的算法和数据结构。比如epoll中使用红黑树,数据库索引使用B+树。业务中的各种排序、过滤、查找也用到算法。
系统部分:
网络基础:《TCP/IP详解》,学习基础的网络协议,可以为我们的高纬度分布式架构中的一些技术问题提供很多的技术方案。比如TCP的滑动窗口限流,完全可以用于分布式服务中的限流方案。
**数据库原理:**文件系统适合存放连续的信息,比如图片,文章。如果保存很短的信息也保存文件的画,会浪费大量的磁盘空间,而且无法方便地查询。数据库更适合存放短的数据。且能方便的查询。流行的两类数据库管理系统:SQL和NoSQL。前者B+数,强一致性,后者弱一致性,高存取效率,基于哈希表和其他技术。
学习数据库原理,能了解数据库访问性调优的要点。以及保证并发情况下的数据操作的原子性。
**分布式技术架构:**数据库和应用程序服务器需要横向扩展,才能提供做够高的性能。为了做到这一点,要学习分布式技术架构,包括负载均衡、DNS解析、多子域名、无状态应用层、缓存层、数据库分片、容错和恢复机制、Paxos、Map/Reduce操作、分布式SQL数据库一致性等知识点。
学习分布式技术架构的有效途径是参与到分布式项目的开发中去,并阅读相关论文。
第二,提高学习能力。就是能够很快地学习新技术,又能在关键技术上深入的能力。
只有掌握了上述基础原理之上,才能拥有好的学习能力。
第三,坚持做正确的事。
做正确的事,比用正确的方法做事更重要。因为这样才始终会向目的地靠拢。