写在第二个本命年

新春快乐,狗年大吉!

转眼毕业半年多了,时间过的真是快啊。说好的坚持写作,最终还是败给了懒惰与拖延。这半年多来,大多数写作都是发生在印象笔记中,而且基本上是一些小技巧、小经验以及日常琐碎的记录。相比较而言,长时间坚持写博客写文章真的很难得,这是一件需要毅力和耐心的事。

虽然经历了几个半路腰斩普通的项目的洗礼,也算的上是一个老油条了,总觉得应该有点东西可写了吧,回头一看,咦,好像留下的东西并不多。所以说,光做项目,但是不去思考总结,那么项目做的再多也只是无意义的重复而已。所以虽然有点久远了(才一年不到好吗),还是简单总结一下做过的几个安卓项目吧。

首先,还在实习期的时候,leader 给了一个公司内部的课程通知的 app,让我和另一名实习生做一些改进,算是练练手吧。头一次接手别人的项目难免有点心慌慌,但是经过一段时间熟悉后,改功能或者UI也就轻车熟路了,有种慢慢找回自信的感觉。尤记得刚拿到项目的时候,发现项目里网络请求用的是 Spring Framework,心里吐槽了好久。不过有时候遇到写的巧妙的地方也会忍不住和同事感叹一下,尽管现在看起来可能会觉得很常见。另外关于这项目有意思的地方是用到了beacon,发现原来这东西结合 BLE 还可以玩出这么多花样儿,比如打开蓝牙搜索附件房间未来有哪些课程,进入房间推送签到,离开房间推送课程评价等等,还是挺好玩儿的。

第二个项目Cedars-Sinai,算是接手的第一个正式的项目吧,需求不算复杂。虽然项目架构不是我定的,但是从零开始搭项目,一开始的时候还是觉得挺有挑战的。尤其是使用依赖注入库 dagger,由于之前没有接触过,花了好长时间总算基本熟悉了,写了一篇博客发在了公司的博客站点。然后其它难点好像也没有了,诸如谷歌地图之类的熟悉了之后感觉也没啥特别的,调调API而已。这项目做了3个月左右,然后9月份上线 Play Store,感兴趣的可以下载体验下,虽然现在只有美国的同事在维护了。

做完 Cedars-Sinai 项目的 KT 之后,开始闲下来了,于是学习了差不多一个多礼拜的官方文档,然后被通知要做一个公司内部的AR小项目。项目的 Product Owner 是公司的 Principal,那天 leader 拉着我们几个过去开会,听 Principal 聊了一会儿,只是知道他们大概要什么样的效果,但还是感觉一脸懵逼,不过最后很豪放地说让我们自己大胆放手去做。头一次接触AR开发,有点手忙脚乱但是又很有新鲜感。因为是内部项目,所以技术上选型还是非常自由的,加上安卓和 iOS 完全是分开独立的,所以尝试了很多AR开发SDK,比如ARCore/ARToolKit/Vuforia,最终选定 EasyAR,因为支持的设备更广泛,文档比较全,使用也比较简单,而且功能上完全可以满足需求。由于做AR应用涉及到的不仅仅是安卓相关的知识,还有比如OpenGL等,还是花了不少时间来熟悉的。那段时间阅读了很多关于OpenGL的文档和博客,甚至公众号也关注了不少,然后也写了一篇总结。最后刚刚做出一点雏形的时候,被调去另一个项目,我的“AR 之路”也就不了了之了,当然这次只是浅浅接触,以后应该还有机会再深入学习的吧。

现在在做的项目差不多算是第四个项目了吧,Auto Club,在我接手之前就早已上线了,现在基本上处于维护的阶段。这是一个大项目吧,不仅体积大,开发周期也长,估计要做到今年年中。团队的话,我们这边 iOS 有两个,Android 也有两个,美国那边也有5、6个人和我们一起协同开发,基本上是他们下班了我们这边接着干。接手这个项目也学到了不少新东西,除了常见的三方库外,也对很多东西加深了理解,比如模块化、TDD等,尤其是单元测试。以前总是觉得单元测试不重要而不去做,进入这项目一段时间后,发现这种级别(多模块、业务逻辑复杂)的项目,充足、完备的测试对新接手项目的人来说简直是救星,做完改动也不用担心会把其它功能给改坏,只要输入一行命令把测试都跑一遍就行了,不要太爽,而且看单元测试也有助于理解项目代码。然后唯一不太习惯的是TDD的开发方式,不过相信一段时间之后就会适应的吧?

其实从去年10月底到今年1月初还做了一段时间的 Java 后端开发,一个基于 Spring Boot 的项目,跟着公司后端大佬一起写写接口、调试代码,想着有时间也谈谈做后端的经历对 Android 开发人员的帮助吧,做过后端之后还是产生了不少新的想法的。编程都是相通的,重要的是打开思路,光是埋头苦干还是不够的,有时候多看看隔壁后端兄弟或者前端妹子在忙什么,也有助于我们了解自己的工作到底该怎么做,怎样才能做的更好。

好了,差不多就写这么多了,待会儿要去看烟火了~各位辛苦看到这的,祝大家新年快乐啦!(看到这篇的时候新年已经过了?那就祝各位长的越来越好看!ヾ(¯∇ ̄๑) )