欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 左耳听风_007_06_如何才能拥有技术领导力

左耳听风_007_06_如何才能拥有技术领导力

2024/10/25 2:24:35 来源:https://blog.csdn.net/hust419/article/details/140216937  浏览:    关键词:左耳听风_007_06_如何才能拥有技术领导力

你好,我是陈浩老明左耳朵house.那通过上节课呢,相信你现在已经理解了什么才是技术领导力。

那今天呢我就来跟你继续聊一聊怎样才能拥有技术领导力。

首先呢你需要吃透基础技术。

因为基础技术啊是各种上层技术共同的技术。

吃透基础技术是为了更好的去理解程序的运行原理,并且基于这些基础技术进化出更优化的产品。

那吃透了基础技术有很多的好处。

具体来说呢有以下几点。

第一点,万丈高楼平地气一栋楼能盖多高?一座大桥能造多长?重要的是他们的地基。

同样对于技术人员来说,基础设识越扎实,走的就参考资料:https://51gx.top/detail/266会越远。

那第二点计算机技术太多了,但是仔细分析你就会发现啊,只是表现形式很多,而技术技术并不多,所以学好基础技术可以让你一通百通,更快的使用各种新技术,从而啊更轻松的与时代同行。

那第三点好处呢是很多分布式系统架构和高混用高性能、高并发的解决方案,基本都可以在基础技术上找到他们的身影。

所以啊学习基础技术能让你更好的去掌握更高维度的技术。

那么哪些才是基础技术呢?那接下来呢我会讲一些技术,说实话呢这些技术你学起来可能会感到枯燥无味,但是我还是鼓励你能够克服人性的弱点啊,努力啃玩。

呃,具体来说,技术技术可以分为两个部分,编程和系统。

那首先我们先来谈谈编程。

具体来说呢有三个基术技术,第一个是c语言。

嗯,相对于很多其他高级语言来说啊,c语言更接近底层。

在具备跨平台能力的前提下,它可以比较容易的被人工翻译成相应的汇编代码。

那它的内存管理更为直接,可以让我们直接和内存地址打交道。

那学习好的c语言,它的好处是我们可以掌握程序的运行情况,并且能够进行应用程序和操作系统编程。

要学好c语言啊,你可以阅读c语言的经典书籍,也就是第二版的c程序设计语籍。

同时呢肯定也要多写程序,多读一些优秀开源项目的源代码。

学习好c语言,除了让你能更了解操作系统以外呢,它还能让你更清楚的知道程序是怎么精细控制底层资源的,比如内存管理啊,文件操作、网络通信等等。

那这里需要说明的是,我们还是需要学习汇编语言的。

因为如果你想更深入的去了解计算机是怎么运作的,那么你是需要了解汇编语言的。

虽然现在我们已经几乎不再用汇编语言来编程了,但是如果你需要写一些比如free这样高并化的东西,那么了解汇编语言就能帮助你更好的理解和思考。

第二个呢是编程范式,各种编程语言都有它们各自的编程范式用于解决各种问题。

比如c加加和java里面就有变向对象编程呃,c加加go c sharf里面的泛型编程、javascrippt、 python list hascale和along里面的函数式编程等学学编编程范式,助于培养养你的抽象思同同时也也以提高编程效率,提高程序的结构、合理性、可读性和可维维性性低代码码容余度,进而呢提高代码的运行效率。

学习好的编程范式啊,你还可以多了解各种程序语言的功能特性。

那第三个基础啊是算法和数据结构。

算法是程序设计的有力支撑。

适当的应用算法可以有效的抽象问题,提高程序的合理性和执行效率。

算法是编程中最最重要的东西,也是计算机科学中最重要的基础。

任何有技术含量的软件中啊,一定会有高级的算法和数据结构。

比如一铺就使用了宏一数,数据库索引呢就使用了b加数等等。

而且啊就算是你的业务系统中啊,也一定会有各种排序啊过滤,还有查找算法。

学习算法不仅是为了能写出运转更为高效的代码,更是为了能够写出可以覆盖更多场景的正确代码。

我们接着再来谈谈系统部分,系统部分的基础基础知识啊,有以下五个方面。

首先是计算机系统原理,包括CPU的体系结构啊,GPU的原理等等。

学习计算机系统原理的价值在于,除了能够了解计算机的原理之外呢,你还能举一反三的反推出高维度的分布式架构和高并发高可用的架构设计。

比如虚拟化内存就和今天云计算中的虚拟化的原理是相通的那计算机总线啊和分布式架构的ESB也有相同之处。

计算机的指令调度并发控制,可以让你更好的理解并发编程和程序性能调优等等。

那在这里呢我推荐的书籍是深入理解计算机系统。

其次呢是操作系统的原理和基础,包括进程啊、进程管理啊、线程、线程调度、多核的缓存一致性、信号量、物理内存管理、虚拟内存管理、内存分配、文件系统以及磁盘管理等等。

那学习操作系统的价值啊,它在于理解程序是怎样被管理的那操作系统对应用程序提供了怎样的知识,抽象出怎样的编程接口,性能特性如何,怎样做进程间的通信,以便让不同的软件配合一起运行等等。

要学习操作系统知识啊,一是要仔细观察和探索当前使用的操作系统。

二呢是要阅读操作系统原理相关的图书。

那第三点呢,是要阅读VPI文档,然后要自己动手编写调用操作系统功能的程序。

在这里呢我推荐summer书,分别是unix环境高级编程、unix网络编程和windows核心编程学习操作系统。

技术原理的好处啊在于,这是所有程序运行的物理世界。

无论在上层是像CAC加加这样编程机器码的语言,还是像java这样有JVM做中间层的语言。

再或者像python啊、PHP pro六GS这样直接运行时解释的语言,在底层啊都逃离不了操作系统这个物理世界的物理定律。

所以了解操作系统的原理,可以让你从更本质的角度去理解各种语言或者是技术的底层原理,一眼看透本质,可以让你更容易的去掌握和使用高阶技术系统基础知识的。

第三个方面是网络技术。

我们都知道啊计算机网络是现代计算机不可或缺的一部分。

所以我们需要了解最基本的网络层次结构,包括物理层、数据链路层、网络层传输层、会络层传输层,还有应用层。

比如底层的ARP协议,中间的TCP和UDP协议,以及高层的HTTP协议。

那这里呢我推荐一本书叫TCPIP详解。

所以这些基础的网络协议可以为我们的高位分布式架构中的一些技术问题提供更多的技术方案。

比如TCP的滑动窗口限流啊,完全可以用于分布式服务中的限流方案。

那第四个呢是数据库的原理,数据库管理系统啊,可以说是管理数据库的利器。

那通常呢操作系统提供文件系统来管理文件数据,而文件呢比较适合保存连续的信息,比如一篇文章啊,一个图片等等。

但有的时候我只需要保存一个名字之类较短的信息。

那如果单个文件只保存名字这样几个字节的信息的话,那就会浪费大量的磁盘空间。

而且啊无法方便的进行查询。

但数据库就更适合保存这种转的数据,而且可以方便的按字段进行查询。

那现在流行的数据库管理系统有两大类,分别是circle和nocircle.学习了数据库原理之后呢,你就可以了解数据库访问性能调优的要点,以及保证并发情况下数据操作原子性的方法。

要学习数据库呢,你可以阅读各类数据库的图书,同时多做数据库操作以及数据库编程。

同时呢也要多观察分析数据库在运行时的性能。

那第五个基础知识呢是分布式的技术架构数据库和应用程序服务器。

在应对互联网上数以亿计的访问量的时候,需要具备进行横向扩展的能力,才能提供足够高的性能。

所以为了做到这一点呢,我们要学习分布式技术架构,包括负载均衡DNS解析、多子域名、无状态、应用层、缓存层、包据库分析、分布式技术机制、taxelmmarereduce操作以及分布式circle数据库一致性等等知识点。

要学习分布式技术架构呢,最有效的途径是参与到分布式项目的开发中去,并且还要阅读相关的论文。

那这里要注意的是,上面这些技术知识通常啊不是可以速成的。

虽然说你可以在一两年内就把相关的书籍或者论文看完,但我想说的是,这些基础知识是需要你用一生的时间来学习的,因为基础础的技术和知识会随着阅历和经验的增加而有不同的感悟。

那刚刚讲的这些呢就是应有技术领导力,你需要做的第一点去吃透基础技术。

那接下来我需要讲,第二点是要提高学习能力。

所谓的学习能力呢,就是能够很快的学习新技术,而且能在关键技术上深入的能力。

只有在掌握了上述的基础原理之上,你才能拥有更好的学习能力。

那接下来呢我会介绍一些能让你提升学习能力的方法。

第一点呢是学习的信息源。

信息源很重要,有好的信息源就可以更快速的去获取有价值的信息,提升学习效率。

常见的信息源有google等搜索引擎stck over flow correa的社区,那么图书API文档,还有论文和博客。

等等我这么跟你说吧。

如果到今天你的知识需求,用中文搜索就可以满足的话,那么你就远远落后于这个时代了。

那如果用英文搜索才能找到你想要的知识的话,那你才能勉强算跟上这个时代。

那如果说你有的问题啊,你连英文搜索都找不到,只能到社区里去找作者啊,或者其他人去交流。

那么可以说你已经真正的和时代同频了。

所以这就是提升学习能力的第二个做法与高手交流。

程序员可以通过技术社区以及参加技术会议与高手交流,也可以通过参加开源项目来和高手切磋。

我们平时都听过这样一句话,听君人一席话,胜读十年书,与高手交流,对程序员的学习和成长都很有益处,不仅有助于了解热门的技术方向以及关键的技术点,更可以通过观察和学习高手的技术思维以及解决问题的方式,提高自己的技术前瞻性和技术决策点。

我在亚马逊的时候,就有人和我说多和美国的principal SD以上的工程师交流,无论交流什么,你都会有收获的那其实呢我这里说的就是学习这些牛人的思维方式和看问题的角度,这样呢会让你有质的提高比了。

找到好的信息源和跟高手交流以外呢,提升学习能力,还需要你自己能够举一反三的思考。

比如了解了操作系统的缓存和网页缓存之后呢,你要思考他们的相同点和不同点。

了解了c加加语言的面向对象特性之后呢,要思考java里面面向对象的相同点和不同点。

那遇到故障的时候呢,举一反三,可以把同类的问题一次性的去处理掉。

第四点是不怕困难的态度,遇到难点呢有时候不花一番力气是不可能突破的那这个时候,如果你没有不怕困难的态度,就容易打退堂鼓。

但如果能坚持住,多思考,多下功夫,往往呢就能找到出路。

绝大多数人都是害怕困难的。

所以如果你能够不怕困难,而且找到解决困难的方法途径,那时间一长,你就能拥有别人不能拥有的能力了。

第五呢是要有开放的心态实现一个目的。

通常有很多的办法带有开放的心态,不拘泥一个平台,一种语言往往能带来更多的思考,也能得到更好的结果。

而且呢能在不同的方法和方案间做比较比较他们的优缺点。

那么你会知道在什么样的场景下,用什么样的方案,你就会比一般人能够有更全面和更完整的思路。

希望你啊能够记住这些提升学习能力的方法,要拥有技术领导力。

除了吃透基础技术、提高学习能力以外呢,你要做的第三点是坚持做正确的事儿。

做正确的事儿比用正确的方式做事儿更重要。

因为这样才能让你始终向你的目标去靠拢。

那么哪些事情算是正确的事儿呢?我分享一下我的观点。

首先是提高效率的事儿,你要学习和掌握良好的时间管理的方式,因为管理好自己的时间能显著提高自己的效率。

其次呢是自动化的事儿。

作为一个程序员啊,你要充分利用自己的职业特质。

当你看见可以自动化的步骤的时候,编写程序来做自动化操作,那就可以显著的提高效率。

那第三呢是掌握前沿技术的事儿,掌握前沿的技术啊,有利于拓展自己的眼界,也有利于找到更好的工作。

但是需要注意啊,有些技术虽然是当下很火,但是未必是因为它前沿,而是因为它比较易学,易用或者性价比比较高。

学习一门技术啊是需要花费不少时间的,所以你应该选择自己最感兴趣的东西,有的放矢的去学习。

第四呢是知识面进行的事儿。

知识密集型啊是相对于劳动密集型来说的,基本上劳动密集型的事儿都能通过程序和机器来完成。

而知识密集型的事儿目前仍然需要人来完成。

所以人的价值这个时候就显现出来了。

虽然说现在人工智能似乎已经可以做一些知识密集型的事儿,比如下围棋的阿法狗。

但是在开开领域域啊,机器相对对人的智能来说差别还是很大,而握了领域知识的人,他的价值依然很高。

第五呢是技术驱动的事儿。

所谓技术驱动呢,不仅是指用程序驱动的事儿,而且还包括一切用技术改变生活的事儿,比如自动驾驶啊、火星登陆啊等等。

就算自己一时用不着,你也要了解这些,以便将来这些技术真的来临的时候,你能适应他们。

最后呢拥有技术领导力需要你具备的。

第四点就是高标准要求自己,只有不断的提高标准,你才可能越走越高。

所以要以高标准要求自己,不断的去反思、总结和审视自己,才能够提升自己。

首先呢你可以使用google的自我评分卡来评估自己。

什么是google的自我评分卡呢?它是在面试google的时候啊,要求应聘人对自己的技能做出评估的工具。

他可以看出应聘人在各个领域的技术水平,我们可以参考的这个评分卡来给自己做评估,并通过它来不断的提高对自己的要求。

那这个评分卡呢,我在文章的末尾给了出来。

你听完音频之后啊,可以对自己做一下简单的评估。

其次呢,你要有敏锐的技术嗅觉,这是一个相对综合的能力。

你需要充分的利用信息源get到新的技术动态,并且通过参与技术社区的讨论来丰富自己了解技术的本质。

还可以自己思考一下,这些新的技术动态是不是自己感兴趣,能解决哪些实际问题,以及它背后的原因。

呃,新技术也好,旧技术的重大版本变化也罢了。

一个很重要的习惯呢是强调实践,学以致用,学习知识啊,一定要实际用一用,可以是工作中的项目啊,也可以是自己的项。

这这样不仅有利于技术理解,更可以于深入到技术的本质,还可以跟现有的技术对比一下同样的问题,用新技术解决有什么不同,带来哪些优势,还有哪些有待改性的地方。

最后一点呢就是lead by example永远在编程。

因为不写代码,你就会对技术技术对比,你就没办法做出可以实践的技术决策和方案。

不要小看这些方法和习惯,坚持下来来很益益处。

谁说下一个改方向?或或重大修改建议,不能是你给提提的的,尤其是在一些开源项目中。

什么是技术领导力?领导力的体现之一,不就是指明技术未来的发展方向吗?总之呢吃透基础技术,提高学习技能力,坚持做确的事儿,高标准要求自己,不仅会让你全面提升技术技能,还能很好的锻炼自己的技术思维,培养技术前瞻性和决策力,进而啊形成技术领导力。

但是仅有技术还不够。

那作为一个合格的技术领导者,你还需要有解决问题的各种软技能,比如良好的沟通能力、组织能力、驱动力啊,团队协作能力等等。

那很多经典突出,包括技术领导之路、卓有成效的管理者等等,都有细致的详解。

我在这里呢就先不展开了,我后面的内容会有设计。

针对如何才能拥有技术领导力这个问题,欢迎你在留言区说说你的看法,我在留言区等你,也欢迎你把这节课分享给你的朋友。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com