左耳朵耗子:技术人如何更好地把控发展趋势?

技术不断迭代,掌握一门其中一门技术就能够清闲到老么?盲目搬砖就能以量变换取质变么?世界的快速发展,本质是什么?如何鉴别出有潜力的技术?如何突破自身学习和能力的瓶颈,更好作到自我管理?本文是左耳朵耗子老师在「云加社区沙龙online」的分享整理,详细阐述了技术人应如何面对焦虑,把控技术,更好适应将来技术发展的冲击。

引 言

从我二十多年的工做经从来看,期间经历了不少技术的更新换代,整个技术模式、业务模式也是一直变来变去,因此本期内容针对这一话题,谈一谈技术人员应该怎样适应这样一种变化? html

第一,若是想要把控技术,应对这个世界的一些变化,须要大体知道这个世界的一些规律和发展趋势,另外还得认识本身,本身到底适合作什么?在这个趋势和规律下属于本身的发挥领域究竟是什么?这是咱们每一个人都须要了解的。前端

第二打牢基础,以不变应万变,无论世界怎样变化,我都能很快适应它。python

第三,提高成长的效率,由于如今社会的节奏实在太快了,比二十年前快得太多,技术层出不穷,因此咱们的成长也要更有效率。效率并不单指的快,效率是怎么样更有效,是有用工除以总工,怎么学到更有效的东西,或者怎么更有效学习,是咱们须要掌握的另外一关键。程序员

点击连接,查看完整直播回放算法

1、认识世界,了解本身

1. 世界发展的大趋势

首先要认识这个世界发展的趋势,人类社会目前处于第三次工业革命期间,信息化革命也正在进行。shell

第一次工业革命是蒸汽机时代,即用蒸汽机代替劳动力。第二次工业革命是内燃机,电力被发明也在第二次工业革命。第三次工业革命就是今天,主要是以信息化、原子能还有空间技术以及一些生物应用工程等。数据库

咱们能够看到,这三次工业革命围绕着都是能源的迭代、能源的升级。从蒸汽时代到内燃机时代,再到原子能。编程

2. 技术演进的规律

为什须要这些动力和能源?由于人类发明各类机器都是须要能源和动力的,因此从蒸汽、内燃到电力、原子能都是在不停的解决怎样让机器动起来的问题。要让机器动起来必须有一个外力,因此能源变成很重要的事情,机器能够不知疲倦的作,可是能源要跟得上。因此解决能源问题就是为了解决机器的自动化。后端

今天的信息革命其实也是在解决自动化,只要可以被数字化了,就能够实现自动化。设计模式

以通信为例,最先是飞鸽传输、而后是无线点播传输,到如今经过互联网通信,都是在解决自动化,自动化的过程就是只有机器在不知疲倦工做。

自动化能够带来规模化,规模化能够带来成本极度的降低和效率极大的攀升,工业革命其实基本上都在干这些事。

接下来关注信息化革命。信息化革命分红三个阶段:

1990年代到2000年,这个时代叫兆比(MB)时代,是雅虎、新浪、搜狐、网易门户网站的时代,这个时代就是SP互联网提供商,把一些资讯数字化,而后发布到网络上。

2000年到2010年这个时代叫多媒体或者是UGC时代,上网开始变得广泛了,每一个人手里的数码设备开始变得多了起来,能够上传照片,能够上传视频,甚至能够在网上作社交。

从2010年到2020年,这过去的十年是移动互联网时代,移动互联网只须要手机在线,不须要依靠电脑。由于手机随时在线,因此我的的各类各样的数据始终在被收集,只要用户上网就会产生数据,因此人的行为最终也被数字化了。

下一个十年,也许把手机丢了均可以。即便手机扔了,照样能够数字化,这是由于线下有不少摄像头、互联网也能够虚拟化人类的不少行为。

整个世界的大趋势基本上就是解决能源和自动化。咱们了解到这些东西就能够知道将来世界会向什么方面变化。

过去用机器代替牲口,或者代替人类操做。好比说织布机,一我的能够管几百台织布机,数控机床之前靠人操做,后来数控就不须要人了,这是数字化带来的一个更好体验。

说得好听叫解放生产力,说难听点就是让人失业,可是是让劳动密集型失业,将来却可能会让知识密集型失业。有一些知识密集型岗位,好比律师,将来是比较容易失业的,一些低端、中端的律师会被算法和机器取代。

由于律师行业里面不少东西是比较教条、公式化的,全部的案例、法律都是公开的,这些东西是能够被机器快速学习的。

技术的演进规律基本是自动化加规模化,从而下降成本,提高效率。这就是为何世界变得愈来愈快,人类都快跟不上节奏的缘由,主要是整个社会不断被机器、数据所驱动。

3. 技术世界的组成

技术世界是怎样组成的,最大的基础是什么?通常是理论,首先理论得突破,理论突破之后,产生质变就能到下一个层次,理论突破了,就会有产生一些技术的基础,这些短时间看起来可能赚不了钱,可是没有这些东西后面就转不了。

像操做系统,操做系统并不解决人类的业务问题,可是若是没有操做系统,没有网络,上传应用就不会存在。生存技术底层技术就像高速公路同样,是不可或缺的。

不一样人有不一样的能力,不一样的人有不一样看法,不一样的喜爱。能看懂理论就进入理论,能深刻底层原理就到技术那边去,想解决某项问题,提高效率就去发明工具

还有产品,产品是用户体验,想要提高一些体验能够去作产品。项目基本上是为了完成一或解决一个具体问题,项目多是这些技术工种里面最接近需求的,可是也是技术含量比较低的,生命周期可能会较短一些。

这个生命周期不是项目,操做系统任何产品都有生命周期,可是理论、基础技术、工具它们所须要的基础沉淀或者这方面技术人员的生命周期会比作项目的人员的生命周期要长。

分工也是这么来的,不是说作前端、后端、算法等这些基本的分工,而是更抽象的分工,这个分工是看每一个人的能力还有他的我的喜爱,这个世界就这么分出来的。

4. 世界须要的人才

这个世界须要什么样的人?咱们须要劳工,劳工能使用技术就行了。还有另一种是技工,技工不可是使用技术,还能够把活儿作好,这是有技能的劳动力。

劳工就是劳动力,劳动就行了,重复劳动。劳工最大的问题颇有可能会被淘,由于他是在作一些重复劳动,作这种重复劳动的人很容易被淘汰。

技术工可以把技术弄好了,活儿作好,他属于一种手艺人,随着技术门槛的降低他可能就会被淘汰掉

特种工人是必须了解原理和解决难题的一类工人,他们是解决比较难的、特定的一些技术问题。当一种技术被淘汰,他并不容易被淘汰,由于他懂原理,原理就是解决问题的能力,是解决问题的套路和方法。

关于设计和架构,设计和架构人员主要是开发一些工具,提高效率和提高用户体验,提高稳定性、性能、代码重用等,总的来讲就是为了降本增效。

这一类人的工做下降了技术获得门槛,他们把技术门槛下降了之后,就能够把这个技术普及开来,就能够由广大劳工、技工、特殊工人使用了。

对于经理,经理主要是创造利润,组织团队。不一样的场景下,经理也须要不一样的技能。好比说创造利润,不一样领域不一样玩法,包括组织团队也是同样。不一样时代带人也是彻底不同。就像咱们70后和今天00后、90后怎么带他们,彻底是两码事。由于你们背景不同,经历不同。

这就是我总结的世界须要哪些人才,咱们了解这些东西之后大概就明白应该如何适应这个世界的变化。

4. 技术领域的11个等级

下图所示是谷歌的SRE评分卡,这个评分卡主要把谷歌内部技术领域分11个等级,咱们能够看到 0 等级对于相关领域不熟悉,属于刚入门。

1是读懂这个技术的基础知识,能读懂技术基础就已经不错了。

2能够实现小的改变,有小的动手能力,并可以在简单指导下找到更多的细节,只要简单指导一下就能跑了,有灵性。

3基本懂这个领域,彻底不须要别人帮助。

4对于这个技术领域很是熟悉,能够完成平常工做,这基本须要有必定的经验的。对于这个技术领域有很是底层的深刻和了解。

5基本上可以解决不少难题,相对前面的0123登记基本能够看作是劳工和技工层次,345能够达到特种工人层次,到678基本就属于设计和架构了。

6是从零开发大规模系统,掌握底层和内部系统

7是了解和利用技术和相关原理,从根本上自动化大量的系统管理运维工做。

8是对于边角技术有深刻了解可以设计部署并负责关键大规模基础设施,而且构建自动化设施。

这里面的关键词是基础底层原理自动化,这些东西是咱们科技工做者或者程序员的技术特征,跟前文的分析是一致的。

9和10是可以在该技术领域出本书,到理论级了,并和标准委员会的人一块儿工做,了解相关的标准和方法经典的书,不是随便写的书,至少要像TCPIP级别,或者像Linux高级编程,这种经典图书或者是教科书。或者是可以发明技术,这样的人已经走在绝大多数人前面了。

5. 认识本身

咱们除了要了解这个世界大概的一些趋势,还须要了解本身。

3.png

若是你须要可以扛得住变化,首先你要找获得本身特长。你要认识本身的特长,找到本身的天赋,找到你在DNA里比别人强的东西,就拿你的DNA跟别人竞争就行了。

因此你要找到本身能够干成的事,找到别人找你请教的事,你身边人找你请教就是说明你有特长。这是找到本身特长很是很是重要,扬长避短。

若是你没有找到本身特长,就找本身有兴趣的东西。什么叫兴趣?兴趣是再难再累都不会放弃的事。若是你遇到困难就会放弃不叫兴趣,那叫叶公好龙。

若是你没有特长,没有兴趣就要学方法。这种方法就是要有时间观念,要会作计划,要懂统筹、规划。

对于作过的事情,犯过的错误多总结,触类旁通,喜欢本身找答案,本身探究因果关系,这是一些方法,本身总结一些套路。

若是你没有特长,没有兴趣,也没有方法,你还能作的事就是勤奋,勤奋注定会让你成为一个比较劳累的人,也是颇有可能被淘汰的人。

随着你的年纪愈来愈大,你的勤奋也会愈来愈不值钱。由于年轻人会比你更勤奋,比你更勤奋、比你斗志更强,比你能力更强,比你要钱更少的人会出现。勤奋最不值钱,可是只要你勤奋至少可以自食其力。

以上就是为了应对将来技术变化,做为我的必需要从特长、兴趣、方法一层一层筛选挖掘,若是没有这些你就要努力和勤奋。

从我我的而言,我不算是特别聪明的人,但自认为对技术仍是比较感兴趣的,难的我不怕。有不少比较难啃的技术,聪明点的人啃一个月就懂了,我不行,我可能啃半年。可是没有关系,知识都是死的,只要不怕困难总有一天会懂的。最可怕是畏难,为本身找借口,这样就不太好了。

2、打牢基础,以不变应万变

1. 基础缘何如此重要?

前面提到的谷歌评分卡中,咱们看到了许多基础原理方面的内容,其实要应对将来的变化,很重要的一点就是无招胜有招,以不变应万变。

世界变化都是表面的东西,内在的东西其实并无太多的变化。理论层面上变得很少,反而形式上的东西今天一个花样,明天一个花样,因此若是要去应对这种变化,就必定要打牢本身的基础,提高内功休养。

好比像编程的一些方式和套路,修饰模式原理本质,解耦,提高代码的重用度等。提高代码重用度必须解耦,要跟现实解耦,提高抽象,这些都是一些技术基础。不管用什么语言,都是这么作的。

打牢基础就能够突破瓶颈,不打牢基础没有办法突破瓶颈。在技术世界不要以为量变会形成质变,这是不可能的。技术这个东西就像砌砖头盖房子,按照砌砖头方式作代码你不行的,由于你不懂原理,你没有办法成长上去的,因此你必须学习基础的理论知识,若是不学这些基础理论知识,你在表面,当这个技术有变化,就会发现之前学的都没用了,要重头学一遍。

掌握技术推理可让本身找到答案和知识,基础是抽象和概括,很容易造成进一步的推论。咱们学的不少技术实现都逃不脱基础原理,无论是Java,仍是其余语言,只要用TCP用的都是相同的原理,逃不出范围,只要抓住原理,甚至还能够本身推导一些技术

2. 什么才算是基础技术?

一些技术,好比程序语言,像C和C++,原理主要就是编译、内存管理、指针等。Java语言原理基本是在虚拟机JVM、垃圾回收、JVM字节码等。python基本在解释器,go语言就是并发,基本都是这些,内存是怎么管的,Java里面为何没有指针,Java虚函数是什么意思?......

你须要了解重要类库的事件,它的数据结构是红黑树,仍是哈希表?还有代码设计,并发、异步,编程范式、设计模式。操做系统就是计算原理,Linux、网络协议、还有数据库,像数据库设计的范式,后台原理都要搞清楚。中间件Kafka是什么原理,你要了解里面的原理,还有一些东西巨耗内存。网管代理,调度系统等等,理论知识算法和数据结构......

前文所述,这个世界一直在作自动化,因此将来必定会自动化一些知识,所以算法和数据很重要,数据库设计范式、网络模型这些都是理论知识,理论知识可让你从本质了解不少的东西。

这些知识其实就是一个计算机科学专业的学生他所要学习的原理,除了中间件可能学校没有教,可是通常学生时代学这些东西也不必,咱们的一些学校教得也很糟糕,一些老师可能都不行,他怎么能教学生呢?并且教学生的书都是本身写的,凡是世界上最优秀的教课书不用了,必定要本身写一本。我本身就遭遇过这样的经历,丹尼斯C语言程序设计不用了,必定要本身弄一本,谭浩强的语言设计,我也不明白为何这样,人家好的不用,非要用本身的,而后里面错误百出。

拿不出原汁原味的东西,你的学习效率必定是降低的。在大学基本都是这样的。这些基础技术大概须要四五年的时间堆叠。我工做二十年了,这二十年来基本仍是这些原理没变,不管形式怎么变,可是核心永远仍是这些,理论创新很难,这是以不变应万变

3. 如何识别好的技术?

其实有了这些理论知识之后,离实际操做还会有一些距离。如今技术这么多,什么才是好技术?

首先了解这个技术解决什么问题。若是这个技术能解决很广泛的问题,那么这个技术可能就很牛,若是这个技术只是解决很小众的问题,这个技术可能也就随之小众。

技术必定下降技术门槛,提升开发效率,或者提高稳定性,基本全部的技术更迭都是为了这些东西。因此,技术越广泛越好。Lisp你们都说很好,可是Lisp解决的只是一种理论上的问题,其实并不具备广泛性。咱们能够学Lisp,可是你要指着它吃饭就不太行了。

咱们须要提高什么样的能力?可以进行更为复杂的计算?可以自动化更为复杂和困难的事情,基本上全部技术都是这样按这样的方向发展的。

哪一些技术有潜力能成为主流技术?好的技术不必定能成为主流技术。成为主流技术特征一般来讲有三点:第一是有大公司背书,第二要有杀手级的应用,第三是有强大的社区。

这样的技术Java称得上是第一,全部大公司都在Java,并且Java有前端、有手机端、有后端,各类杀手级应用一堆又一堆。还有强大的社区,并且Java是企业级的,因此能够看到像交易型的系统基本都是C、C++、Java这条线还有多.NET也是这条线,要用开源,生产率还想高一点、系统稳定点就用Java。

还有像Go语言,也有大公司背书,杀手级应用,社区也比较强大,社区把各类Java中间件往GO语言迁移,这些都是大技术。

那么PHP怎么样,Node.js怎么样,这些都是脚本型语言,脚本型语言我并不以为有多好。PHP将来也不会有太多的可能性。它们却是下降技术门槛了,可是其实并不能解决更复杂的问题。要用PHP搞架构也挺困难的。

为何Java更容易作架构,由于通常来讲一个架构系统一般要有通信系统,不少人以为架构就是搞好这些系统和通信,系统间的通信就是一个系统集成,架构里面还有控制系统,像服务画像、一些配置管理和配置中心,还有一些网管、流量分发,还有一些调度系统,控制系统和一些流量分发系统,还有像DIVE的CICD就是切流量的,还有数据系统,一个架构基本有控制系统、流量系统、调度系统、状态系统、数据系统不少系统组成,以及通信系统。

Java社区里面这些东西最全。因此使用Java就比较方便。

9.png

咱们怎么把控技术,怎么识别什么是“好的技术”。不是学术上的好,而可以更为实用、务实的技术。做为程序员,技术不是职业,咱们仍是要甄别更为普及的,更为易用比较广的技术。

可是不管怎么样,基础技术都是基本不变的。因此能够看到不少高级公司不是特别看重你用什么语言,像微软、谷歌、Facebook等基本都不是很看重,可是要员工把基本原理弄明白,由于这是你是否能成长的重要依据。

3、提高自身成长效率

技术在不断更新,我这二十年基本也都是在不断追赶,若是你跟进慢了确定就不行,因此必需要跟进的快一些。

首先要有学习的效率,怎么样提高你学习的效率,你如果学习效率提不上来,其实时间一长了就会被甩到后面去了。下图展现的是学习金字塔,若是你采起的是听讲获得形式学习,最后可能只有5%的知识留存。你本身读书能够留下10%,看一些视频有20%留下,看别人演示作一遍有30%留下......

为何这些效果都不好呢?由于这些都是属于被动学习,不通过本身的思考就是被动学习。可是主动参与学习,好比说在讨论组里面积极的跟别人讨论问题可以留下50%。若是你可以作出实践,亲自踩踩坑,就会留下75%。若是你教别人,就有90%知识留存,因此学习知识的过程能够想象一下讲给其余人听的过程。

1. 学习方法

学习方法要主动学习,主动学习咱们称之为深度学习,若是你不能深度学习,即便十年时间花费出去,也没有任何意义。

(1)挑选一手知识和信息源

对于学习方法:第一咱们必定要到知识源去挑选知识,知识信息源很是关键,二手信息丢失太大了,谭浩强写的书就丢失太多信息了。

目前计算机一手知识基本都是国外的,因此英文很是重要。我鼓励你们必定读第一手的资料。若是你英语有问题,至少要看翻译过来,最好是原汁原味翻译的,不要我理解了给你讲那种,那种也是被别人嚼一遍再讲给你你没有体会,是别人带着你,别人的体会会影响你,也许你的体会会比他更好,由于是你本身总结出来的东西,因此知识源很重要。

(2)注意原理和基础

第二要注重基础原理。虽然能够忘记这个技术,可是原理记在内心,我能够徒手实现出来,并且经过原理能够更快学习其余相似的技术。因此原理很重要!当你学会C、C++要学Java和GO都很快。

(3)使用知识图谱

必定要学会使用知识图,把知识结构化。你们都说C++最难学,C++三大块,第一是解决C语言的问题,第二面向对象,第三是STL;C语言有指针问题、有宏问题。

对于TCP协议,首先第一个要记住状态图,怎么创建链接,怎么断链接,状态怎么变迁。TCP没有链接,是靠状态维护链接的。

其次,要了解TCP怎么保证可靠性,就是丢包之后怎么重传。

而后,重传会带来拥塞控制,发的速度和收的速度不必定对等,或者网络上的速度不必定对等,涉及到拥塞控制。这就是TCP基本三大块,顺着这个脉络一点点往下想,好比说怎么作拥塞控制,滑动窗口消息技术,怎么测试重传等等相似这样的有不少算法。因此你用知识图关联就能够进行顺藤摸瓜。

不须要记全部知识,那些手册的知识不须要记,你知道在哪里能找到就能够了。你脑子里面要有地图,学一个东西就跟在城市生活同样,闭上眼睛就知道地图,A点到B点怎么去大概方向要知道。我在北京我去广州,广州在南边,我大概坐飞机仍是火车要内心有数。虽然不用记住全部的细节,可是大概知道我去找谁,我就能够知道怎么找到那个地方,你不须要记住全部知识,你记住大概地图,要记住基本的方法和原理,知道在哪里能够找到他就能够了。

(4)学会触类旁通

触类旁通,就是用不一样方法学一个东西,好比说学TCP协议,看书是一种方法,编程是另一种方法,还有用作Debug去看的,用不一样方法学一个东西会让你更加熟悉,你学一个知识的同时把周边也学了。好比说学前端能不能把HTCP学一下,好比说长链接、短链接,包括hp一、hp2有一些不同的东西。

(5)总结和概括

必定要学会总结和概括,造成本身的思惟框架、本身的套路、本身的方法论,之后学这个东西应该怎么学。就像学一门新的语言,无论GO语言,仍是Rust语言,第一件事情就是了解内存是怎么管理的,第二是范性怎么管,并发怎么弄。还有一些抽象怎么弄,好比说怎么解耦,怎么实现多态?

套路这种东西只有学的多了之后才能造成套路,若是你只学会一门语言不会有套路,你要学C、C++,每一年学门语言,不用学多精,你思考这个语言有什么不同,为何这个这种有玩法,那个有那种玩法,这些东西思考多了套路方法论就出来了。

好比说Windows和Linux有什么不一样,Linux和UNIX又有什么不一样?只有总结本身的框架、套路和方法,这些才永远不会被淘汰。

(6)实践和坚持

剩下就是多作多练,多坚持,只有实践才会有经验,只有锻炼了才可以把本身的脂肪变没,因此要把知识变成技能必须练,就像小学生学会加减乘除,仍是要演练,必须多作题,题目作得多了,天然掌握得好。

要挑选好的知识源,注重原理技术,有一些原理的基础的书太枯燥,可是我告诉你学习基础太值得投入时间,搬砖赚几十元不值得,由于赚的是辛苦钱,老了就赚不了,必需要赚更有能力的钱,这是学习投资。

2. 主动管理

关于成长咱们还须要主动管理,不主动管理会致使什么结果呢?被动管理,每天被人追着,没有效率。因此要学会主动管理,要想应对将来,把控变化,不主动管理,就不会有好的效率,由于被动就会被别人牵着鼻子走。

(1)管理时间

主动管理第一是要学会时间管理,不要被别人打断。若是你要干一个很重要的事情,建议开启手机勿扰模式,或者直接把手机关机。若是有一些重要的事就通知你们我如今干什么事情,从几点到几点须要全身心不要打扰我。

像我之前在一些大公司里面,若是我不想被别人打扰,就发邮件,就说不要打扰我。我惧怕别人止不住打扰我,这是很是重要的。你一天会领到不少做业,有不少事情要作,个人经验就是最短做业优先,有一些不是最紧急先作,我以为先作短的,短的很快搞完了,后面会有大块大块时间,为了省出大块大块时间,要把这些短做业清一遍。这些短做业其实最讨厌。

抓重点,一天干不了太多事情,因此必定要抓最重要的事情。另外想清楚再作,慢一点,欲速则不达,快速作完了要返工,又被别人管理,你作很差别人每天打扰你,这个问题那个问题,你怎么主动管理?主动管理时间就是想清楚再作别返工。

(2)管理需求

管理需求,经过了解“XY问题”,可让你减小不少工做量。“XY问题”就是有我的在网络上问别人,我怎么截取字符串最后三位?不少人提供了各类办法,而后相互争论哪一种办法更好。

这个时候有我的提问:“为何截取字符串最后三位?”,提问者说:“由于我要拿文件名扩展,就是操做系统文件扩展名”,那我的说:“操做系统文件扩展名不必定三位,有可能两位,有可能四位,有可能不知道多长”。

这就是“XY问题”,这个世界绝大多数给你X问题,就是告诉你字符串最后三位怎么解,可是其实X问题是什么?文件名扩展。这种问题太多了,产品经理和领导常常性不会告诉你X,他就会以为Y能够解决X,他屏蔽了不少信息,让你作Y,你不知道怎么作,作出来之后达不到效果又让你改。

X问题其实很重要。产品经理给你的需求不少,须要问他为何作这个,要达到什么目标,作成什么效果?而后你再告诉他,要达到这个功能为何用这个方法,为何不用一个更好的方法呢?这就是主动管理

(3)管理上级

另外要学习抓重点,区分必要性和科学性。需求有一些东西不必定要一次作好,有时候先抓最重点的,多问问为何要作,解决什么问题,达到什么目标,管理好需求,实在忙不过来讲只能作三个需求,撑死了要作第四个需求,若是让我一个星期作五个,我可能保证不了质量了,出了问题大家本身要担着,就是出BUG什么的。

这个就是向上管理。向上管理不是说让你说“不”,咱们永远不要说“不”,说“不”之后无论上级和用户都会讨厌你,可是咱们要说有条件的“是”。

咱们要给多个选项,你让我一周作五个需求,要给他选项。第一:我一周作不了五个,我能够作三个,而后我作哪三个,抓重点。第二个选项:给我两人,我作五个,你看行不行?还有第三个选项:一周能够作五个,可是质量不保证,可能会有不少的BUG,你愿意不肯意接受?

他把球扔给你了,你再把球扔出去,压力给到他,让他一块儿跟你承担这个压力,怎么让他一块儿承担这个压力呢?这就是条件。要把条件甩给他,我确定作,可是你要承担这个条件,就是上去承担作事情的后果,要么给我时间,要么就牺牲质量,又好又快确定须要条件。若是不费口舌,将来就会累得要死,必定学会费口舌。

(4)管理争论

第四是管理争论。有时候争论不休是挺痛苦的事情,你说服不了他,他说服不了你,这个事情到老板那边去了,老板也说不清楚,因此说主动说服对方是很重要的事情。

你要站在很高的格局,找到一些数听说服对方。更高的格局什么意思呢?他来找你实现需求ABC,你要跟他说,咱们更高的格局是什么?用户要满意,用户要满意确定不是ABC,多是XYZ,这就是更高的格局。

若是只是在这些细节纠缠,其实谁也说服不了谁。好比说用户是更高的格局,老板来了,CEO来了也干不过用户,由于用户是掏钱的。因此站在用户的角度会是比较好的,站在挣钱角度也是格局比较高的地方。

因此若是你想提高你的效率,你就须要主动管理时间,主动管理工做,主动管理你的上级甚至你的平级,甚至你的用户,还要管理好你的争论。

当你全面主动操控这些事情的时候,别说技术把控力了,其实你已经在在PUA他们,在精神控制他们。不然你是被他们在PUA,996就是一种PUA。因此主动管理谁的效率高,主动人高,被动人必定低。

4、总 结

因此咱们看学习方法包括总体提高效率,基本都须要主动,咱们的学习要变主动,找一些方法,咱们的管理也要变主动,找一些方法。

往大的方向,咱们须要看到整个世界的发展趋势,往小的地方,平时留意整个公司的发展趋势。整个公司是业务是什么?怎么进行的?创造什么价值?解决什么问题?这些都是很实在的。

当你知道了这些东西之后就会潜移默化改变你的选择你的选择,你行为方式,你的决定,包括你挑选什么样的技术等。

再结合你如何认识你本身,你有什么样的特长,你感兴趣的东西,你懂什么样的方法,你知道往什么样的地方付出.....

这些问题合起来就能够找到本身的一条路,在本身最适合的领域上。最后你还须要有一些比较科学的学习方法,还有一些比较科学的独立的管理方法,这样就能够面对焦虑、把控技术

5、Q&A

Q:程序员被会被取代吗?

A:程序员不会被取代!这里面有两层含义:

第一:老是会有更难的问题须要程序来解决,难度级别会愈来愈高。可是确定会有一些程序员被取代掉,技术含量不高的程序员会被取代。

第二:业务模型会变,20年前的业务模型是Web,过了十年又变成手机了,二十年前的数据量不大,单机系统就能够了,今天的数据量很大,变成分布式系统了,因此业务场景在不断变化。业务场景的变化,意味着不一样业务场景下要用不一样的工具。业务模型发生变化,技术也会随之发生变化,像我之前是Window程序员,如今Windows不作后端了就转作Linux,业务模型之前是集中式,如今是分布式的,但原理仍是同样。因此只要业务模型会发生变化,程序员就不会被取代,只是会出现更高级的程序员,首先是汇编,而后是C语言,而后是面向更高层,不管到哪个层级须要工程师的,这是改变不了的。

Q:众所周知基础很重要,可是大学基础理论没有通过实践,理论没有充分实践,工做追求实践,没有办法链接理论和实践的联系,咱们学习TCP协议有不少理论,可是实际工做当中运用这些原理和实际结合是怎么作的?

A:问题老是会有的,我之前在公司总会在某一些时候出现问题,技术故障、应变力,出现故障的时候不管作什么事情都会出现故障,有的故障可能很快能解决,有的故障须要很长时间,懂基础原理比不懂基础原理的人调查更快。

若是没有故障我就接触不到不少东西,我以为如今分工分的实在太细,不像咱们那个时候不分,测试和运维也都作。我建议你找找运维的同窗和架构师请教,若是可能能够帮他们打打下手,还有也能够经过开源项目实践相关的知识内容。

我有时候也到云平台买几台机器本身搭一个环境试一下,由于不实践、不动手真的很难掌握这些知识。有的公司真用不到这些东西,好比我很早之前就待过一个外包团队,工做上没什么技术,可是我仍是用业余时间学习,不少时候,工做上学不到太多东西,仍是要在工做之余本身搭环境学习。

而一些须要这些技术的公司,你若是不学懂这些技术的话,别人不会给你相应的工做的,因此,有不少时候,咱们能从工做上学习到的东西并很少,更多仍是要本身主动找地儿学。

Q:写了三年的业务代码感受迷茫,想作更大的事情找不到方向?

A:依照上文所说,产品要研究用户体验,作工具是增长效率下降技术门槛和成本,还有作一些基础设施、架构方面的东西,是为了提高性能。开源软件有不少这样的内容,当你没有方向就老实学习基础就行了。

Q :如何看待将来的后端技术和发展,好比说Serverless?

A :Serverless是须要更快上线更快维护。可是分布式的东西会带来不少问题。Serverless场景是什么样的,它到底解决的是什么问题,提升了哪些方面?也许它是昙花一现,什么问题没有解决,只是为了炫耀。咱们过去二十年这种炫的技术太多了,问题是你解决了什么问题?若是你不能很好解决问题,那么这个技术就是为了炫耀而炫耀,因此仍是回归本质问题。一但Serverless解决了实实在在的问题,那么就必定可以成为杀手级的技术。

Q:互联网的业务需求不少,加班不少,业务压力很大,怎么有时间学习?

A:就像前文说的要主动管理,怎么找到本身的时间,怎么样少加一些班,多学习,真的很重要。“两权相害取其轻”,我之前也是同样,之前作外包也是礼拜一到礼拜六,早上九点到晚上十点,可是我动做比较快一些,一开始我作工具,每次都让我作业务逻辑很相似的功能,我就本身抽象来作,需求很快就作完了,可是我不告诉他们我作完了,我说我尚未作完,我就腾出一点时间本身学习了。可是你也别太离谱了,我也加班,可是我本身学个人东西,我偷偷看书什么的,这些小技巧,若是你不充电、不学习你确定到不了下一个地方去,因此千万别太透支了,仍是要找到一些技巧的一些东西的,能够主动的管理本身的时间,不要你作完了别人又给你活儿,要学习主动管理。

Q:如何识别“XY问题”,有时候产品经理提出问题我这边没有思路,我又不了解这个领域?

A:你要跟产品经理弄清“XY问题”,就必需要了解这个领域。没办法,多少你要比他懂一些,才可以跟他反驳和争论。还有一个方法,当产品经理有时候无理取闹的时候,你能够问他:“你到底没有数据,你说这些有没有什么依据?”,不必定是数据,有没有依据支撑你说的有道理就行,证实需求不是本身拍脑壳决定的,有没有其余公司是这么作的?相似这样的也能倒回去,这里面仍是有一些小技巧的。

Q:做为一个程序员由于工做性质在公司没有太多机会接触到架构实践的内容,感受难以提高,怎么破局好?

A:没有人一开始能够接触这些东西,这里我分享个人经历。我一开始也接触不到,每一个人入行都不可能接触到这些东西,可是我但愿你必定要让别人看到你在学这个方面的东西。

首先你必定要让别人看到你在学架构方面的东西,你桌子上多少放点像分布式架构方面的书,让别人知道你在学这方面的知识,你和其余的程序员不太同样,这样别人可能愿意给你这个机会,给你分享更多知识经验。

第二个就是:主动找公司里面一些技术厉害的人聊天吃饭,我之前也是这样的,找一个高级程序员约他吃饭,找他讨教问题,就找他学习就能够了,学到必定时候你就问他,有没有一些什么周边的事情我能够帮你作的,就这样先认识人,认识了人之后跟他学习,找他讨教,别白请教别人,该请吃饭或者是红包,给别人是好学主动能够被人带的印象,有了这个印象之后别人才会给你机会,抓住那个机会就慢慢过去了,大概是这样。

Q:请问老师您对于Python现在的快速发展是怎么看的呢?

A:Python之因此发展很快速,是由于它下降了技术门槛,让通常人很快能够编程,好比在一些科学和大数据领域,让不懂编程的数学家们能够很快上手,这是Python下降开发门槛的一个特性。可是咱们程序员了解Python其实仍是一个脚本语言,作分布式或者更深层次的系统的时候,仍是须要回归更为高级的语言。因此Python之因此火,其实更可能是让那些并非科班出身的一些程序员和孩子们更容易接受编程。这是我今天的理解,每一个语言都有每一个语言的场景,用python写一些自动化的脚本是挺好的,可是要作工业级的软件,它离Java还有必定的差距。

Q:Scala和Java有什么区别?

A:Scala比Java好用不少,可是Scala本质上仍是Java类的基于JVM的,我以为Scala很好,语言没有问题。不过社区里面更多仍是Java,我以为Java要先学好,Scala也挺好。

Q:有时候压力比较大,大到不想作执行,拖延症怎么办?事情尚未作完,拿不出时间学习,在公司放不开,有点闷如何解决?

A:仍是那句话,认识本身,找到你的长处,哪一块地方你有足够自信。关键要找到本身有信心、能上手、有感受的东西。多想一想你的擅长点和兴趣点,最后勤能补拙。

讲师简介

陈皓(左耳朵耗子)

陈皓,左耳朵耗子,MegaEase 创始人,腾讯云最具价值专家(TVP)。资深程序员,酷壳coolshell.cn博主。前亚马逊高级研发经理,阿里巴巴资深架构师技术总监。目前创业,公司 MegaEase 创始人,致力于为企业用户提供一个能够不改一行代码就能够提升系统性能和稳定性的产品,即 Cloud Native 和微服务调度。

关注云加社区公众号,回复“左耳朵耗子”,便可获取老师演讲PPT~