Android开发技术水平走向经验感言

    首先,在公司上班都嫌弃刚培训出来的菜鸟,先抱怨一下,感慨那些技术菜又会吹牛做东西又很坑的菜鸟.今天来谈谈对自身技术水平认知这个概念,当然无关工作年限.单纯谈技术.

    认知一下,首先那些工作很久的人不一定就技术很强,但不可否认经验和解决问题的速度就快.因为基本不是菜鸟;说说我们招聘常见的要求高级工程师.反正就没要求要初级和中级工程师的.但是现在说说个人对初中高的认识:

    Android初级工程师:一般指刚培训出来的毕业生和刚入职或者混日子的开发者,这类人员常见的表现就是代码生搬硬套,网上有的功能代码找一下直接拿过来用,也可以称之为代码搬运工.

Android中级工程师:一般指工作挺久,对手机结构和代码结构有了整体的认知;这类人员的都会对代码有一个自己要求格式,因为 他们都有属于自己的一套代码风格,当然对于一个工作挺久的人,都会有一套自己的代码库,而编写代码基本都会开始对代码格式做好一个封装,方便后期维护修正.所以中级工程师编写代码的速度就非常快速,并且出现bug的概率低,因为代码都有很高的简洁和可读性.

Android高级工程师:一般指大牛等,当然真正意义上的高级Android开发工程师,就不在只是停留于编写代码,高级工程师博客,GitHub和技术论坛都小有名气或者非常出名.因为不过写再多的代码,写再多的项目.有时候你的项目还不如别人培训随便拿出来的一个,而且你的工作年限还不一定比刚培训出来的多.说起来挺嘲讽的Android招聘市场就是这样.所以高级工程师都会在技术论坛打造自己的名气和声望,作为自己以后找工作时的代言;

    架构师:不好意思我也不明白,架构师主要还是集中在后台开发.Android的架构师除非是技术博客出名的大牛

-------谈谈工作类型与水平:

    Android外包公司,负责软件初代版本的编写:

  初代版本软件结构基本简单,而且主要侧重点就是ui界面效果.而且由于app的编写时间也就一两个月,导致软件的效果内容基本生搬硬套,开发者基本在GitHub,Android开源社区里面找到对应的代码,然后东拼西凑.最后结合后台和ui然后实现一个软件的正常运行. 但是软件对各种机型的适配不一定做的很好;而外包的工作往往也是千篇一律,最适合初级开发工程师不断的磨炼积累.

    公司手机app软件维护迭代:

  一个市场迭代的软件,会随着Android系统版本升级不断的针对兼容,并且会对各种不同的机型做兼容.由于Android的应用层都是由各大系统开发商开发,所以导Android的手机种类繁杂,小米,华为,OPPO,vivo,魅族,锤子等等,Android系统手机种类不计其数,还有不同版本,不同系统.这也就导致,有些代码在某些机型上可以正常使用,而在有些机型上出现了未知的问题

  兼容问题往往是迭代版本最容易也是最经常遇到的问题,本人遇到了非常多也深深表示对他们的奇葩无语.主要还是因为如果不找到该品牌该型号的机型,问题还不一定会出现,这就导致了这类问题往往是用户反馈,或者各种机型测试出现.

  迭代软件中偏难的就是带视频播放和社区功能的.在这里不得不吐槽一下,Android自带的mediaplayer只能说谷歌的原生播放器往往在播放视频中功能不太给力,而我使用过程中,还出现了其自带的缓冲功能在某些机型会缓冲一段后然后就结束,而当进度播放到缓冲最后地方时直接返回错误监听. 所以现在市场上大部分软件中视频播放功能都是使用bilibili开源出来的ijkmediaplayer.

  当初级工程师开始遇到瓶颈,感觉写app也就这样没什么东西,就可以考虑转维护迭代,在维护迭代过程中各种重构代码,便会打造自己的代码风格,以及逻辑封装.

    公司机顶盒物联网设备开发:

  物联网设备是除人工智能外热门的技术,其最基础的东西就是socket通信,包括tcp的socket,udp的socket,java流的socket和与linux的中控服务器等的socket交互通信,物联网设备的家具等设备控制往往都是集成,这就涉及到各种与物联设备的对接,而机顶盒开发过程中,最常见的词汇就是Hdmi视频流和Vga视频流接口,串口Rs232通信,can信号,485信号模块转换,红外遥控信号学习中控信号输出等等.

  机顶盒开发,实际就是Android定制开发板开发,和普通app开发有类似的也有自己独特的功能,开发板其实也就是到专门的公司去定制,然后印刷电路电器元件.实际上还是Android开发,不过普通Android开发就不会涉及到普通app和系统app.在这里,很多时候就容易碰到调用系统级别的功能,比如修改系统时间,修改系统ip.以及data/data目录权限在定制板上就能开放出权限给你使用.所以,机顶盒开发涉Android系统源码开发,但有公司专门提供开发版,然后自己再写app来实现功能并作为launcher的app来使用.而一般情况,机顶盒开发要注意到,因为系统设置什么的不像手机可以用户自己开关WiFi等,就导致,一般机顶盒开发的app都要拿到两个pk文件将app转化为系统级别的app.

  而机顶盒开发,一般情况还涉及到linux的c语言功能转换,因为很多技术开发公司开发多年但是由于Android的高端人才缺少,所以导致Android系统编译的工程师和ndk开发的底层工程师相对缺少,底层工程师的工资都相当吃香

  谈到高级工程师,基本都会有一种语言精通,以及另一个语言辅助,Android的高级开发还是涉及到底层编译,而Android的底层就是linux,普通的Android的app开发都有遇到.so文件吧,而这些.so文件的功能也就是ndk开发产物.其中ndk最难的开发就是ffmpeg开源视频算法来编写视音频流处理的核心功能,例如:各种特殊美颜效果,视音频处理等某些软件特有的功能.


你可能感兴趣的:(开发感言)