这个强调一个概念,快速。
如果一个开发者,想成为一个高级工程师,去做高级工程师需要做的事,了解一个高级工程师需要的知识,然后一步一步学习,都弄懂弄会,这样就是一个高级工程师了,这个过程可以量化,就是学习会这些知道就行,如果想继续进阶可能就不是量化的问题了,这里只讨论Android高级工程师的问题。那么如何成为一个高级Android工程师,就变得比较清晰了。
学会基础知识
Java基础,多线程,泛型,反射,IO,异常处理,集合框架等等都需要吃透。
Android基础,四大组件,Android的是异步调用,View的 绘制流程,触摸事件流程,都应该吃透
还有很多不一一列举了,这些是基础部分。
进阶学习
基础的东西,也要进阶,这个是同步的,比如多线程应该了解多线程并发库等高级用法,什么类加载器,垃圾回收等等都应该有个自己的了解,还有第三方库,至少都会使用大部分库吧,什么Gson,FastJson,EventBus,Volley,Okhttp ,Glide,Fresco,ButterKnife 。等等都应该有会熟练使用把。这写也只是中级程序员就应该掌握了的内容。
高级程序员应该掌握上面的所有内容作为基础内容,还要了解每个技术的原理和作用。对第三方库不只是使用,还要了解原理,还要能根据原理自己写出一部分库。能封装自己的库。而不是只停留在使用上面,这些东西使用都是非常简单的,看一下文档就能用了,可能用额不够精准,但是作为一个高级程序员,是一定一定要知道他们实现的原理的,计算写不出一样的代码,也能知道人家是怎么实现的,这是一个高级程序员最低的标准了。
多看书,多做项目,看什么书网上推荐的特别多。
那么问题来了。看书就能成为高级工程师,做项目就能成为高级工程师,看看文章就能成为高级工程师。如果可以的话,那么我直接买几本书,在家看看,然后做几个小项目就好了。如果这样就能成为高级工程师,那么我就先在家好好学习学习,然后成为高级工程师,再去找工作吧,这样不是很好么。当然这是不可能的,或者说大多数人是不可能的,不排除有那些天才啦,还有刻苦和会学习的人。或许很多人会说,这个是看工作年限的, 如果你工作都没工作,怎么可能会是高级工程师呢,这确实是个问题,虽然你的能力确实跟你工作年限有关,但是这些东西确实不只是靠年限堆出来的。而且这些东西确实也不是只看书就能看出来的,这里需要的是一个系统的学习过程。
这里强调一下,一定是一个系统的学习过程,要把很多东西方方面面都了解,吃透,这个过程需要很长一段时间,快的话二三年,慢的画5年以上也正常。确实不是很快能吃透的,第一是东西确实挺多,第二是东西确实比较抽象,真的理解还会使用,需要一个系统的学习和使用过程。但是大部分二三的工程师达不到这个水平,可以说真的少之又少,那么这些东西学多久适合呢,我定的标准是三年,如果一个工程师,按正常的流程学习,正常工作,一点点进步,三年左右达到这个水平,一般都是可以的。只是这样的工程师真的不多,而大多数是三年之后,最多是个中级水平。这个就是现在软件开发的现状。
我见过太多三五年的工程师的基础太烂了,为什么强调基础,如果基础不吃透,你去学习别的东西会花费更多的时间,而很多人就是这样不注重基础,他们可能会很多新的框架,新的技术,但是就是不去学习基础,然后他们最多也只是会用别人的框架,根本连框架原理都弄不明白,更别说写一个框架了,所以这里强调基础的重要就是,只有你有基础你才能真的去理解别人的代码,你能更有效的控制你的代码。
那么为什么现在的工程师很多是这样的呢,第一点,就是大多数人,不知道应该如何学,很多东西,也想学不知道如何下手,别人代码看不懂,又觉得自己基础还行,不爱看基础的东西,总想直接学好更高级的东西,这样恶性循环就变成了,基础没学好,高级的东西学不会。如果有人注重基础,慢慢一步一步啃会是什么样子呢,那么他会花很大一部分时间去学习基础的理论,然后基础弄扎实了,在学习高级点的东西,这样可以么。答案又是否定的。如果死扣基础,不去学习高级的东西。这个过程会遇到一系列新的问题,基础不知道应该学什么,学到什么程度,需要花费多少时间学习,然后学完了怎么用,然后什么时候复习这些问题。就变成了不知道学什么了反而基础也没有学好,还是没有什么用的状态。
通过上面的分析之后我们考虑,我们如何快速的成为一个优秀的Android开发工程师呢。
第一步 夯实基础。
Java基础,多线程,泛型,反射,IO,异常处理,集合框架等等都需要吃透。
Android基础,四大组件,Android的是异步调用,View的 绘制流程,触摸事件流程,都应该吃透
这个是前提
第二步 多写代码。
只看不写效果是最差的,只写不看都比这好一点,那么代码一定要写出来,然后一步步测试。让代码在自己的掌握之中。
做项目会让你看到很多你需要了解的东西,能检验你对很多东西的了解。
做项目会让你积累很多看书无法了解的东西。
第三步 分析代码。
如果你有基础,你可以分析别人写的代码,看看人家代码的原理,这个是必须要了解的。
要不要自己写各种第三方库,能写当然是好的,但是精力有限。全写必然费时费力。你有那么多时间么,所以可以写几个就行了。
也可以看网上的文章,看别人如何分析第三方库原理的,做到理解,这样能快速的理解第三方库的原理,但是这样做也有弊端,就是你只是看了一遍,然后也就忘了,最好跟着人家的分析简单写写代码,看看你写的跟人家到底有什么区别,一个是了解自己的实力,一个是能真的看到人家是如何去实现这个东西的,了解项目的精髓。
第四步 开发自己的框架库。
如果前几个做好了,这个就变成水到渠成的东西了。
开发自己的框架有很多好处。
第一个就是证明自己的能力,有能力开发一个适合自己在工作中使用的框架的能。比如说一个工具类库。
第二个对代码的掌控力,有自己的框架,如果项目需求有什么修改,自己能知道如何修改达到自己的项目需求,如果使用的是第三方的,可能没办法去修改。
第三个就是开发自己的框架,能更快速的开发自己的项目。自己写的东西总比别人的熟悉。
这个过程做完,基本也就达到一个高级工程师应该有的水平了,这些东西只要学都能学会。
这样一步一步来肯定能成功,但是这并不是一个优等的方案。一个好的方案是,有一个更好的指导,指导我什么时候应该看什么,应该学什么,知道自己哪里不会,然后知道如何去学,可是这个东西确实缺失的,不会有那么一个人,那么了解我的情况。然后根据我的情况,帮我量身定做一个学习计划,然后根据具体情况,制定不同时期的不同计划,然后给我讲解,我看不懂的东西。其实我在学习的过程中一直希望有那么一个人,会一直指引我去学习,一直指导我,如何去进步,帮我解决我工作学习过程中遇到的问题。
本人做Android7年,也经历了各种迷茫期,各种瓶颈期。我想做一个东西,这个东西,能帮更多的程序员,从一个技术小白到一个高级的Android工程师。
全部0条评论
快来发表一下你的评论吧 !