三年,足以完成从双非到互联网大厂的跳跃
副标题[/!--empirenews.page--]
本文转载自微信公众号「码农皮邱」,转载本文请联系码农皮邱公众号。 01 近年来,有些读者会问我一些形形色色的问题,让我很难去回答,甚至给不出建设性的意见。 举个例子: 1.我学习什么能进入优秀的互联网公司工作? 2.我想做研发我应该学习什么? 众所周知,这问题就像你问学霸你为何如此厉害一样让人难以回答。我作为一个双非软工本科学生,经过大学自己摸索和不断试错,毕业开始在百度从事研发工作。其实,我当时也有很多的疑惑,在这里给大家讲讲我的踩坑历程。 记忆中,我当年逛知乎、求助高人、甚至我的导师,都无法给出一个可操作的建议。除此之外,在我那种二本学校,知名企业都不会去咱学校校招,我和学长们对春秋招的概念微乎其微,进大厂是件很困难的事情,概率与踩狗屎不相上下。 作为探路者,求助知乎和论坛,给出的结论几乎都是好好学习数据结构/算法、现在大数据很火你应该学学Hadoop/Spark、你要是会微服务、docker、k8s一定会很加分。 让我想起了我当年问学霸题目如何解?学霸说:这个题目是来源于第X章第X例题,你这样解,答案就出来了,很容易的。至于为什么他能想到,鬼也不知道。 当时,我真的是花里胡哨的啥都学,啥都去倒腾,不知道是不是梁静茹给我的勇气。前端、后端技术栈、Hadoop/Spark、docker/k8s这些几乎都实操过,只是很多只是入门并没有深入研究,效果自然也十分有限。 这些概念,对于小白或者在校生来说,这仿佛在对说你不用学了,除非你天生技术欲望特别强烈。这对于大多数普通人来说,明显是劝退的节奏,可操性十分有限,几乎没有参考价值,不知道从何下手。 其实,道理是没有错的,多研究底层和热门技术栈是有益的。但是,脱离实际情况谈技术就是扯犊子,就像让中国男足拿世界杯冠军显然不符合实际,更应该是根据实际情况,做产出最大的事情,否则会信心全无。 接下来,我系统性拆分问题,在不同阶段应该「学什么」、「如何学」、「学到什么程度」,重点讲我当时遇到的问题,还有我是如何去思考的,最终如何解决的,思路比结论重要。 02 根据问题归类来看,主要在我自己的角度谈谈普通本科如何实现进入Top级互联网工作? 首先,说说在大厂工作都是些什么样的人,他们当年都是背着什么光环混进去的? 经过我的调研和分析,重点说一下在校招中面试官看中和考察的东西。 1.学历/专业、扎实专业基本功 2.有成果的科研经历 3.省/国家级软件设计大赛 4.丰富互联网公司实习经历 5.小有名气的开源项目经历 大概思路就是,要么你证明你令人信服的天赋如逻辑系统思维、聪明,让人觉得你可以被快速培养;要么你有丰富的工程实战经验,证明你具备优秀工程师的潜质。 当然,你可能会说这么多要求,恐怕神仙也做不到啊,简直太苛刻了。在这里,并不是上述要点全部满足,只是满足其中两项证明你的实力即可,毕竟面试时间十分有限,要有点让人信服的东西,否则谁愿意花时间跟你逼逼没用的。 举个例子: 1、假设你是上海交大、浙江大学等学校毕业的学生,有名校学历在后面背书,你可能只需要重点复习数据结构/算法等专业知识,辅之把学校的科研经历说一下,大概率能进入阿里华为百度等大厂,专业知识对于你们来说自然不在话下。 2、假如你是双非大学毕业的学生,那么你必须用国家级大赛、开源项目、互联网公司经历证明自己。总之,多做项目,专注于技术本身,让自己更早具备职业软件工程师的实战技能。 简而言之,你没有光环,那就比别人多努力点,提前做好职业规划,把时间投入技术本身不要投机取巧。 03 鉴于上述分析,知道需求是什么?对于我们来说,主要把精力投入在技术本身。 接下来,我们将面临一系列问题。 1.我应该做什么方向?(方向) 2.我应该学习什么内容?(规划) 3.我如何学这些内容?(方法/策略) 4.我应该学到什么程度?(量化) 5.如何把理论用到实际项目/产品中?(产出) 不同方向,意味着不同领域不同,学习的知识和实战项目有共性也有差异。在这里,我主要讲一下通用的思路。重点拿我擅长方向举例,其他方向可按照同样思路举一反三。 根据我的经验,可将内容分为原理、应用、擅长方向三个纬度。原理和应用纬度必须学习,方向纬度根据自己擅长方向深入学习。 原理:计算机网络、操作系统、数据结构/算法,这些东西都是专业课好好学即可,数据结构/算法可以偶尔刷题。校招的时候再重点复习,初级阶段不必花太多时间深究。 应用:它是最基础的内容,不管你从事什么领域都将离不开它们。这也是小白入门重点花费时间的地方,你将在这里不断与程序斗争如调试、验证、异常、解决。 方向:不同方向本质上就是在基础应用上扩充,发挥它们擅长领域和特性去解决特定问题。在这里,简单列一下涉及的技术栈。 1.后端开发:消息队列、缓存、rpc、微服务。 2.大数据开发:Hadoop、Spark、Storm、Flink 3.自动化运维:elk、ansible、zabbix、docker、k8s 04 基于上述分析,主要讲了整体思路,大家可能会觉得有点不太好理解。接下来,拿我当时遭遇的处境进行举例阐述,这样让不同水平或时期的同学有不一样的体会。 假如有时光机让时间往后倒退3年,时间来到我刚上大二的时候,作为一枚小萌新开始学习JAVA走上后端开发之路。 对于我来说,操作系统原理、计算机网络先战略性放弃,毕竟刚接触编程,看高大上的原理,每次上课都想睡觉。当然,数据结构/算法我还能好好听听,毕竟我数学功底还行让我不排斥。 为什么不先学习基础性原理? 举例:假设你学骑自行车,你是直接上去就蹬?还是先把轮子拆下来研究清楚原理再去学习怎么蹬? 重点:根据我的经历,在新手阶段不管是接触新的语言,还是新的方向。最快的方式就是先把自行车蹬起来,等你蹬熟练了再去研究轮子是怎么造出来的。 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |