做程序的第二年--2015年总结

    不知不觉又过了一年了,很久没有更新博客,这次重新开始写博客,还是老套路,有了新的需求。我感觉此时的我需要和过去的模式说一个告别,开始更新的我。

   2015年年中是个转折点,原公司倒闭了,在这个互联网公司消亡千千万万,雨后春笋又起来一片的年代,第一次感受到公司人员的大变动,到消亡,心情还是挺复杂的,但也催使了我去下一站是深圳。我想每一个有目标的软件程序员都会想着深圳,刚来的时候觉得自己的条件不差,有多项目经验,有个人开发能力,曾经是组长,有领导力,沟通能力。但是现实还是和自己相差有点大,人家看了就是哦一声,很简单的传达出了,我们这边的门槛就是这样的人,遍地这样的大米。面试了大概有6家公司,过了一周了,在家等着没有音信,最后是在第二周周三某个见面会上遇到了现公司研发中心的主管,一句话能吃苦吗?能,进了。我都想了我也有2年工作经验了,在这边还是属于小白型,稍微比大学生好一点的待遇,但是我能进上市大公司,学习底层技术,我拿着8000的月薪,我进了。

    2015年6月1日,我入职了,因为是android智能电视,所以我们的工作环境有很多大屏电视,每个人桌上各种型号的主板,接着串口到自己的电脑上各种调试,我很久没有碰硬件了,有一次还碰了电源模块附近的东西,直接被电到一下,搞得我现在一直不敢碰电源和周边的大电容。我的工作内容发生了很大的变化首先是从原来的android手机应用转到了android系统应用。我们可能主要要维护launcher,setting,filemanager等常见的系统应用,还有些应用是在源码里面的,好,那么新接触下来,多了2个大东西,一个是android的源码,一个是串口操作。从现在的面试条件上写的说有framework经验的优先,然后很多新人可能都会会去看下源码的代码片段,比如ActivityManager,WindowsManager等等,但是现在看来那样真的收益很低,因为你不知道整个应用场景啊,相当于知道了这个东西,但是很浅层的了解,你甚至改不了任何东西,你没站到这个台阶上,看到这个场景别说改了。先在的我开看这个事情的话,比如说可能需要进入源码中xxx项目/framework/base/core/目录下去修改,这边修改的最后面编译的话会形成android.jar,最后需要make -j16编译整个android,最后打包bin,升级整个系统,才能调试修改。(这边其实我还没清楚在这上面更高级的单元调试,所以还是和同事一样的方式)。在源码中,可能有些地方有makefile文件,能通过mm命令,直接在out目录下形成apk,或者是上述情况同样在out目录下形成jar包。这样子看下来,它要求的是根本不是简单的framework经验,而是android的定制经验,你只有站在这个系统层面上才能看的更清楚。

那么定制android系统的话,需要会linux的操作命令,会看懂.sh和.mk文件等等,新手的我进去之后,真的完全不懂这2块,硬啃啃下来,少不了被骂。15年的6月到8月这段时间是最煎熬的时间,解各种版型的bug,自己摸索linux,熟悉编译mboot,kernel,android,supernova。后来理清了思路,一开始先跑mboot,里面是开机的东西,再起kernel,然后android起来,最后是数据库supernova起来,到了launcher。稍微会了编译全部,还是不够的,因为对android源码不了解,进到android源码中看到是一个陌生的目录device,dalvik,development,framework,out,package,system,vendor等这边让我晕头转向的东西,网上百度android源码结构有有一些东西介绍,不过如果想要更多的了解源码,还是看老罗的博客,里面学到不少,毕竟大神。但是还是建议用到了或者自己尝试了这一块,再去看博客,不实践的话记不住知识点,源码难啃,易忘。个人觉得可能放在编译玩的比较熟了之后,去研究源码。

15年的9月11月,是一个解bug的高峰期,我在这个阶段觉得最有价值的二个大问题是网络和蓝牙。我们的网络和蓝牙都是MTK的源码直接使用的,当时是根据客户的需求修改网络逻辑,比如客户要求有线连接的优先级高于无线连接,在网线连上设备的时候,自动识别并使用有线连接等等,一开始我是挺怕碰网络的代码,一是比较难这个点,但是任务分到我头上了,也只能硬着头皮去干了。这些知识网上找的资源也是碎片,很多时候还是需要靠自己去整理逻辑,就优先级那个事情,我们可能都会想到是不是有一个connectManager去管理Ethernet和wifi,他们二个也有自己相应的manager和service,但是肯定有一个manager去管理他们二个。找了很久找不到,后面是写邮件给MTK,寻求技术帮助,这边不得不说,MTK有专门搞网络的,也有专门搞蓝牙的,切分的很细,即使上一任离职了,也会留下他积累的东西,而我们这边就是全部都是自己来,懂了的就是自己的,很难传承下去,不是没文档,而是不规范。从MTK那边得到了很多宝贵的思路和意见,磕磕碰碰完成了这件事情,也稍微清楚了怎么和MTK沟通,需要什么版型,哪个型号的wifi芯片,怎么复现问题和他们说,他们才好帮我们解决问题。最恶心的还会遇到kernel发上来的东西不准确,交给MTK那边想思路,也得不到很好的解决,那么只能靠多重判断去弥补这个事情。蓝牙方面也是,优化扫描设备的速度,这边还是需要靠系统层同事去优化kernel,毕竟是系统发出广播,上层才会去处理扫描结果。蓝牙的逻辑同样也是纠结了很久,才感觉稍微清晰了点,网上的只能参考,因为代码被MTK修改过,有他们的逻辑成分。

15年的11月到16年的1月,我更多的是开发新东西,并维护。有做2个java项目android的国际化批处理翻译工具和android的exel批处理写入,DSPmenu,Filemanager,Apklog,Launcher客户定制的机制修改。开发新东西都需要在最新的版型上面使用,那么我自然的就成了此项目的bug专员,android部分的问题都丢在我头上,解决问题,保证整个跑起来没问题,我知道自己在哪些地方的做法会有问题,哪些地方不好解,工作就是填坑,优化,挺充实的。所以在年底我的定位就是主要开发新东西,解bug,其次是维护,或是写好文档,让别人维护。

16年1月,我获得了MTK的launcher代码,阅读起来简直是教科书,满满的都是经验,现在回顾来看从android应用工程师转型成android系统工程师,底层的东西接触的越多,越感觉池子很大,需要努力的地方很多,眼光也高了。15年的2个目标能进大公司实现了,macpro还没买到手,等年后吧,也算一半完成了。2016给自己的目标是在android系统上走的越深越广。感谢帮助过我的很多人,在深圳真的不容易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值