@Android程序员,请掌握这些核心生存技能!

大佬你好,作为一个Android开发者,在学习过程中有什么需要注意的?

这个问题其实也不太好回答,因为要注意的问题蛮多的,多得就像雾霾中的颗粒。不过,有趣的是,流年似水这两次的提问中,对我的称呼大有不同。

再说,我也不是什么“大佬”,无非比较接地气一点,喜欢和大家交流分享的感觉而已。

那么接下来,我就针对这个提问,做一些回答。希望对有类似问题的同学起到一个参考的作用。将以以下几个方面做出回答:

1.不断学习
2.分享一下我的学习方法
3.移动开发者核心生存技能(高能!)

为什么要不断学习

问题

无论是博客园也好、公众号也好还是微信里的聊天,总有朋友问起诸如此类的问题:

  • 某某技术XXX框架都帮我们封装好了,我们去学习了有什么用?
  • 感觉你的知识面好广,实际工作中应当用不到这么多知识吧,那学习了有什么用?
  • 某某技术工作中根本用不到,有什么好学习的?

我认为这是一个值得思考的好问题,就这个问题,基于我平时的学习和一些个人的思考,分享一下想法。

更快速有效地开发代码、处理问题

记得我刚刚工作那会儿,知识储备不是很足,这种时候工作中难免遇到一些问题:

  • 需求开发时碰到有些不会的地方频繁百度、写Demo,碰到报错的时候,一些不认识的又得百度,造成需求开发比别人慢
  • 测试环境还好,有时候在线上碰到了一些技术性的问题,例如死循环、内存溢出这些,手忙脚乱,没有方向

也就是一次一次这样的情况之后,让我有了个人的思考,核心归纳起来就是两个字:储备

储备,换言之就是以工作中可能碰到的一些问题不断地去学习、不断充实自己,当自己掌握地越多,当知识储备越充分,你会慢慢发现自己:

  • 开发需求的速度比别人快
  • 能主动去优化自己以前写的代码、他人写的不好的代码
  • 处理问题的效率比别人高

最后就是领导觉得你优秀、出去面试对方觉得你优秀,承担的职位越来越重要、干的活越来越有技术含量,拿的薪资越来越高。说白了怎么衡量一个程序员比其他程序员好?我认为就两点:

  • 别人做不了的事情你能做
  • 你做的事情比别人做的又快又好

可以分享的经验是,现在工作中遇到的问题,我基本解决时间没有超过1小时的。

让自己更聪明、更勤于思考

虽然起了这个大标题,但是我本人并不认为我很聪明,这个要声明在前面

尽管如此,但是所谓"活到老学到老",通过学习,我认为还是可以让自己不断提高,并不仅仅是学习到的那些知识,更多的还有:

  • 不断举一反三的能力,XX知识这么做,那么换一种方式做可不可以,XX知识写法是这样,换种写法可不可以,有什么问题
  • 不断质疑的能力,质疑别人写的每一个细节是否正确,从质疑中反向让自己成长

脑子越用越灵、越用越活,这些都是学习、思考带来的。

面试有用

这个理由功利性很强,但是很实际,因为对我来说这个不是我平时去学习的理由,就放在最后讲了。

现在出去任何一家公司,指望面试官仅仅问你如下问题:

  • if...else...、while、for的作用,怎么用
  • 你的项目有哪些东西,你负责了什么,做了什么
  • 项目中用到了哪些框架

坦白说,那是不可能的,即使仅仅问到了这些且你100分通过,也不建议去,无他,面试层次太低。

但凡像样点的面试,问稍微进阶点的用法、细节性的问题、底层性的原理都是再正常不过的了。

很多东西,平时没有一点积累是答不上来的,答不上来的东西越多,自然面试成功的概率也越低。

小结语

就这个写了一些个人思考,希望对大家有益,最后总结一下:

  • 学习这个东西,不是为了当前,而是将来,至于学什么,看个人
  • 好好学习,天天向上!

分享一下我的学习方法

接下来分享一下我的一些学习方法,希望能发给大家一些启发。

自己钻研or看书or看博客

直接切入正题,根据我个人经验来说,我们学习的途径通常有自己钻研、看书、看博客三种,那么这三种学习方式各适合怎么样的场景呢?下面我按照我认为的几种层次说说我的看法。

  • 看书:我始终认为看书是一种最好的学习方式,因为一本书能出版,绝大多数情况下都是经过了作者的千锤百炼,书本里关于知识点的讲述、对Demo的编写一定是经过了斟酌与考究过的,因此学一个知识点只要买一本好书,从头看到尾,Demo全部敲一遍且理解一遍,必定大有精进。像我学习的大部分知识,性能优化、NDK、Java基础这些都是通过看书敲Demo来学习的。
  • 看博客:一本书可能有几百页会比较多,博客通常是对于知识点的总结与提炼,将几百页的知识提炼到一篇或者几篇文章中,但不会有书本讲的这么详细。因此我认为博客是对于书本知识的一种总结,学习,以书本为主、博客为辅是最好的。另外,博客不像书本需要经过一段时间的学习,博客看看比较快,适合短时间的学习(比如午休、晚饭点),对于扩宽自己的知识点、知识面也是非常不错的
  • 自己钻研:自己钻研是最高一个层次了,这依赖于扎实的基本功,当我们基本功扎实之后,我们可以尝试自己去钻研一个知识点了,自己钻研的知识点一定比看来的知识点印象更加深刻。像源码这些,也是在我认为自己的基本功扎实之后,才开始尝试去自己学习的,花的时间会比较多,但成长地同样也比较大,因为思考的更多、想的更多。

最后说说书本的选择,我是非常推荐买国内的书而不是老外写的书,国内的书比较偏重实战,说代码并通过代码讲解知识点,老外的书偏重把一个理论讲精、讲细,前者适合初学者学懂知识、后者适合深入研究。

这里推荐一些书籍:
Android初级入门:《第一行代码》
Android开发进阶,以及设计模式的学习:《Android开发艺术探索》,《Android源码设计模式解析与实战》

自己学懂====>写下来让别人懂

学习当然是为了自己,但是写下来且别人懂是我总结出来的非常重要的一条经验,大致说起来是这样的:

  • 首先,把东西写下来,这样可以以后随时可以看,但是如果不写下来,可能现在学懂了,之后又忘了
  • 学习的时候,可能有些知识点自己是觉得迷迷糊糊似懂非懂,就当做懂了算了,组织成文字就不一样,懂就是懂、不懂就是不懂,不懂的东西是很难用懂的文字写出来的
  • 因为写出来的东西别人是能看到的,因此也是强迫自己用通俗易懂的话去进行总结,能把一个知识点用通俗易懂的话说出来,我可以认为是真正学通了
  • 给别人看了之后,别人不懂,可以留言提意见,看了别人的意见之后,回复,有问题及时改,对于自己也是一种促进,至少我自己是从网友的留言中学到了很多东西的

可以给大家分享的是,至今印象深刻,当我一开始写博客的时候,写的插件化、热修复,当时写完我还万般犹豫,到底要不要发、要不不发算了,但是咬咬牙发布了之后,慢慢地咬牙、慢慢地咬牙,之后写博客已经越来越成为我学习的一种习惯了。

现在我个人的想法就是:假如学习任何知识点,我不能写成一篇博文,那我绝对不会认为这个知识点我已经学懂

习惯成自然,大概就是说的这个意思吧!

写下来让别人懂====>说出来让别人懂

说出来让别人懂我认为是学懂的最高层次。

写了博文,别人给你留言,你可能可以等个10分钟、10小时、10天把东西弄懂了才回复,但是说出来则不一样,很多问题都是突发的,说得出来就是说得出来,说不出来就是说不出来。

因此,说出来让别人懂这个层次依赖于我们把一个知识点从头到尾、从前到后彻彻底底搞懂,这样才能无畏地面对任何问题。

如果有勇气演讲、分享,无论组内的5个人、还是公司的50个人、还是外面线下活动的500个人、5000个人,那都是对于自己最大的成长。

小总结

学懂==>写出来==>说出来,通过上卖弄的分享,希望大家可以朝着更高的层次迈进。

##移动开发者核心生存技能(高能!)

这是一份一份大而全的“Android高级工程师”面试xmind(实际上比预期多花了不少精力),包含了阿里、美团、百度、网易、腾讯、美团等今年面试题中出现的知识脉络 + 分支细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

这份 xmind 尤其适合:

1.近期想跳槽,要面试的Android程序员,查漏补缺,以便尽快弥补短板;

2.想了解“一线互联网公司”最新技术要求,对比找出自身的长处和弱点所在,评估自己在现有市场上的竞争力如何;

3.做了几年Android开发,但还没形成系统的Android知识体系,缺乏清晰的提升方向和学习路径的程序员。

架构师筑基必备技能

Android框架体系架构

Android 360°全方位性能调优

  • 一个app的性能好不好我们需要从两个层面分析:

1、从写代码的时候就注意,让自己的代码是高性能高可用的代码,这个过程是书写高性能代码

2、对已经成型的代码通过工具检测代码问题,通过检查到问题来指导我们进行代码的删改这个过程被称为调优

  • 那如何写出高性能的代码呢?

需要我们具备深厚的代码功底,这就是代码的基础,如:数据结构达到可以根据应用场景写出符合当前场景的特殊结构,比如google针对Android平台特征研发了SparseArray代替HashMap.另外,对常用的算法也有自己独到的见解

设计思想解读开源框架

NDK模块开发

架构师炼成实战

微信小程序

移动架构师不可不学习微信小程序

Hybrid 开发与Flutter

Android程序员技术成长路线

不同级别技能要求

好了,直接进入正题吧,为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。(以下是一小部分,获取更多其他精讲进阶架构视频资料可以加我wx:X1524478394 免费获取

一下是今天给大家分享的一些独家干货:

①Android开发核心知识点笔记

②对标“阿里 P7” 40W+年薪企业资深架构师成长学习路线图

③面试精品集锦汇总

④全套体系化高级架构视频

Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

【Android进阶学习视频】、【全套Android面试秘籍】加我wx:X1524478394 免费获取

原文地址:https://blog.51cto.com/14332859/2459761

时间: 2024-10-07 20:01:49

@Android程序员,请掌握这些核心生存技能!的相关文章

挨踢部落故事汇(20):Android程序员的十大转型之路

玖哥是一个来自东北的Android攻城狮,现在定居被誉为"大湖名城,创(chuan)新(xiao)高地"的合肥.知识面极广,不仅广泛涉猎IT相关知识,还热爱文学,性格幽默,被誉为"会搞Android的段子手".他还是一个藏书人士,拥有汗牛充栋的IT书籍,而且每本书都认真阅读过,从不拿书当摆设. 玖哥·Android攻城狮 先说说Android程序员不可能转型的几个方向,以下四个不靠谱方向的靠谱性递减: 首先不会转型iOS,iOS和Android工程师的工作内容都是大

迈向高阶:优秀Android程序员必知必会的网络基础

1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用的工具类,到后来Google开源的比较完善丰富的Volley,再到如今比较流行的Okhttp.Retrofit. 要想理解他们之间存在的异同(或者具体点说,要想更深入地掌握Android开发中的网络通信技术),必须对网络基础知识.Android网络框架的基本原理等做到心中有数.信手拈来,关键时刻才能

免费带项目,免费指导1~2年开发经验的Android程序员

免费带项目,免费指导1~2年开发经验的Android程序员. 如果有哪位朋友感觉自己经验不足,或者想在实际项目中提升一下自己的技能,请联系我!加我qq就行. 免费一对一指导,带你在项目中提升自己! 有意者请联系我! qq:1329300341

IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换取编程速度.擅长利用轮子的程序员已经遥遥领先,不擅长利用轮子的程序员总是嫌前人发明的轮子不够圆,自己造个方轮子上路后才发现落后了. 作者:玖哥来源:51CTO|2017-10-19 16:06 移动端 收藏 分享 [51CTO.com原创稿件]每个Android 程序员都不是Android应用开发之

给年后面试的Android程序员的一些面试建议

前言 今天写一篇关于Android面试相关的博客,需要说明的是本文只针对Android应用开发,不针对rom开发以及逆向工程.我想面试对于程序员来说是很重要的一件事件,面试结果的好坏直接决定了能否进入某个公司以及以什么级别和待遇进入某个公司.我参加面试的经验并不多,但是以面试官的身份面试别人倒是有很多次,所以我可以结合这些经验来介绍下如何更好地把握一个面试. 什么是合适的候选者 在介绍如何面试之前,这里先从公司的角度来分析:"到底什么样的候选者是公司所需要的技术人才?"就我在百度的一些

给Android程序员的一些面试建议

前言 应大家的邀请,写一篇关于Android面试相关的博客,需要说明的是本文只针对Android应用开发,不针对rom开发以及逆向工程.我想面试对于程序员来说是很重要的一件事件,面试结果的好坏直接决定了能否进入某个公司以及以什么级别和待遇进入某个公司.我参加面试的经验并不多,但是以面试官的身份面试别人倒是有很多次,所以我可以结合这些经验来介绍下如何更好地把握一个面试. 什么是合适的候选者 在介绍如何面试之前,这里先从公司的角度来分析:"到底什么样的候选者是公司所需要的技术人才?"就我在

android程序员成长路径的思考

我之前就想过要写这个话题,不过之前没有什么认识,我只是在阅读别人的见解,看法.昨天晚上,我阅读了这篇文章<产品经理罗永浩:用户体验探索,没有尽头>,这篇文章描述了罗永浩对锤子手机设计细节的阐述,及罗永浩对产品经理的看法,认识.恰巧阅读了这篇文章,我从中想到了android程序员的成长路径. 成长路径之一,可以做出产品经理要求的各种界面效果. android程序员,是做android系统上的应用的,一个应用就是一个产品.我是这样认为的,你可以做出好的产品,那么,你就是优秀的android程序员.

Android 程序员必须掌握的三种自动化测试方法

在日常的开发中,尤其是app开发,因为不像web端那样 出错以后可以热更新,所以app开发 一般对软件质量有更高的要求(你可以想一下 一个发出去的版本如果有重大缺陷 需要强制更新新客户端是多么蛋疼的事情). 恩,所以我们app的开发者 一定要学会自己测试自己的代码 自己测试自己的app,不要寄希望于测试来帮你找bug,实际上,我工作多年的经验告诉,绝大多数隐藏极深的bug 都是开发自己发现的. 所以 今天就来教大家几招,如何测试自己的app,测试自己的模块. 1.Monkey http://de

【同行说技术】Android程序员从小白到大神必读资料汇总(四)

在文章<Android程序员从小白到大神必读资料汇总(一)和(三)>里面介绍了基础学习资料和一点点的进阶资料,今天小编收集了5篇带有实例干货的资料,赶紧来看看吧!另外,喜欢写博客的博主可以申请加工程师博主交流群:391519124,分享你的博文,和大牛们一起交流技术 ~ 一.Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题,本篇详细总结了如何防止内存泄露,满满的干货 二.理解Android安全机制 从Android系统架构着手,分析And