移动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提供的代码看出层次结构非常合理,特别是针对手机硬件功能扩展部分,源代码特别提供了标准的扩展接口,这就大大方便了特殊行业的扩展需求。在这个平台上终于可以自主掌握了,像以前即使个别手机有问题也可以用源代码进行进行跟踪调试了。

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

移动OA,致我们终将逝去的青春(程序员版)[转]的更多相关文章

  1. chrome常用扩展程序汇总(程序员版)

    chrome常用扩展程序之程序员版 1.chrome扩展程序 Chrome插件是一个由Web技术开发.用来增强浏览器功能的小程序,其实就是一个由HTML.CSS.JS.图片等静态资源组成的一个.crx ...

  2. 可视化工作流程设计开发OA系统,一两个程序员就搞定!

    随着信息化的发展,越来越多的公司老板要求实现企业审批流程化.一个公司在初期,人员少,流程简单,员工也会经常不按工作流程来走,甚至有些跨部门的工作因为关系原因,没有走工作流程就实施,导致后期出现问题或者 ...

  3. 聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路

    引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做<回答阿里社招面试 ...

  4. 程序员"青春饭"问题之我见

      程序员"青春饭"问题之我见 声明:转载请注明出处.http://www.cnblogs.com/hzg1981/ 1. 问题描述 问题1: 什么是程序员? 在本文中程序员的定义 ...

  5. 致Java星球程序员兄弟们的一封信

    致Java星球程序员兄弟们的一封信 亲爱的Java星球的程序员兄弟们: 你们好!我是来自地球的一名Java程序员,首先我代表地球人对贵星球的高司令来到地球传授Java语言,造福了全人类,造福了整个地球 ...

  6. 【转】程序员"青春饭"问题之我见

    1. 问题描述问题1: 什么是程序员?在本文中程序员的定义为: 拥有编程技能,在IT.互联网公司打工的IT从业人员.程序员与很多行业最大的不同是该行业的形成时间短:1954年第一台计算机才诞生,而中医 ...

  7. SQL Server 致程序员(容易忽略的错误)

    标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...

  8. 致诸位新程序员:来自Chuck Jazdzewski慈父般的忠告

    记住这几句话,学无止境.(Never stop learning.)沟通至关重要.(Communication is critical.)履行承诺,胜过交付.(Under promise, over ...

  9. (转)致Java程序员:你离架构师还差多远?

    转至:https://blog.csdn.net/ityouknow/article/details/82782965 几乎每个Java程序员心中,都有着成为架构师的技术追求.那么,成为Java架构师 ...

随机推荐

  1. 0006 《SQL必知必会》笔记02-计算字段与函数

    1.从数据库中检索出的数据往往并不是最后要展示的格式,可以在数据库端或者客户端应用程序中完成转换和格式化,但一般说来,在数据库服务器中完成要快很多. 2.拼接字段:将几个值连接到一起构成单个值.Ora ...

  2. Jade模板引擎(一)之Attributes

    目录: Attributes Boolean Attributes Style Attributes Class Attributes &Attributes Attributes jade中 ...

  3. BI软件搞不定业务管理报表的需求

    BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP.CRM.SCM.进销存.HER.OA等. BI系统不同于传统的管理信息系统,他号称是一个整体应用的 ...

  4. 大话设计模式C++版——观察者模式

    观察者模式是一种类似于消息分发的模式,用于一个任务需要被多个对象监听的场景,或者成员对象需要反向通知类对象的情况,是一种很有用的设计模式.    这里以大话设计模式中的例子为例,办公室员工A.B.C在 ...

  5. Navicat for MySQL连接MYSQL出错,错误代码1045的解决方法

    Navicat for MySQL连接MYSQL

  6. ubuntu14安装Qt

    首先下载Qt源码 https://download.qt.io/archive/qt/4.8/4.8.4/ 这里我下载的是qt-everywhere-opensource-src-4.8.4.tar. ...

  7. 基于jquery的消息提示框toastr.js

    //消息提示全局配置 toastr.options = { "closeButton": false,//是否配置关闭按钮 "debug": false,//是 ...

  8. iOS多线程开发

    概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的,一个复杂的多步操 ...

  9. 3098: Hash Killer II

    3098: Hash Killer II Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1219  Solved:  ...

  10. CSS3中的Rem值与Px之间的换算

    bootstrap默认 html{font-size: 10px;} rem是一个相对大小的值,它相对于根元素<html>, 比如假设,我们设置html的字体大小的值为html{font- ...