如何成为 Android 开发高手?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/AndroidDay/article/details/88694776

我也来填个坑回答这个问题,很明显我不是高手,也没资历,更没有指导意义!,主要是有感于作为独立开发者,有哪些可以分
享的经验?目前Admob月入$13k左右,勉强实现屌丝的财务自由!在Android源码上的摸索自认还欠缺火候,大家如果这方面要
入门,可以看看我的这个回答大牛们是怎么阅读 Android 系统源码的?

这个答案仅仅限于Android 应用程序的开发,因为我是Google Play的Top Developer,勉强能够以自己的经历回答这个问题。

1.扎实的基础,包含语言(Java,C++),算法,计算机原理等。 我相信高楼大厦都是一沙一石一砖一瓦,大学时很少缺课,也积极学习新的技术,国内的大学教研水平参差不齐,老师很多也是敷衍了事,我觉得这都不是不学好基础课程的借口。见过很多同事或朋友因为基础不扎实而出现各种技术上提高的瓶颈,我觉得成为一个合格的开发者的首要条件是扎实的基础,当然如果大家且参与工作了,可能时间都碎片化,挤挤时间,为自己补补基础理论,这也会让你的工作更得心应手。

2.Android接口的熟悉 对Android Api诠释的最深刻莫过於于Google 写的SDK Samples了,我开始进入Android开发,就是对照着Android开发文档和Samples来理解的。这个可以分为两个过程,一个过程快速了解全部或大部分的Api。一个过程为根据项目需要来深刻理解和运用某个方面的Api。

3.专一于某个方面的开发我觉得这个对于Android源码开发也是非常重要的,在庞大的Android源码库中熟悉其中某一个开源库都是非常困难的,所以我给自己的要求是追求开发的深度而非广度,一直以来全职工作也是局限于Android UI部分。我觉得计算机发展到现在这个阶段,任何一个方面都是成千上万前辈们心血累计的结果,精通某一方面就需要付出极大的努力,而广泛涉猎的结果只会让你精力分散,很难深入!因为工作大多是从事Android UI部分的,所以我更愿意从事图形相关的开发,开发了一些流畅的游戏以及一个高效的Launcher(操作界面绘制到60fps)。嗯?当然工作还是业余收入也还不错!很多公司也愿意招从事某方面的人。

4.热爱虽然这个比较笼统和精神化,这几天和TSF的朋友聊下有感,热爱技术和用户是源动力。就这样吧!想到什么就继续填坑…
如果想要往Android高级方向发展的话,音视频这块是必不可少的,OpenCV、OpenGL,人脸识别这些既可以往安卓深入发展又可以偏向人工智能方向
在这里插入图片描述
有一起交流Android高级的朋友可以加群:4112676 以上资源免费分享

展开阅读全文

寻找成为开发高手的密匙

03-31

作者: Rick Wagner 来源: [url=http://hong7.blog.51cto.com/390883/284006]51CTO[/url] 发布时间: 2010-03-04 12:18 rn  [b]编者按:每个程序员都希望自己在技术方面更进一步,成为程序达人,开发高手,技术大师……;这不仅能获得更好的职位和更高的报酬,更重要的是,开发高手还代表着一个开发者对自己的肯定以及对技术梦想的忠诚与追求。但如何成为一个开发高手呢?也许我们能从下面这篇博文中获得一些启发。作者Rick Wagner是一位Java企业级架构师,具有二十多年的开发经验的资深程序员和COBOLE语言的爱好者。他在文章中指出初级程序员与顶级程序员的根本区别在于所掌握技术的“广度”和“深度”,Rick认为这是程序入门者向程序高手进阶的关键[/b]rnrn 【51CTO译文】20年前,当我刚开始从事数据处理方面的开发工作时,我在一家为银行承担外包工作的公司工作。开始我只是一个实习生,毕业后进阶为程序员的第一级——“初级程序员”。其实,在我们公司内部,对这些Title都做了一些神秘的标识,比如我的初级程序员的标识是“E07”。rnrn  不久,我发现了我们公司是如何对程序员的级别进行标识的:rn  ◆ 初级程序员 = E07rn  ◆ 程序员 = E08rn  ◆ 高级程序员 = E09rn  ◆ 超级英雄 = E10 (一种非常罕见的品种)rnrn  这些级别不单代表技术能力,还有薪水,当然,薪水是与这些级别排名紧密相关的,这是不会变的,不管是20年前还是现在。rnrn  像所有初级程序员一样,我希望自己用一到两年的时间在E07级别工作,然后逐渐向上爬。但有件事一直令我困惑:[b]那些进阶最高级别的程序员与一直停留在初级的程序员之间到底有什么不同?[/b]rnrn  一天,我与一个非常棒的E10程序员一起开发一个项目,他叫James。在这个项目的过程中,我们进行了愉快的交谈,他的话令我印象深刻:“[b]工作都一样,无论你是E07还是E10[/b]”。rnrn  我当时目瞪口呆。在那一刻,我意识到,在这个项目中我所做的工作与James所做的一样重要。我当时在做数据分析和编码,James也在做数据分析和编码。虽然他以最高级别的E10在工作,但他所用的编译器我也在用;他所用的数据我也在用;他所用的开发环境也跟我一样。如果他所做的部分遇到困境,我所做的部分也将遇到阻碍。在这个项目中,我们同行。rnrn  别误会我的意思,虽然所做的工作一样,但初级程序员肯定不如那些程序大牛值钱。今天,我不得不承认这个被广泛接受的事实。但那时,我的这个想法给我带来不可估量的好处,直到今天。rnrn  我试图寻找我与E10的朋友们到底有哪些区别。我和他之间到底有哪些不同?我得到的结论是,至少在两个方面他比我更优秀:[b]广度和深度[/b]。rnrn  [b]广度意味着在技术方面可支配的工具、技能和方法广泛的多[/b]。当时,我只具备一些COBOL编程经验;而E10的朋友不单会COBOL,还精通于汇编、JCL(一种工作控制语言)、操作系统等等多项技能。在今天,这等于一个只会Java的程序员站在另一个Java程序员身边,他身边的这位同时还知道C++、C#、Ruby、Python、Erlang以及每一种语言的流行框架。如果一个项目只是需要使用Java,那这两个Java程序员是平等的。但如果下一个项目需要更多的技术,这种平等的情况就会发生改变。rnrn  另一个方面是[b]深度,是指在其工作领域内的知识含量和功底[/b]。在过去,我所编写的COBOL代码也许跟我的E10朋友一样好。但如果我的程序有一个Bug,我的办法只是看着诊断报告不断进行调试。我的朋友不单会做这些,他还会阅读一些核心转储的数据,将一些重要数据转变成汇编程序(他可以从中获得一些启发)等等。在另一个我们一起进行界面编程的项目中,他可以更好的理解我们所操作的平台并知道如何完美的利用这个平台所提供的功能。同样,我的源码可能跟他的没什么太大区别,但如果我们需要向下一个级别进阶……是的,我们之间有一个明显的分界线。rnrn  在今天的世界里,这可能意味着程序牛人可以知道如何调整JVM,选取有用的数据分析工具;程序牛人知道如何安装、配置、调试和配置平台。牛人知道如何建立编译环境,而初级程序员也许只知道按照已经确定的方案(平台)进行开发。rnrn  技术的广度和深度,我想,我找到了成为高手的密匙。我需要学习更多并努力提到自己的广度和深度(直到今天,我还在努力!)。20多年前与James的一席谈使我知道自己哪里需要提高,这对我在事业方面的促进比我想象的大得多。如果你是这个行业的新手,希望上面所提到的这些能够帮到你。rnrn  Happy Coding!rnrn  原文:A secret key to 'Senior' level programmingrnrn  链接:http://rickwagner.blogspot.com/2010/02/secret-key-to-senior-level-programming.html 论坛

没有更多推荐了,返回首页