当前位置:   article > 正文

大佬心得 - 程序员如何更好的把控自己的职业?(1),web移动web开发

大佬心得 - 程序员如何更好的把控自己的职业?(1),web移动web开发
  • 2010年到2020年,这个时代叫TB时代,这过去的十年是移动互联网时代,移动互联网只需要手机在线,不需要依靠电脑。因为手机随时在线,所以个人的各种各样的数据始终在被收集,只要用户上网就会产生数据,所以人的行为最终也被数字化了。

所有的硬件和软件都是跟着需要处理的数据而演进的,我们需要更大的带宽,更大的硬盘,更多的处理器……大到一定时候就只能进入分布式化的技术架构了,再大,数据中心也顶不住了,就会要引入更为分布式的边缘计算了。

另一方面,从业务上来看,我们可以看到整个世界就在不断地进行数字化,因为,只要数字化了,就可以进行复制传播和计算,只要可以进行计算了,就可以进行数学建模,就可以自动化,只要可以自动化了就可以规模化,只要可能规模化了,就可以改变整个行业。人类的近代史的大趋势基本上都是在解决能源和自动化的事,源源不断的能源是让机器不知疲倦的前提条件,用机器代替牲口,代替人类进行工作是规模化的前提条件。

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

人才需求

在这个过程中,需要什么样的人?下面是我的一些认识——

  • 技工,在机器和自动化面前,肯定是需要能够操作机器的技术工人了,这类人是有技术的劳动力。在编程的圈子里俗称“码农”,他们并不是真正的工程师,他们只是电脑程序的操作员,所以,随着技术门槛的下降或是技术形式的变更他可能就会变得越来越不值钱,直到被淘汰掉

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

  • 工程师,不但是使用技术,还可以把活儿做好,他们认为代码更多的时间是在维护,这些人使用各种各样的手段和各种技术,精益求精地持续不断地提高代码的易读性、扩展性、可维护性和重用性,这个过程似乎永无止境。对于这些有“洁癖”,有“工匠精神”,有“修养”的技术人员,我们称他们为工程师。这种人做事又稳又快,而且可以做出很多称手的工具和方法论

  • 再往上是设计师和架构人员,这些人主要是开发一些工具,框架,模式,提升软件开发和维护效率,同时也提升用户体验,和提升稳定性、性能、代码重用等,总的来说就是为了降本增效。这类人的工作降低了技术得到门槛,他们把技术门槛降低了以后,就可以把这个技术普及开来,就可以由广大劳工、技工、特殊工人使用了。

  • 还有一类人是经理,经理主要是组织团队、完成项目、创造利润。这类人中,即有身先士卒的leader,也有高高在上的boss,但无论怎么样,这些人只不过是为了让一个公司或是一个团队更好组织在一起的“粘合剂”,这类人只有在大公司中才会变成更有价值。

这就是我总结的世界需要哪些人才,我们了解这些东西以后大概就明白我们现在所处的位置有什么样的问题,我们应该去什么样的地方。

Google评分卡

接下来,我们再来看看Google的SRE的自我评分卡:

0 – 对于相关的技术领域还不熟悉

1 – 可以读懂这个领域的基础知识

2 – 可以实现一些小的改动,清楚基本的原理,并能够在简单的指导下自己找到更多的细节。

3 – 基本精通这个技术领域,完全不需要别人的帮助

4 – 对这个技术领域非常的熟悉和舒适,可以应对和完成所有的日常工作。

  • 对于软件领域 – 有能力开发中等规模的程序,能够熟练和掌握并使用所有的语言特性,而不是需要翻书,并且能够找到所有的冷知识。
  • 对于系统领域 – 掌握网络和系统管理的很多基础知识,并能够掌握一些内核知识以运维一个小型的网络系统,包括恢复、调试和能解决一些不常见的故障。

5 – 对于该技术领域有非常底层的了解和深入的技能。

6 – 能够从零开发大规模的程序和系统,掌握底层和内在原理,能够设计和部署大规模的分布式系统架构

7 – 理解并能利用高级技术,以及相关的内在原理,并可以从根本上自动化大量的系统管理和运维工作。

8 – 对于一些边角和晦涩的技术、协议和系统工作原理有很深入的理解和经验。能够设计,部署并负责非常关键以及规模很大的基础设施,并能够构建相应的自动化设施

9 – 能够在该技术领域出一本经典的书。并和标准委员会的人一起工作制定相关的技术标准和方法。

10 – 在该领域写过一本书,被业内尊为专家,并是该技术的发明人。

SRE需要自评如下这些技术或技能。

– TCP/IP Networking (OSI stack, DNS etc)

– Unix/Linux internals

– Unix/Linux Systems administration

– Algorithms and Data Structures

– C/C++

– Python

– Java

– Perl

– Go

– Shell Scripting (sh, Bash, ksh, csh)

– SQL and/or Database Admin

– Scripting language of your choice (not already mentioned) _____________

– People Management

– Project Management

这个评分卡是面试Google前需要候选人对自己的各种技术进行自评,也算是一种技术人员的等级的度量尺,其把技术的能分成11个等级,我用颜色把其它成四大层级,希望这个评份卡能够给你一个能力提升的参考标准。

认识自己

认识了世界是怎么发展的,也知道技术人员的种类和层级,那么还要了解一下自己,因为如果不了解自己,那么你也无法找到自己的路和适合自己的地方。

我觉得,一个人要认识自己就需要认识自己的特长、兴趣、热情、擅长等,下面是一个认识自己的标准方法:

  • 特长。首先你要找得到自己特长。你要认识自己的特长,找到自己的天赋,找到你在DNA里比别人强的东西,就拿你的DNA跟别人竞争就好了。所以你要找到自己可以干成的事,找到别人找你请教的事,你身边人找你请教就是说明你有特长。这是找到自己特长非常非常重要,扬长避短。

  • 兴趣。如果你没有找到自己特长,就找自己有兴趣有热情的东西。什么叫兴趣?兴趣是再难再累都不会放弃的事。如果你遇到困难就会放弃不叫兴趣,那叫叶公好龙。不怕困难,痴迷其中,就算你没有特长,有了这种特质,你也是头部的人才。

  • 方法。如果你没有特长,没有兴趣和热情就要学方法。这种方法就是要有时间观念,要会做计划,要懂统筹、规划对于做过的事情,犯过的错误多总结,举一反三,喜欢自己找答案,自己探究因果关系,这是一些方法,自己总结一些套路。

  • **勤奋。**如果你没有特长,没有兴趣,也没有方法,你还能做的事就是勤奋,勤奋注定会让你成为一个比较劳累的人,也是很有可能被淘汰的人随着你的年纪越来越大,你的勤奋也会越来越不值钱。因为年轻人会比你更勤奋,比你更勤奋、比你斗志更强,比你能力更强,比你要钱更少的人会出现。勤奋最不值钱,但是只要你勤奋至少能够自食其力。

以上就是为了应对未来技术变化,作为个人必须要从特长、兴趣、方法一层一层筛选挖掘,如果没有这些你就要努力和勤奋。就只能接受“福报”了

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

打好基础

最前面提到我学的各式各样的被淘汰的技术,会让你感觉很迷茫,或是迷失。但前面也提到了“谷歌评分卡”,在这个评分卡中,我们看到了许多基础原理方面的内容,其实要应对未来的变化,很重要的一点就是无招胜有招,以不变应万变。

变化都是表面的东西,内在的东西其实并没有太多的变化。理论层面上变得不多,反而形式上的东西今天一个花样,明天一个花样,所以如果要去应对这种变化,就一定要打牢自己的基础,提升内功修养。比如像编程的一些方式和套路,修饰模式原理本质,解耦,提升代码的重用度等。提升代码重用度必须解耦,要跟现实解耦,提升抽象,这些都是一些技术基础。无论用什么语言,都是这么做的。

打牢基础就可以突破瓶颈,不打牢基础没有办法突破瓶颈。在技术世界不要觉得量变会造成质变,这是不可能的。技术这个东西就像搞建筑砌砖头,砌砖头砌的再多也不可能让你能成为一个架构师的,因为你不懂原理,不懂科学方法,你就不可能成长上去的,就像学数学一样,当你掌握了微积分这种大杀器后,你解题的能力是无所披靡,而微积分这种方式绝对不是你能“量变”出来的。

所以你必须学习基础的理论知识,如果不学这些基础理论知识,还要学习解题思路和方法,如果你只学在表面,那么当这个技术的形式有变化,就会发现以前学的都没用了,要重头学一遍。掌握技术基础可以让自己找到答案和知识,基础是抽象和归纳,很容易形成进一步的推论。我们学的很多技术实现都逃不脱基础原理,不管是Java,还是其他语言,只要用TCP用的都是相同的原理,逃不出范围,只要抓住原理,举一反三,时间一长了,甚至还可以自己推导答案。对于技术的基础,我会把其它成四类:

  • 程序语言:语言的原理,类库的实现,编程技术(并发、异步等),编程范式,设计模式……

  • 系统原理:计算机系统,操作系统,网络协议,数据库原理……

  • 中间件:消息队列,缓存系统,网关代理,调度系统 ……

  • 理论知识:算法和数据结构,数据库范式,网络七屋模型,分布式系统……

这些知识其实就是一个计算机科学专业的学生他所要学习的原理,但可惜的是,我们的一些学校教得也很糟糕,不但老师能力不足,而且放着世界上最优秀的教课书不用了,一定要自己写一本。讲也讲不全,还有各种错误,哎……总之,如果你学习用用到的教材不行,那么可以肯定的是你的学习效率一定是很糟糕的。这就是为什么我们大学上完了,还是跟个傻瓜一样,还要在工作中再重新自学。

不过,就算自学,这些基础技术大概需要四五年的时间堆叠。我工作二十年了,这二十年来基本还是这些原理没变,无论形式怎么变,但是核心永远还是这些,理论创新很难,这是以不变应万变

学习效率

谈到学习效率,就需要拿出这张学习金字塔的图来了。从图可以看到学习方法分布两层,一种是被动学习,也是浅度学习,听讲,阅读,视听,演示都是在被动学习,而与人讨论,自己动手实践,教授给别人是主动学习。主动学习我们称之为深度学习,如果你不能深度学习,你就不能真正学到东西。这也是你会经常有“学那么多干什么,不用就忘了”,这就是浅度学习的症状了。

下面,我给出一些我自己觉得不错的学习经验:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

什么?你问面试题资料在哪里,这不是就在你眼前吗(滑稽

/03/13/H4lCoPEF.jpg" />

最后

基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。

什么?你问面试题资料在哪里,这不是就在你眼前吗(滑稽

资料领取方式:戳这里免费领取

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/1016033
推荐阅读
相关标签
  

闽ICP备14008679号