谁能想到,工作三年的我,后来能入职某大型互联网公司。

我是怎么入职大厂的?

刚毕业那年,我以外包身份进入某公司,那个时候几乎每一天都很焦虑,大家技术能力没差太多,为什么我是外包身份?

后来辞职,**去了一家不到20人的创业公司,担任Android技术人员。**当时还挺满足现状的,毕竟压力不大,薪资也不错。

有一次和前同事聚会,和几个在BAT的同学聊到技术,发现自己在创业公司这几年,完全是吃老本的状态,一直在纯输出,创业公司的业务发展很慢,不管是管理还是技术都很受限制。

**然后我就针对自己的一些弱项,刻意输入一些东西,达到提升技能效果。**庆幸年纪还不是很大,学习能力比较强,又通过一位前同事的引荐,就进入了现在的公司,并且一路成长,薪资基本上可以碾压同龄人了,这期间我一直都保持着对技术诚恳学习的态度。

回顾自己做技术的3年,总结一句话就是:

打破个人局限性,保持刻意学习,输入与输出并行,才有进入大厂的可能。

关于如何学习?

如今技术的发展非常快,程序员怎么跟上?很多人会问我是怎么“一路逆袭”的,后来发现刚毕业的新人都有普遍的问题:工作那么忙,根本没时间学习。

确实如此,互联网行业的工作节奏快,强度高,下班又晚,但如果你就这么下去,确实是又忙又累之后,还在原地焦虑。有针对性的瞄准自己要提升的技术项目,系统性地学习,才是关键。

这不赶上金九银十,最近就跟我的朋友技术大牛交流了一下,于是就有了这篇文章。

工作三年多了,做技术不能只顾埋头搬砖,也要定期回顾,思考未来,不要让自己成为那种一年经验用了十年的开发者,这点要时刻提醒自己。

工作三年多,很多有能力的小伙伴都离职了,去百度搞云计算的,去阿里搞AI的,去大疆的,去美团的…对自己有触动吗?那是肯定,没有才是假的,但是自己却在舒适区里天天按部就班的过着,绩效薪水都还不错,但是技术能力呢?本来就不高,还遇到提高瓶颈了,囧~ 反观周围的老同事,好多搞管理了,带版本管项目,天天拉通对齐端到端… 既然想走技术路线,就该好好想下工作后如何有效的学习了。

工作中积累的局限

从自己的工作谈起,三年多Android开发,第一年收获最多,工作需要的编程方面技能补齐后,就可以很好的应对业务需求的开发了。「工作后,你只需要比大家多努力10%,回报则胜过50%」,亲身体会真是一点不假。

工作后,稍微深入点知识的学习都只能靠自己。观察周围同事,对技术很有热情的并不是很多,除了一些专家大牛,很多老员工单就技术能力而言跟入职两三年新员工的技术能力没什么差距,我思考了下原因,大概如下:

  • 工作所用到的技术知识有限,很多人也没有去深入了解背后的原理;
  • 业务代码对算法的锻炼不太够,时间长了算法能力会减弱;
  • 没有那么多特性会给你架构设计的机会,并且架构都是专家定好的;
  • 不去主动拓宽知识面,去学习新东西,技术栈长期不更新;
  • 基础知识掌握的不够透彻与深入,毕竟经典是需要反复研读理解的;

我工作这三年觉得自己收获的最有用的经验就是:问题定位能力,提前识别坑,快速填好坑。当然,也见识了一些优秀架构的设计,但也仅限于见识与使用。

工作外有效的学习

先说说我自己平时工作之外的学习,基本就是下面的三项:

  • 看看书和网上的文章:工作相关、兴趣爱好、技术热点;
  • 动手实践并总结博客:类似课后题和课程设计,实践总结;
  • 刷刷LeetCode算法题:提升算法能力和写代码的手感;

自己的学习个人认为还是有效的,学习成长自己是能体会的到的,并且工作也做的不错,只要稍微比同事多努力一点,就能有很多回报,工作后真的是这样。但是呢,自己的水平自己清楚,并且自己的努力程度远远不够。看一个大牛的心得《如何成为一位技术专家》:

如何成为一个技术专家?答案其实很简单,努力学习。

从学生时代一路万马奔腾而来,什么时候努力的效果最差,高三的时候,因为大家都是如此努力,工作后,你只需要比大家多努力10%,回报则胜过50%,不止在技术上,其他领域也是如此。

《最牛B的编码套路》一文提到了技术上的训练方法:预期留出时间,集中锻炼,留出技术梯度,时刻关注自己有完成目标,到达瓶颈。

程序员最重要的素质是“不断努力学习”,要不断地挑战自身能力之外的东西,运动爱好者们经年的跑步锻炼,可是仍然跑不过刘翔,业余象棋看上几千盘,仍可能被一个初出茅庐的棋院学生杀个大败。

不断努力学习,不断训练,在于发现短板,并有针对性的提高。

套路一文提到了很多训练方法,其实我很赞同最后的两个方法:

1. 写博客;2. 参与开源项目。

关于写博客,牛人们是非重点不写,自己则没必要非得高大上,还要解释一下,个人感觉刚开始写博客则是要养成定时习惯,有什么写什么,虾米再小也是肉,这个月不写,下个月要补上。当然中间的区别是,现在我是写给自己看的,牛人们是传播知识。

参照大牛的文章反观自己:开源项目没参与过,这点自己有待提高。

对于写博客我比较认同大牛的看法,写博客也就是记录总结下自己学习笔记,方便自己回顾查看,没必要想着多高大上,自己也就一水平普通的程序员记录点东西而已。

之前在知乎看过一个问题,是关于微软一员工和Facebook一员工PK的,觉得很有意思,我很欣赏里面一个回答,摘录部分:

老乡,江汉臣,他在一个回答里说自己得清华特奖的经历是”下课做很多题目,然后提前看一些考研的题目,然后就超过了同班的同学,可以去帮助他们”,体会一下,特奖诶,清华诶,课下不应该去读普林斯顿数学讲义实现突飞猛进么,考研试题什么回事,太low了吧,清华peer pressure这么弱的么,实际上这一点都不low,这叫”祛魅”,这叫”平实”,你看ZB就从来不说自己是怎么学习的,他说自己是天才嘛,可能用的是记忆面包,所以我们快来膜拜他。

作者要表达的是什么?大牛靠的也是科学的方法和踏实的努力。

吹捧神化之类的真的也没必。不盲目崇拜,不妄自菲薄,踏踏实实学习,博客写的东西简单不low,LeetCode题目做不出来也没啥,静下心来学习就是了。

天才是极少数,大部分牛人还是厚积薄发一步步积累出来的,靠的还是朴实科学的方法,再加上多一些勤奋。

在关于LeetCode刷题难不难时,很多北美FLAG员工也现身说法了,初期都会难,练的多了就好了。自己知道的读书时的大神,工作后的大牛同事,靠的都是平时踏实的努力。

关于LeetCode刷题

单独把刷题拿出来说,是因为刷题真的很重要,而且很有用。

作为一名developer,最本质最核心的工作就是:用代码把功能特性给实现,能够使用合适的算法,快速写出尽量bug-free的代码!

工作三年来,我LeetCode其实没刷多少,100道都还差的远,真是惭愧。不过公司内部的OJ刷了100多道,因为是转正要求,相比LeetCode水了点,囧~~ 。

虽然自己OJ刷的不多,但是仍然可以明显感觉到刷题让写代码的手感提高不少,也可能是因为自己当时太菜,再次囧~~。

定期刷题,是做的针对性训练,这个是一般项目给不了的。

关于学习的时间安排

技术的学习,不像是背单词,可以零散着来,需要有完整的大块时间集中注意力去学,尤其是啃硬骨头时。很多难点都是靠长时间专注思考突破的。

对于技术的学习,要做到长时间的专注。如果不能做到长时间的专注,那么学习的效果就要大打折扣了,知乎上一个问题:如何做到长时间(4 个小时以上)精神专注?,里面有个回答我非常赞同。

PS: 赞同来自己的经历和亲身的体会,而不是因为这个答案本身的高票。摘录部分:

我听闻番茄工作法已久。但是我自己从来没用过。我很好奇的是,无数的人赞同他的时候自己是否用过。

对这个问题我有很多疑问,要是打断的时候正好是我精力最集中的时候,怎么办?不停地这样中断,每一次中断我就要保存一次现在看到哪儿了,然后下一次开始的时候我再去进入状态,接上思维,这个开销可以忽略不计吗?

还有不停的设置时间提醒自己,不嫌麻烦吗?

PS: 这个我用过,发现不适合技术学习和编程练习,每次时间太短!让你的注意力聚焦在你所做的事情上,你的处理速度趋近于你的接收速度,你的思维跟上你所做的事情的发展。然后保持,就OK了。

你就很难两小时精神专注于教科书上,首先,你就不一定感兴趣或者不想看教科书的内容,注意力就集中不了,其次就算你集中注意力开始看,你的处理速度是跟不上你的接受速度的,因为教科书的知识密度大,一页书包含了可能很多的信息,你大脑处理不过来。

PS: 学有点难度的新东西,我一般适当放慢速度,笔记演算,反复看!过快是没有效果的,还容易注意力降低走神懈怠。

举个阅读的例子。阅读长篇英文的时候,大家是不是会有经常看着看着就不知道看到哪儿去了的经历?这时你的大脑就不是在积极主动工作,而是被动工作的。事实是,如果你一边读一边想这段文字的他在表达什么,和上一段是什么联系,和文章主题是什么联系,说完这一段,下一段你预期他应该讲什么,到了下一段是否符合你的预期,如果符合的话你可以加快处理速度,如果不符合你就去修正你的预期。

这样去阅读的话,那么你会发现你就不容易走神了。保持运动、充足睡眠。

保持运动是为了睡眠质量高,身体健康,醒着的时候精神状态好。

精神状态好,你的机体都能发挥正常的功能,大脑能够正常处理它接受到的信息,眼睛能够正常地阅读。

要对自己诚实

认清自己的不足,坦诚面对不逃避。自己过得好不好,工作开不开心,能力有没有提高,技术怎么样,自己最清楚,千万不要自欺欺人,混混沌沌的过日子。一个前Google 程序员的文章写得很好:从对自己诚实开始,摘录部分:

现在回看以前自己的博客,悲哀的发现自己已远没有当年对技术的热情,或是对人生目标的清晰——上学时自己的想法很单纯——写最好的程序,然后以此作为基石找到一份好工作。

现在看这个目标是实现了:找到了一个对应届生而言还不错的工作,自己还写了一篇现在看起来十分可笑的心路历程,当时那篇文章被各种转发,自己的虚荣心也得到了极大满足。

可笑的是,我在 Google 里工作不顺,并没有自己想办法改变现状,而是在工作以外的地方寻找慰藉,以填补自己的虚荣心。在这段时间,我创建了自己的独立博客,并花费大量业余时间撰写了诸如 Sublime 教程和程序员必读书单之类的质量长文。这些文章的反响很好,我因为这些文章也成为了读者口中的大牛。

虚荣心再次得到满足。然而与网络的“成名”相比,自己在现实工作中毫无进展。自己在 Google 3 年始终停留在入门级别(一般来说,正常表现一年半到两年就可以升一级),尽管有换组和项目被砍这些因素,但无可否认,自己前三年的工作(也许是最宝贵的三年),彻底的 doomed。

在 Google 时有不少人通过我的博客找到我,想和我约饭聊天(他们可能认为我真的是大牛吧),都被我自己的偷偷的躲掉了——我并不想让他们看到现实中的自己。

2017 这一年中,我在 FB 写了不少东西,也结识了不少新的朋友。读了一些书,也获得了一些新的技能(开车,摄影,举重)。

最大的收获,是终于可以诚实的面对自己,不会因为自己在线上和线下的不一致而产生自我认知矛盾。

与其在网络上打扮成自己希望别人所看到的自己,不如对自己诚实,在现实中成为自己希望的自己。

希望这篇文章可以终结我自己的浮夸,终结我 5 年前写的那篇文章的“诅咒”。Stay hungry, stay foolish, and be honest to myself。这是 18 年的第一篇文章,但不会是最后一篇。希望我可以通过写作,锻炼自己的思考能力,总结自己的收获,清晰自己的目标,让自己对自己更诚实。

最后

真情实感的故事,总能引起共鸣。

想成为自己期望成为的自己,首先要坦诚面对真实的自己。改变不是一蹴而就,而是从每天的一点一滴做起,谨以此文督促自己的改变!

越努力、越幸运,如果你不是官二代、富二代、红二代,那么请记住:

勤奋才是改变你命运的唯一捷径

我相信乔布斯说的:

只有那些疯狂到认为自己可以改变世界的人才能真正地改变世界。面对压力,我可以挑灯夜战、不眠不休;面对困难,我愿意迎难而上、永不退缩。

为此,我分享一份大佬收录整理的Android学习PDF+架构视频+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效的帮助大家掌握知识、理解原理。

当然你也可以拿去查漏补缺,提升自身的竞争力。

相信它会给大家带来很多收获。如果你有需要的话,可以点击获取!

喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~

更多相关文章

  1. 技术迭代迷茫?Android资深架构师教你如何打破这个局面!
  2. Android多媒体学习七:访问网络上的Audio对应的M3U文件,实现网络音
  3. Android(安卓)Annotations 学习之路(一)环境配置以及@EActivity在
  4. 在这个问题上,能看出 Android(安卓)工程师的真实水平
  5. 2020年最新Android大厂面试题全集整理,只为你进BAT增强50%的成功
  6. Android图像处理技术(实现Android中的PS)(三)
  7. Android学习之 那些让我生疏的配置属性
  8. Android学习14--Android应用资源
  9. android手游渠道接入业务+技术全讲解

随机推荐

  1. 将对象值传递给指令而不是任何其他数据变
  2. 使用angularjs添加包含事件的新标记
  3. 使用倒计时进度条退出
  4. jQuery Slimbox没有正确请求文件
  5. 如何通过javascript显示隐藏的div?
  6. Javascript对象
  7. 在jQuery中使用css transform属性
  8. 根据用户时区显示当地时间 php+javascrip
  9. 从两个数组生成JSON
  10. 使用谷歌地图computeDistanceBetween获取