移动OA,致我们终将逝去的青春(程序员版)[转]

移动OA和致青春有什么关系,难道说赵薇也来做手机应用了?为什么不行,当年小燕子代言的打印机可是红火的很,现在再秀一把时尚手机办公也未必不可啊。言归正转,本文还是以点代面阐述移动OA开发过程,但是,它的确会是我们终将逝去的青春。

都说程序员是也是吃青春饭的,我也算是老程序员了,最近被集团公司派到下属集成公司负责移动项目的开发。接手的第一个项目就是移动OA,政企部门分配过来的单子,现在要先尽快出一个演示DEMO给客户。第一次负责此类项目,对于新领域、根据以往的经验先找一下有什么开源的库好用。唉,咱们的程序员都是吃开源饭的!大名鼎鼎的phoneGap因为开源首先被选中啊,据说做web app的首选。兴奋、赶紧让手下小弟开始捣鼓,果然没几天DEMO页面出来了。接下来就开始深入开发了,随着需求的发展恶梦开始了。首先为了显示效果和图片的高像素(三星的大屏机器),美工做了很多样式和高精度图片,整个系统立刻变得迟钝了,明显的感觉到上色的延时。其次莫名的奔溃和错误让小弟们加了无数的夜晚,最后糊出来给用户的程序仿佛做的夹生饭一样,用也不好、不用也不好!

唉,青春就这样给浪费了,原因在于phoneGap虽然开源但是其设计并无规则可寻,无法彻底掌握和进行单步跟踪调试,其次phoneGap为了兼容性做了很多无用功使得性能大打折扣,与其使用phoneGap那还不如直接原生开发来的方便,能够自主掌握。最后总结了一下,为这样的项目费这么多青春不合算。相信程序员同志们应该有同感,每当项目使用一个无规可寻的第三方系统的时候,无法彻底掌握就浪费了大量的时间在猜测上和深夜一遍又一遍的测试上,最后能解决的仿佛都是中彩一样兴奋。

有一次在集团交流会议上看到同行的移动OA产品,据说是采用移动中间件实现的,想起前次的经历还历历在目,不能掉以轻心。网上搜索一下“移动中间件”,发现还是有不少类似的产品,先找了一家号称上万用户的产品,就算全年无休也要1天做5家用户啊,神了,又是一个过抗日神剧。不管,先试试吧。由于其提供了很多系统封装好的组件,小弟们拷贝过来堆砌一下就出界面了还算不错,程序开发变成了查配置手册。随着开发深入恶梦又来了,系统提供的组件功能太单一、组件之间没有逻辑控制和关联关系。比如常用的待办列表显示功能,客户要求在列表上滑动后弹出选项标注“已看”、“先放着”、“不清楚”状态,然后以不同的颜色显示在列表上,系统提供的组件就立刻歇菜了,个性化太强的功能实现不了,就先算了吧。可是更大的问题来了,集团发的手机型号很多,同样的程序有的机器就奔溃、有的机器就能运行。这样系统组件的奔溃就无语了、爱莫能助,没办法调试只能求助厂家。

青春再次被浪费了,原因在于别人提供封装好的组件一旦有问题就无法解决,发现移动中间件的跨平台适应性是比传统程序难度更加高些。相信程序员同志们都有类似的经历,用了别人的固化组件结果在这个上面被折腾的有种打不着力的感觉、有力无处使啊。不断发现问题,然后就等厂家升级改动。

又过了段时间,政企的一个大客户用了Lotus OA系统,原来的开发商没有了,现在需要装到手机上来用。这下傻眼了,貌似只能用移动中间件了,再次百度一下“移动中间件”,关注到一家公司提供的产品介绍为“MAStudio移动中间件,不需要原有厂家、即可延生固网系统”好像比较合适。硬着头皮也要上啊,带着前两次的问题开始考察MAStudio产品,看官方mastudio.org上的介绍,系统提供了一种mas框架的结构体系实现了移动OA的开发。而框架本省是简单的对象组件形式、和具体开发UI功能无直接关系,UI开发可以完全自主去实现,系统也提供了各种成品的UI组件,但是它们是可以被修改和改造的。框架的源代码竟然也是开源的,这在国内是不多见的。

从这个原理分析上来看,这个中间件可以让小弟们挽回青春,于是开始深入尝试开发。首先在mas框架下实现各种个性的自定义功能界面非常方便,没有任何系统提供固化组件的约束,框架只是一个运行容器,对于开发UI的干预程度非常少,这样的设计理念还是比较独特的。框架会不会也有问题哩,带着着个疑问我们打开了MAStudio的源代码,从MAStudio提供的代码看出层次结构非常合理,特别是针对手机硬件功能扩展部分,源代码特别提供了标准的扩展接口,这就大大方便了特殊行业的扩展需求。在这个平台上终于可以自主掌握了,像以前即使个别手机有问题也可以用源代码进行进行跟踪调试了。

当我们没有选对平台的时候,大量的时间不是在开发和生产,而是在一直处于测试、调试反馈等待的状态。所以说程序员开发前期线路和技术方案的是很重要的,关系到我们的青春啊。这也就是为什么很多人多年后回头一看,什么累积也没有,高智商的程序开发硬是变成了青春饭!

上一篇:UE4 difference between servertravel and openlevel(多人游戏的关卡切换)


下一篇:CSS3文本溢出显示省略号