成为一个优秀的 Android 开发者,需要必备哪些技术 & 工作技能?
但是那并不利于你成长为一名优秀的开发者。也不会增长你的见识。你应该从现在开始看一些开源的应用和类库并开始学习它们。每天 30 分钟的代码阅读量是个非常好的开始。你将会惊讶的发现:还有如此多的东西是你没见过的。
4. 考虑学习更多的语言
我并不是要你去学习西班牙语或者中文,而是学习新的编程语言。随着科技的发展,你需要保持自己的知识更新,而不是把自己固定死在安卓一个方面。
这能够开阔你的视野,并能够显著地提升你的安卓开发技巧。下定决心每年至少学习一门新的编程语言吧。但是,请不要在仅仅一周的尝试后就跳过这门语言而放弃学习。尝试着深入这门语言并弄懂它内部的工作原理。
5. 是时候学习 Java 设计模式了
在长远看来,我并不能完全阐明这会对你的安卓开发生涯有多大的影响。任何时刻,你被卡在需要解决的某个严重的程序问题的时候,设计模式着实能帮助你构建一个优雅的解决方案。
你也需要保持和其他程序员一致的节奏,因此他们在谈论关于使用工厂模式或者装饰着模式或者外观模式的时候,你也能够立马懂得他们所指的含义。
给自己定下目标每周学习一个新的设计模式吧。
6. 开始贡献开源库
如果你已经开发出了一些很有用的东西,并在你自己的应用开发中使用到了,那么考虑开源它吧。在这个过程中有许多的东西是需要你学习的,而且这有助于你成长为一名优秀的开发者。
如果你没有可以开源的项目,考虑浏览其它你所感兴趣的开源项目,并尝试修复一些 bug ,改进其文档注释或者写一些测试等。
即使是最小的贡献量,它仍然对项目维护者保持项目的运作有所帮助。
7. 让你的 IDE 更好地为你工作
准备花更多的时间来了解你所使用的 IDE —— Android Studio 。它所能做的事情比你想象的更多。许多的酷炫特性和快捷方式隐藏着而不为人知,以至于大部分开发者都不了解甚至从来没有尝试探索使用它们。
养成一个探索开发新的、更佳的方式的习惯,让你的工具更好地为你工作,这样能够有效提升你的工作流程和工作效率。
8. 是时候正确地架构你的应用了
大部分时间里我们都以放置所有代码到一个活动或者碎片里而结束(你也可以因此怪罪我吧),最终让导致他们成了巨神对象而变得很难维护和测试。
让你的应用适配一个好的架构是非常重要的,像 MVP , MVVM , Redux 框架等等。考虑解耦你的应用程序的业务逻辑,交互界面,以及数据结构到不同的层级里,使得他们能够更容易的被管理和测试。
9. 学习安卓致简代码指南
你不能忽视了这个。和那些写不出整洁代码的开发者合作会变得很难,至少需要符合安卓开发代码指南。
这根本不是什么高深的技术,而且也不会花费你超过几个小时的时间来学习大部分的 Java 和安卓代码指南基础。这不应该是一次性的学习,而应该是作为开发者的一种习惯上的改变。
10. 花一些时间来学习安卓最佳实践
要使自己比其他开发者更加出众,并能构建出整洁美观而又功能完善的应用,你需要开始学习一些安卓开发最佳实践。
这里有一些该做和不该做的条例,能助你成为一名更优秀的开发者,并能让你的应用从其他应用程序中脱颖而出。
11. 通过接听电台来充分地高效地利用你的业余时间
尝试高效合理地利用你的业余时间。这些时间属于你从家到办公室或者离开,在健身房锻炼,开车,烹饪的时间等等。而这个时候你那聪明的大脑却处于无事可做的状态。
你可以充分利用这些时间来听一些安卓广播资源。经常性地保持你的大脑尽可能高效地使用这些有用的信息,并努力做到大部分空闲时间的最大利用化。
12. 不要过于工程化,现实点。
这不仅仅发生在我自己身上,同时我也在一些和我工作的其他开发者伙伴身上也看到了。在开始进行之前就考虑周全是很不错(是非很好),但是过于考虑和过于分析事情会导致最终一事无成,就如同不必要的迷茫,延误和焦虑。
立刻开始行动做那些项目中正确的部分,这样你总是能够适应在之后需要做出改变的规则。
13. 尝试着学习平面设计
我能理解作为一名程序员,你所主要的重心点在于学习编写更好的代码,这是显而易见的。但是如果你要成为一名完完全全的开发者,你应该开始每天花一些时间来学习并理解关于 UI 和 UX 的设计。
这将会颠覆你对待你自己一直正在使用代码编写应用的看法。尝试着和你团队中的 UI 以及 UX 设计师做更多的沟通和交流的机会,你将会更加深入地了解应用设计。
14. 开始成为一名完美主义者
这是一个类似:我所谓的“完美主义”并非其他人的“完美主义”的话题。但是作为一个小的建议,始终尝试着帮你所需要发布的版本的产品做到尽可能最好。
不要妥协。不要为了单纯的做事而做事。要对你自己的工作有激情并尝试做得比他人更好。这会让你持续成长并在长远看来会让你成为一名更加成功的开发者。
15. 坚持是成功的关键
如果你想成为一名成功的安卓开发者(或者你生命中其他想要的),那么你需要坚持。
做事情坚持不了几天或者几周就放弃那并不会让你学到什么东西。尝试着描绘一下作为一名安卓开发者在未来几年里你所想要成为的人的模样,坚持并不断挑战自我,最终实现自己的目标。
开始一件事很容易,但是保持同样的激情和奉献精神,长时间坚持下去却很难(非常的难)。
16. 积少成多,逐步深入
作为一名开发者,你应该时常试着把你所遇到的任何复杂的问题或者特性,转化成小型的、简单的和独立的组件,这样做能够很容易地被理解并能快速地解决问题。
不要被一个项目的大小和复杂度所压倒。只要你使用正确的方式,任何问题都能够迎刃而解。从小的部分开始,慢慢积累并逐步扩张。
17. 保持手里有项目的另一个测试版本
经常有一个后台的测试版本项目能够完全改变你学习东西的方式。如果你在安卓开发界遇到什么新的事物,请养成一个立刻就开始新建一个后台测试项目的习惯。
假设你在某个地方发现了一个很有趣的安卓代码库,你应该立刻想到新建一个后台测试项目来使用这个库,而不是仅仅快速地浏览一下它的文档和 API 。这会让你更加熟悉、更加深入地了解这个类库。
18. 开始写一些测试
我没法再强调这个有多重要了。你并不能完全吃透某个特性,除非你用尽心思给它写测试。测试能帮助你的代码构建出一个信心彼岸。
不要犯那种忽略测试或者认为测试只是一个“可选项”的错误了,这会让你的生活更加痛苦并增加许多的问题。记住,一个没有测试的代码很容易立刻变成旧地遗留代码。
19. 考虑适配 TDD
当你在开发一个应用的时候,考虑选择一种机械地而又高效的方式,以便能够顺利地通过测试。
开始遵守 TDD 的“红-绿-重构”周期模式。首先,你所编写的测试可能会失败(红),然后写一些有效的代码让这个测试通过(绿),接着进一步优化并清理整洁这些代码(重构)。
测试驱动型开发是一种编程期间控制自我焦虑的方式。焦虑感会让你变得很具有试探性。焦虑感让你变得不容易沟通。焦虑感会让你害怕发出反馈。焦虑感让你变得心浮气躁。—— 来自 TDD 的案例
20. 设立一个合适的自动发布机制
作为一名开发者,尝试着让自己不要操心那些可以自动完成的东西,比如应用程序质量的测试和发布。
你应该使用那些自动检测程序质量的工具,像 CheckStyle , PMD , Lint , FindBugs 。在合并主要的改变之前运行所有的单元测试和真机测试是必须要做到的。
当所有这些测试通过后,你就会得到一个允许 APK 发布到 Play 商店或者分发到其他你想要的地方的(比如 Crashlytics Beta )的绿色信号。
21. 拥抱 Reactive 编程的到来
如果你作为安卓开发者想要提升自己的技能,你绝对应该考虑拥抱 reactive 的实现。这会迫使你在构建应用的时候采用完全不同的方式思考问题。
采取 reactive 的方式肯定能够有助于你更加快速地写出交互式应用,并且能够让你的开发更加容易且有趣。
22. 学会使用 Kotlin 进行安卓开发
Kotlin 是目前最受欢迎和热议的语言,自从它来到安卓开发界后。它现在也是开发安卓应用的官方支持的语言
。这个简洁高效的语言给安卓开发界带来了一丝新鲜的空气。
对于那些被古老、繁琐以及易出错的 Java 所困扰的人们来说,这是发生在安卓开发者身上最大的一件幸事之一。尝试着使用它,你将会重新燃起对你的开发生活的热爱。
23. 参加聚会并和更多的开发者建立社交关系
我们开发者趋向于内向,喜欢坐在一个角落里,和自己的电脑组成一个自我的世界。
但是请走出你自己的舒适区,和其他开发者发生更多的联系和沟通吧。当你参加开发者会议,社交活动以及和其他有着和你共同兴趣爱好的开发者一起谈论问题的时候,你会学习到很多很多的东西。
24. 熟悉使用键盘快捷键
试着养成一个尽可能不使用你的鼠标的习惯。在 Android Studio 上几乎所有的操作都可以由快捷方式完成。
这会显著地减少你的开发时间并提升你的工作流程。记住一些键盘快捷键可能会在初始阶段花上一些时间,但是从长远时间来看,它会有助于你进入一个真正无鼠标的工作流程状态。
25. 尝试着至少每周学会一个安卓相关的知识
在安卓大千世界里,当你在一开始踏入的时候,有太多需要学习和了解的东西会让你感觉猝不及防。但是如果你给自己下定决心,每周学习一个安卓相关的知识点,那么事情会变得更加容易。
做一个列表记下所有你不会的东西,给他们标上先后顺序和重要性,在接下来每周里开始学习,并一步一步地完成它们。那么在几个月后,你会发现你已经远远不是那个刚开始的自己了。
26. 把所有浪费你时间的事情自动化
我们作为工程师,生来就喜欢偷懒,总是想着找到一种简便的方式来完成一份烦人的工作。
所以,如果你在一天里需要做一些重复且厌烦的事情的时候,尝试着考虑把它自动化吧。这会累计让你每周都节约不少时间,从而可以用来花在做其他高效率以及有用的事情上,并能够减少你的焦虑感。
27. 考虑同时运行两个不同版本的 Android Studio
保持使用一个稳定版本的 Android Studio 用来做你每天需要做的那些很重要的事情。但是也同时考虑保持安装使用一个最新候选版本的 Android Studio 。
有时候早期版本中会有很多令人兴奋的新特性,那都是你很乐意去尽可能尝试使用的。
28. 仔细审查所有你一次性添加的第三方类库
在我们需要的时候我们都喜欢使用添加类库,这当然没问题。但是,要养成一个习惯,审查你所一次性添加的所有的第三方类库,并且移除那些你不再需要的库。
如果你仅仅是使用一个类库的一小部分,那么考虑把它分解出来而不是使用整个库。有那么一个可能性的事件是:审查有时候也会帮你更新那些急需更新的旧类库。
29. 学习更好的方法用来重构遗留代码库
不要犯那种一次性重构一个完整的庞大代码库的错误。这样做会把你陷入到没有退路的困境之中。
考虑重构你现在就需要使用的部分代码库,然后慢慢地延伸扩展到你所需要的其他部分。同样,考虑在碰到其他代码之前为你所需要重构而又怀疑会破坏现有功能的那部分写一些测试。
30. 经常在低端设备上进行开发和测试
如果你想要像专业人士一样开发应用程序,那么不要犯那种总是在高端设备上开发并测试程序的错误。一般来说,我们开发者手头拥有高端的旗舰产品,并且使用它来做应用的开发和测试用。但是这完全正是你需要克制的地方。
尝试着在市场上买点便宜的、低端的设备,并养成在上面开发应用程序的习惯。你将会看到你的应用的一大堆缺陷,而你之前并不知道它们的存在。
31. 买你所能负担起的最好的设备
不要犯那种购买一个低端的工作用机器来做每天工作的错误,那会有损你的开发经验。
考虑使用一个 Mac (超越 Windows )来做开发。你会爱上它那简介而又稳定的特性的。
从现在开始,如果你要买一台苹果笔记本,那么考虑买一个最合适你自己的版本。几百块(美元,编者按 )的额外开销并不会伤害你,反而你会感谢自己做下了这个决定的。
那么一个优秀的 Android 开发者,需要必备哪些技术?
Android
作为好的安卓开发,首先明确 Android 是前端,重点是 UI,做出稳定的应用是关键。
1.做出稳定的应用是关键。
作为好的安卓开发,首先明确 Android 是前端,重点是 UI,掌握自定义 view。
2.建立知识体系
很多人对 Android 属于一知半解的状态,鼓励去 Stackoverflow 之类的地方寻找问题的解决办法,但务必了解内在的机理,达成对知识理解的体系,当你建立了一个体系,很多问题就不在复杂,软件开发是 precise engineering,不是凭运气。
举个例子,面试的时候,我喜欢挑战面试者一些很离谱的题目,比如,在一个 EditText 里面,你输了一个字母“A”,这个 A 是经过了多少安卓特有的流程才能显示到屏幕上的。 初看这是个无聊的问题,大家往往会觉得,这是理所当然的事情,其实不然,这个问题考查了你对 view layout/measure 的理解,对 rendering 的理解,对 drawing 的理解,如果面试者能答出来这个问题,那我一定不担心你会写出卡顿的安卓代码。
刚开始做 Android 开发的时候,我也答不出这个问题,但几年之后,渐渐养成了一个体系,充分贯通这些“不必要”的细节,我私以为这是个资深程序员必备的条件,什么性能优化都是水到渠成的事情
至于其他的技术,比如 video streaming,取决于你是想成为某个领域的专家,还是解决问题的能手,如果是后者,你需要良好的数据结构+算法+读代码+读文档的能力,在短时间内了解优秀的解决办法,然后加以利用,做软件工程不是读 PhD,先把需求解决了,再看怎么提高。
3.数据结构算法,源码,原理机制
很多人推荐了各种书,对于 Android 开发,很好的资源莫过于 Google 的官方视频,他们指引了正确的方向让你深入了解 Android 的 UI 构建和运行机制。见过许多写了很多 app,但是不明白其中要点的程序员,我只觉得失望并担忧。当然,既然要做前端 UI,黑魔法少不了,学习日新月异的编程思想,Dagger/React 等等
如果身在团队中,建立良好的学习氛围,鼓励交流,同时在被产品经理和设计师折磨的时候,理解他们,帮助他们理解 Android 开发特点
新技术更新很快,很多人担心跟不上被淘汰,其实大可不必,Android 只是个解决问题的工具,你需要一个时刻准备用这个工具解决问题的知识体系,换了一个工具也是一样的。比如跨平台开发技术都是殊途同归,手机没被淘汰,Android 开发就不会被淘汰。
另外关于 NDK 开发,音视频,微信小程序,Flutter 跨平台技术等等。其实严格来说已经可以算独立出 Android 的技术面了。但是却又息息相关。因为企业招一个 Android 开发,肯定希望他能同时掌握其它的技能,减少用人成本。所以这些技术也需要去学习掌握。
Java
**一个优秀的 Android 开发者,一定有扎实的 Java 基础知识。**今天给大家分享一下我们必须掌握的 Java 知识点。
设计模式
评论