移动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. 今天说一下Order by 这个常规东西~

    Order by 在我们日常的数据库开发生活中是出镜率灰常高的. order by 的作用就是用于对查询出来的结果进行排序~对啊~人家就是这么接地气~比如按发生时间啊,首字母啊之类的都是相当常见. 今 ...

  2. 【转】MySQL 高可用架构在业务层面的分析研究

    原文地址 http://database.51cto.com/art/201507/483463_all.htm 前言: 相对于传统行业的相对服务时间9x9x6或者9x12x5,因为互联网电子商务以及 ...

  3. 金士顿U盘,群联PS2251-60主控,量产还原教程

    还原成一个可移动磁盘教程,只是在"分区设置"中将 "模式=21" 改为 "模式=3" 即可. 1. 打开:"MPALL_F1_90 ...

  4. python异常

    Std 异常 异常名 描述 1 Exception 所有的异常 2 StopIteration 迭代器的next()方法不指向任何对象 3 SystemExit sys.exit() 函数执行 4 S ...

  5. 将u盘的文件复制到虚拟机上的linux系统上面—》文件挂载(文字+图解)

    虚拟机中操作系统.CentOs(无图形界面) 没有图形界面的linux,我也没有配置网络,现在需要把文件复制到linux系统上面,我这里就使用了u盘挂载的方式,获得了U盘中的文件. 1.VMware中 ...

  6. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel

    经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...

  7. 在ASP.NET MVC中使用Unity进行依赖注入的三种方式

    在ASP.NET MVC4中,为了在解开Controller和Model的耦合,我们通常需要在Controller激活系统中引入IoC,用于处理用户请求的 Controller,让Controller ...

  8. CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)

    用qt连接MySQL需要共享库 libqsqlmysql.so的驱动,路径在plugin/sqldrivers目录下,乍看已经可用了,其实不然. 用ldd命令分析一下,libmysqlclient_r ...

  9. windows下nodejs环境配置

    一.下载 去nodejs下载node.msi安装文件包,里面包含了node.js和npm: 双击node.msi就行了,选择安装路径和npm: 二.设置环境变量 [新版本都不需要设计环境变量了,软件会 ...

  10. Android初涉及之Android Studio&JAVA入门--二月不能不写东西

    是的,我还没有放弃写博客. 是的,我也没有放弃PHP的学习. 是的,我要开始学学最TM火的Android开发了. 你呢 1.Android Studio 一.概况 安装和配置什么的就不具体说了,网上一 ...