这个标题是个假标题,因为我并没有在两个月之内通过一己之力完成了项目的全部内容
我在一个不算小的公司,但是在一个小的项目组里工作。这个项目不大,用户也不多,组织架构不完善。技术上确实有大牛,但是平均的能力还是偏低了。
我要做的简单的说是个 + 阅读类的安卓客户端。之前的项目基本基于webview,新版应用增加了阅读器应有的功能,然后重构之前的逻辑。
我是做技术的,与技术无关的话不多说。虽然我没有在‘规定’的时间内完成项目,但是项目做到现在总会有点心得与体会,今天得空,记录一下我这心酸的两个月。
新版的应用有几个功能,在线离线的写作、在线离线的阅读、夜间模式、动态换肤、推送、登录、分享、用户信息、用户成长等几个功能。之前的老项目是在两年前开始的。经过了大概5个人的手、项目中存在的问题太多,比如
1、泄露问题
- 程序中的泄露问题主要源于项目中封装的volley网络请求造成的。所以基本上所有的页面都有泄露。
- 其次,工具类持有静态context泄露。再此我没有瞧不起某些程序员的水平,但是,我一直有一个观点,就是,干什么像什么,马虎不得。
2、卡顿
- 程序中的卡顿也是个大问题,对于滚了两年的应用,因为不是大项目,也没有用户,开发人员也不太注重这个问题。
举个,在首页会加载多个页面,并没有在程序启动加载时加载这些页面,导致每次点击页面,页面会创建,导致底部的按钮卡顿,页面卡顿。
………
等等这样的问题,大多说开发者会认为,但凡一个应用,不应该存在这样一个问题,况且还是滚了两年的应用。但是我确确实实在这样的项目组,维护着这样一个应用。
我决定重写这个项目,并且,在两个月之内,从零开始。
不知道公司出于什么考虑给从ios客户端转了两名同事,都没有android经验。项目伊始,我一个android工程师与两名ios,干起了这个项目,996,预计两个月完成、不算写作模块。
1、文档
在开发之前我规范了文档,之前的成员不注重文档的维护,整个项目没有文档,注释也是罕见。
2、代码规范与架构
新的改版,我使用了mvp的架构,并规范了代码格式
3、有必要的封装
我把每个模块都抽取了出来,做成一个个的小工具,并且每一个模块的api我都尽量保持相同,像登陆、注册、分享,推送。都有 初始化、传递数据、成功失败回调。 以便在没有熟悉android的时候也能上手开发
4、使用工具
工欲善其事必先利其器,要想在完成如此紧急的项目需求。我使用了很多工具。
如大家所能遇见的,okhttp + retrofit +rxjava 网络层使用了就是这一套了。同时也带上了整个项目的错误处理
使用kotlin
ios工程师对swift一定是了解的,那我就用kotlin,这样从语法上转换就是是那么难了。并且减少了代码量,代码量少了也就缩短了时间,代码少了,从某种程度上也就减少了代码bug的出现的频率。使用databinding,为了加快开发,部分页面使用了databinding,当初也就应该考虑直接使用mvvm
代码review
及时项目紧急,也要review。二次开发
对于阅读器,并且支持图片,视频,我们直接拿fbreader进行二次,虽然我不赞同,但是也没办法。分工
两个ios, 一个干的年头长, 我让他做所有的与js交互相关的页面,另一个前一个月没有具体的任务先学习,之后先从一些小bug入手,了解android,了解项目。
5、deadline
时间到了,我们没有完成需求,写作模块没有做完。除了写作模块,剩下的也没有通过自测。
6、总结
大学毕业到现在整整两年,我的工作一直不是顺利。先后换过三次公司,前者是觉着自己应该去提高,后者抵不过互联网中的宿命。
在工作中,不顺利但是幸运。我庆幸我自己遇到过大牛学到了好多本领、庆幸自己遇到过老师指明了方向、遇到过好同事一起奋斗。在我看来,每一个工作都会有挫折,都会是挑战。
我自己有自己的打算,不可能为了完成需求,陷入苦海。人,总是自私的,凡是都会从自己的利益出发。期限,对我来说是一个对自己技术能力的规划、是对自己的一种考验。但是,付出与我收入不等的劳动,这是我所不能接受的。
道阻且长,行则将至,心向阳光。也许盛夏的蝉鸣是闹人的、可能也是醉人的。