android编程程序员扩充职业技能需要学习哪些

android编程程序员扩充职业技能需要学习哪些,第1张

移动架构

移动架构是 2017 移动技术年度TOP5话题之一,从中就体会到架构是有多火,记得刚开始学 Android 时候,哪有现在那么框架,那时候谈架构的更多是在服务端开发,比如多层架构,有展示层、业务逻辑层、数据访问层这就是简单的三层模式,Android系统则是基于事件驱动响应机制设计的单页面架构,其实跟浏览器中的窗口页面是一样的, 系统中一直有个消息轮询监听机制,哪个事件被触发了,相应的响应代码进行处理,这些处理 *** 作是被提前注册到系统中。

早开始的开发模式基本是基于Android 系统自带 MVC 模式,Activity 基本类似于Control 的作用了,View 和Mode 互相耦合,后来才演化出现在主流的 MVP、MVVM 模式,顺便提一句,MVVM 模式其实是在微软 WPF 技术体系中提出来。

显示两个方面:

展示层: MVC、MVP、MVVM、Clean、Flux、Android Architecture Components

架构层:模块化->组件化->插件化->沙盒/双开技术,比如可以双开微信,类似Docker, 每个页面都是插件,类似Vue.js中每个页面都是组件。

性能优化

简单来说,一个APP 是需要从三个方面被关注的,业务功能、符合逻辑的交互、性能响应。如果我们在使用一个 APP 时候,经常滑动时经常卡顿、时不时崩溃、有些功能设计简直非常规,比如在 Web 网站有树层级等面包屑点击,你非要在手机也搞一个类似树级点击加载,那是不是有点强人所难了,我上拉下拉、左滑右滑不行吗,非要通过点击才行吗?那么性能优化核心是什么呢?追求快、稳、省、小,关注卡顿、内存泄漏和崩溃、代码质量和逻辑、安装包大小四个方面。

APP安全

APP从代码安全、到传输安全,再到存储安全。代码可以通过混淆、加固来保证、传输安全基本基于加密算法和Token来保证传输的唯一性、存储应用不可逆加密算法进行设置、所以掌握一些密码学理论尤为重要,起码要知道哈希散列算法,对称加密和非对称加密等一些常见的加密算法。

基础进阶

我们平常在工作中碰到的View滑动冲突问题、其实通过掌握View工作机制和Android触摸事件体系就能轻易解决掉,常见解决方式有外部拦截法和内部拦截法,基于横坐标滑动距离与纵坐标滑动距离相减得出的值,判断出是左右滑动还是上下滑动。还有对于需要开发绚丽的动画效果,那么对于视图动画和属性动画一些特性必须有一定的了解。JNI 和 NDK 开发也是比较常见,特别对于一些做 SDK 项目为主的,这一块开发流程也是需要掌握,Android 中的四大组件工作机制其实底层应用的是Binder机制,我们不妨从 AIDL 这个接口来了解 Binder。

持续集成

持续集成编译环境是敏捷开发中很重要的一个组成部分,它能够有效地提高整个团队的生产效率,大化的减少人为的出错的可能。比如,通过代码的持续提交,可以减少代码合并的痛苦,更快地与其他人代码集成,通过集成编译,能够及早地发现代码库存在的错误,并支持产品、测试等人员及时取包进行功能验证,所以对于Git、Gradle工具、Jenkins服务器需要掌握起来。

开发语言

今年可以说是 Kotlin 年,在 Google IO 之后 Kotlin 着实风光了一把,开发者对于效率的追求是 Kotlin 如此受欢迎的大原因,而它的势头也很不错,跨平台的野心让更多人有了使用它的理由,如今看起来,它甚至比 Swift 更有前途。既然 Kotlin 已然成为 Android 世界的头等公民,与 Java 完全兼容,我们有什么理由不去拥抱它呢。

大前端

其实移动端开发也是属于前端开发,只不过原来我们所指的前端往往都是Web的前端开发人员,开发的是网站,而移动端何尝不是一种展示载体,同样有入口,只不过相比网站端移动端具体天然的可移动性、可便捷性等特性。随着 H5 兴起,原生能实现的功能同样在 H5 端也能实现,并且在体验性方面也逐渐提高,并且H5天生就具有动态性和跨平台,这也是 H5 能够一时潮流的原因之一。

设计原则

这些设计原创才是本质,才是不变的,才是我们需要真正要掌握的,开发语言特性、开发框架发展实在是太快了,我们更不上,不是有这么一句话吗,封装具体变化的,抽象起来就行,去追寻哪些不变的内容。掌握一种设计模式其实也就掌握一种解决方案,这些都是前人总结的知识结晶,基本都是基于特定领域解决特定的问题,我们需要学会在前人肩膀上解决问题。

服务端开发

近微服务火的一塌糊涂,虽然我们基本是做移动端开发,但是基于全栈发展的趋势,对于服务端开发势必要了解,可能没有实战项目让你真刀真q的干,但是对于微服务的结构理论、服务与服务之间通信、聚合是什么样的流程也是需要有所耳闻,在自己擅长领域深入专研的同时横向扩展关注也是需要的,不能关起门来闭门造车,两耳不闻窗外事那是不行的。

阅读源码

对于Android源码和第三方库源码阅读,可以根据自己感兴趣的类型,选择相应的源码库或模块,给自己约定一个时间点,看完之后后有个流程图,哪些是核心类,类与类之间都有什么关系,这些开源代码实现的机制是什么,用到哪些解决思想,这些要点终可以通过文章输出,我觉得输出倒逼输入是一种很不错的学习方式。

移动AI

AI,也称人工智能,1956年,在达特茅斯学院举行的一次会议上正式确立了人工智能的研究领域。会议的参加者在接下来的数十年间是AI研究的人物,他们中有许多人预言,经过一代人的努力,与人类具有同等智能水平的机器将会出现。现在来看AI这个概念很早就存在了,之前没发展很大原因是基础设施不够完善、研究成本高,现在能够大力发展是基于我们的网络带宽变大、计算机性能提升、计算成本降低等等因素备齐了。AI是需要通过算法来落地,那么对于算法理论背景就是数学,所以想进阶AI开发,就需要去学习相关数学知识,特别是线性代数和概率论这两门,是支撑很多算法的理论知识。

小结

总的来说,技术发展能推动社会的进步,解放生产力,进而提高人的社会生产效率,创造价值。技术落地是需要商业应用场景配合,如何配合呢,就是通过每个不同商业模式来实现。终一门技术是需要与具体使用业务紧密结合起来,如果脱离技术谈业务显得空洞,脱离业务谈技术显得偏理论,好是两者相结合。这也就要求我们这些从事软件开发人员在追求技术积累的同时要注重业务积累,让业务驱动技术发展,用技术手段来解决实际业务问题,在技术积累中,辨别哪些是不变的道,哪些又是一时流行的而已,这就需要练就一双火眼金睛了。

作者:cryAllen

你感觉现在的工作不稳定想要更加稳定的工作和生活,可能有一点欣赏软件工程师不用在外到处奔波只要专注自己的事情就可以了,但是实际上想要达到这个目的并不只有做it这一条路。

好吧,假设你真的出于某种原因想进入这个行业,但it这个行业并不是只有程序员一个职位,有很多,比如前面说的产品经理,还有项目经理等等。

我总是觉得一个人的所有经历都是有意义的,任何时候转行都是没有问题的,只是说尽可能地利用好自己以往的经验,以往的知识,以使自己的在将来的工作有无与伦比的优势,必须承认,即使你在编程上再有天赋,刚刚转行,无论从学习能力还是编程经验设计经验上和一些刚刚毕业一两年的程序员相比都是没有优势的。

那么真的没有办法入行么?

我没有这方面的亲身经历所以我的建议可能并不一定对,只是一个参考。我觉得你的文科基础、你的销售经历,注定了你比绝大多数程序员更懂“人”这个概念,并且更懂得和人交流,更加会从行外人的眼光来看待一款产品的好坏。

基于这点,那么我建议你可以尝试产品经理和项目经理的岗位。相比来说,这两个岗位不需要对技术十分精通,在绝大多数正常的公司里这两个岗位也是不需要编程的。我觉得你的门槛在于基础不够,并且没有养成编程思维,这个靠培训没用,只能积累和练习,我觉得对你来说时间成本过高了。

那么应该怎么做呢?

首先你要懂得IT产品,以最火热的互联网产品来说,你可以去查一些资料,购买一些书籍来学习,这些内容相对更偏向于人文一点,老少咸宜,可能也更容易被你接受。当然,你不是抱着科普的目的,而是想入行,那么就更加多思考多深入地主动分析一下:如果让你做一个app,你会选择做哪样的app?它应该是什么长相的?分别解决了什么问题?为什么你认为普通用户会爱上这个app?等等,自问自答,甚至画些草图,一支铅笔一张白纸足矣……这只是个例子( 抱歉我的表达能力有限只能通过这种方式)。

比如项目经理,我个人学习过一些项目经理相关的资料(搜出来的,pdf版,不花钱的),我觉得这些内容对于文科出身的人来说比程序员出身的人更容易接受,而且你有丰富的社会经验和与人相处的经验,有了这些基本知识基础,管理学的一些知识,外加软件工程相关的基础知识(重点哟),只要各方面技术都能有一定的了解(比百度百科再深一点),就勉强可以担当这个岗位了。

当然,IT这个行业其实非常辛苦,主要理由在于它是需要不断学习的,其他行业学习是为了提高,这个行业学习是为了生存,不学习就得死……我觉得你可以先尝试一下试试看不要盲目地决定,然后报一些奇怪的培训班,浪费钱的……

那么再假设你非要当个写代码的程序员,IOS是应用方面的,和人更接近一点;大数据方向对基础要求太高了,门槛相对很高;网络营销那就不仅仅是技术方面的事情啦,要对互联网有很深刻的了解。综上,非要选的话我建议网络营销第一,IOS第二,大数据不推荐。

乱七八糟说了一通,希望对你有帮助。

1、程序员可以利用GoogleAdsense将广告发布到你的网站上去,通过访客点击广告来赚取佣金。写一个网站对于程序员的你应该不难,网站放上Adsense广告,推广、引流、收美金。

2、AndroidApp交易市场赚钱,程序员可以开发一个Android应用,并不是靠开发这个应用来赚钱,这个应用可以是免费的,但是你可以在这个应用里面投入广告,来赚取佣金。

3、对自己实力有信心的程序员可以参加一些开发者大赛得奖,拿奖金,只赚不赔,不过前提是你得有足够的实力。

4、承接项目,但是这要花费很多时间而且还要考虑这个项目做下来是否和你花费的时间精力成正比。是否能得到一笔相当的工资。这种周期比较长,做之前要考虑清楚。

5、刷机、越狱,现在大家都是用智能手机了,有些用久了,卡了,像电脑一样要重装系统,普通人就算可以在网上搜到刷机教程,但也不一定刷的好,并且还可能花费他很多时间,这时他可能更愿意找一个专业的人,尽快处理这些事,你可以借此开展刷机业务。还有iOS的越狱,这个需要你对iOS的 *** 作非常熟悉。你可以将此业务挂到淘宝上,帮助买家实现他们要的功能。

6、做一名优秀的计算机骇客,比如帮助一些企业提高计算机网络的安全性、找出他们的bug修复,并做一些抵御攻击的积极措施等。

7、写评测DevStore专门收集各种开发者评测,程序员花几个小时测试下,然后写评测,如果文笔好的话可以大赚一笔。

8、兼职论坛大神,有些开发者论坛会专门聘请一些专业人士,专门回复论坛各种小白问题,提高论坛的专业度,这个也是一个不错的赚钱方法。

9、做博客,没事写个博客,开个论坛,招几个编辑帮你维护着。平时在编程过程中有什么心得感悟什么的都写下来,不知不觉网站流量就上来了,你就可以投广告赚钱了。

10、投资,做好前几个,你赚到一定的钱后,你可以去投资,当然不能盲目投资,也要学习。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11485938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存