前言
2月初,春节已过,本是伊始之初,却因为陆续有同事离职,心中多少有些悲凉之意,顿然想起从参加工作到现在。至今五年已过,当年青涩懵懂的小年轻,如今出街招摇过市时,被小孩子看到都会喊声大叔。
回想这五年,有心酸和无奈、有快乐和期待、也有不断的蜕变和成长。趁着快到五一小长假,写下这一路的心路历程,于己,是一个总结和督促,于读者,是一个故事,兼听则明,希望对你们有些许启发,足矣。
缘由
前段时间突然接到同行好友的电话,要和我聊聊天。
他说他们部门调整,虽然最后他留了下来,但还是非常焦虑。人无远虑必有近忧,他这次被刺激到了,想提高一下自己,以免下次再有类似的心惊肉跳。但怎么提高呢?
程序员第一考虑的当然是技术,但现在真不知道学什么了:干了三四年的开发,手头的工作马马虎虎都没什么问题了。就算有问题,也是业务逻辑上的问题,系统太复杂,吃不透;或者系统里一些过时的/生僻的技术,真心觉得没必要花时间花精力去研究,能对付就行了,是不是?反正下家单位99.99%的几率是不会用到这些东西的的。
那么就是一些新技术了。新技术杂得很,不知道学什么,框架类库啥的其实没什么技术含量,一两个星期就可以上手,上手了之后呢?往深里学?其实和老旧技术一样的问题,谁知道下一份工作用不用得上呢!而且没趣,大概是因为没有挑战性吧,反正就那个样,还能咋的?
学习瓶颈
一直聊到这里,我都非常理解。我这个5年的老码农,体会比他还深。其实稍微干上一些年头,就是这个样子,看起来像是“学习热情下降”“懒得学习”,但本质上呢,两个原因:
1、本身的技能增强,能够应付日常工作,没有刚入行时那么大的压力了。
2、学习的边际效益递减,所以开始考虑投资/收益比了。
刚入行的时候,技术一丁点的进步,都能带来非常大的成就感,至少能少挨点骂,是不是?积累到一定时候,就可以跳个槽涨点工资啥的。但三五年过后,
我已经会了:
- 熟悉Android OS系统体系结构、framework层;
- 良好的Java技术功底,精通多线程、socket通信、文件操作等java底层技术;
- 精通Android的基本组件使用,熟练使用Android各种布局与控件,熟练运用各种动画特效;
- 熟悉View的绘制原理,精通自定义动画以及自定View的开发
- 有丰富的Android性能优化经验,善于解决系统崩溃,内存溢出和兼容性问题;
- 熟悉JNI技术和代码混淆
- 有单元测试、自动化测验及相关框架经验;
- 有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,代码冗余率低,代码注释清晰;
下面分享一下我自己的例子。
开发5年一个月面试6家大厂的面试题整理和建议
我不是什么大牛,我只是一个有五年工作经验的Android老兵,既没有非常亮眼的学历,也没有牛逼大厂的履历。
去年冬天,在孩子得病从急诊转住院的时候,我得到了年前将被优化的消息,作为家里唯一经济来源的我整个人蒙了,一时间茫然和无助差点毁了我。
最后我还是和家人如实说了,受到了他们的极大的鼓励,也找到了重新开始的勇气。
可惜今年Android,职位少、要求高、电话面试、视频面试、在线coding、屡战屡败、屡败屡战,构成了我这一个月的常规生活。
我一开始也焦虑、茫然,甚至对自己的能力和工作经验深深怀疑。
后来经过几个好朋友的鼓励打气,也看了很多面试文章,认真总结自己面试中不足的地方,查漏补缺,终于在这周确定了offer。
压力大的原因
个人认为今年行情不太好,但不仅是今年,从前几年开始就已经是这样了,而今年更加客观的一些原因我认为还是这些:
-
今年开年后,大家都觉得市场会大幅增长,所以有非常多的原本疫情居家的人出来找工作,这无疑增加了同一岗位的竞争。
-
市场环境:年后1、2月份经济确实有小幅度的提振,但目前我们看到3月和4月明显的消费不足的情况,不是说谁家好谁家不好,整个线上的生意本身是比较弱的。甚至相比疫情也不遑多让,但工厂开工不能停,所以价格很低很卷,于是今年大家看到企业仍在经营,但利润十分稀薄,部分企业甚至到现在都还是亏损的在做。
-
在岗员工:实时的经济现状实际上在职员工感受最明显的,公司有木有赚到钱?今天销售有木有增加?但是叠加上市场因素影响,大部分在职员工除非不得已,现在的这个阶段几乎不可能无脑离职。
-
未来预期:大家都知道6月社会会释放1150万的大学毕业生,如果你的岗位不是无可替代,你忧虑吗?
综上所述,今年的行情其实并不很好。但这不代表没有机会,个人认为,与其考虑市场环境,不如思考如何锤炼自身,只有自身的经验能力到了,才能平稳的跨越周期!
Android开发到底需要学习哪些?
对于现在的Android及移动互联网来说,我们需要掌握的技术,我做了一个清单:
-
Android基础知识:包括Android组件、生命周期、布局、资源等基础概念和技能。
-
Java/Kotlin编程语言:能够熟练使用Java或Kotlin进行Android开发,了解它们的语法、特性和优缺点。
-
熟悉Android开发框架:熟练掌握Android开发框架,如RxJava、Retrofit、Dagger等。
-
掌握常用的第三方库和技术:熟悉常用的第三方库和技术,如Glide、Picasso、OkHttp、Firebase等。
-
了解Android最新技术:了解Android最新技术和趋势,如Kotlin协程、Jetpack Compose、Android Studio Arctic Fox等。
-
能够解决实际问题:在面试中,能够展示自己解决实际问题的能力,如性能优化、内存泄漏、多线程等。
Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。
对于一些不知道学习什么,没有一个系统路线的程序员,这里给大家提供一个大概的思路:
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。
若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取↓↓↓
写给看到最后同学的话
这些算是我作为过来人对于应届毕业生和刚工作不久的同学的一些小小建议吧。
(1)一定要紧跟技术前进的脚步,尤其是大数据相关的技术,在技术更迭的时候一定要学习熟悉新技术,看源码,哪怕自己在工作中用不到也一定要学。因为这是你下一份工作的敲门砖。
(2)不要给自己设置舒适区,这个就是说,一个公司待久了不要懒惰,不能荒废自己,始终要保持清醒的头脑和进取心,不断学习,不断完善自己的技术,架构设计能力,项目管理能力,交付能力等。
一定要及时从项目中总结经验和不足,最好落实到日记本中,最后通过不断思考,形成自己的做事方法论。
(3)对自己的职业生涯要有一个规划,以后要做哪一块一定要有自己的想法,确定了就要从这个方向完善自己,多学多练。
没有人会专一做某一块,但是自己一定要想好哪一块是自己以后要走的方向,那么这一个方向确定了就要深入的学习这一块的知识,多看源码,多做练习,如果接触到具体项目,要在项目中沉淀自己,最后形成自己的知识体系。
(4)做事情要有担当,不要根据OKR给自己设置界限,有能力有空闲多做一定要多做,这也是别人认可你的最佳途径之一。互联网圈子很小,大家认可你,以后去大厂,换个好工作,也许就更容易。