程序即人生---我为APICloud代言

谈起编程,我想大多程序员或者软件设计师都会有不一样的感想,因为程序员这个职位或者角色已经或多或少能够给人一种与众不同的感受,或掉头发或两眼发呆或屌丝般落魄,特别是在这一两年的电视剧或者电影中都经常会拿程序员等IT工作人员作为例子,在与仙女般的女主人公的相亲中,程序员被媒体嘲讽的例子经常可见。但是,在这个信息技术飞速发展的时代,人们往往都显得很浮躁,也就因此忽略了程序员这个角色,试想一下,如果没有优秀的程序员,会有今天信息化飞速发展的水平吗?会有那么多人手里拿着几百元钱的高大上智能手机吗?还会那么多人拿着所谓的平板电脑在肆意地滑动屏幕,体验着丰富多彩的移动App吗?我想,这里有很大的一部分功劳的背后离不开程序员的不辞辛劳。作为一个有四年工作经验的程序员或者软件设计师,尽管编程工作给我带来的成就并不能惊天动地,但从中逐渐积累的逻辑、思维方式以及解决问题的方法一定会影响着我现在和以后的人生,特别是当我遇到各种困难的时候,程序员经历会让我更加一往无前地前进。一个程序员在编写程序的过程中所经历的种种和积累起来的经验,能够为今后的人生提供科学合理的指导经验,我想这就是所谓的程序即人生。

相信有一大部分计算机专业的学生在大学毕业后选择编程作为的自己的职业,而计算机专业在国内并不是一个非常具体的专业,有分网络方向、编程方向、数据库方向等,以及学历又分为本科和专科,我是一名计算机科学与技术专业的本科毕业生,当我还没有毕业的时候就发现我的实际工作经验不如一个刚毕业的的专科专业的学生,而且即使是学网络专业的学生刚毕业的时候还能找到一份工资比我还高的工作,于是我不断反思,是什么原因,但是工作一两年后我才发现,原来编程这份工作给我带来的最大价值是在教我如何去解决问题,而我的职业之路也没有想象中的差到哪里,甚至比同一个起点的一些人好。毕业之后我考试曾用了两个月的时间准备考研,考研的原因很简单是想能够进一步把专业学好,结果没有考上,我就开始了我的程序员之路。工作期间,也许是因为自己不甘于平凡或者是毕业之初热情过高,再加上对专业的热爱,一毕业就独立完成了几个软件项目,不能说实现了多么复杂的功能,但是至少也完成了比较正式且实用的软件项目,包括OA系统、B2B网站及后台的开发、 财务管理软件等几个项目的开发。从我经历的几个项目当中,有以下几个是让我印象深刻的项目,它们都有一个共同的地方,那就是遇到问题的时候如何高效解决和冷静应对。

第一,开发某县的电子政务行政审批系统。这个项目是我工作的第二年就遇到的一个巨大挑战,在当时我所在的企业没有做过于行政审批相关的项目,这个项目的重点在于工作流引擎的导入,在探索过开源的JBPMBonita等相关工作流引擎之后,发现跟项目的实际需求还有一定的出入,更重要的是项目需要在两个月左右开发出主要功能。项目经理也在不断地想办法,最终经过小组几个成员的探索决定采用第三方的一个开源的工作流平台作为项目的开发工具。也就是在利用这个工作流平台开发出电子政务行政审批系统。但是由于所有成员对这个工作流平台并不了解,而且项目组只有两个技术员,项目核心功能的开发落到了我的肩上。这开发行政审批系统的核心功能的过程中,我曾出差去省外的软件公司交流培训过,也曾自己无数次在办公室尝试系统的核心功能技术的可行性,包括动态表单、工作流引擎配置、数据流转以及文件加密与存储等功能的研究,有不止十次地想要放弃,因为接手一个从来没有人从事过只是理论上认为是可行的技术,又要把技术转化为实际项目的功能开发,对我一个刚毕业一年来的程序员不得不说是一个巨大的挑战,这期间我曾有连续一个月没有休假过,一个人在办公室做许多次开发环境搭建和无数次的程序调试,但每一次想要放弃的时候却都坚持了下来,原因是想把这个项目做好,而且这个项目是一个县级的电子政务重点项目,如果能够做好,以后将可以针对其他县市做出通用的软件项目,该项目最终顺利完成并有其被其他县市使用。在这个项目中,我体会到最深的就是要如何找到适合项目需要的解决方案,不同的软件项目有不同的需求,但是并不是越高级越难懂的技术就可以解决,而是找到与项目实际情况相适应的解决方案才能保证整个项目的顺利完成,举个例子,JBPMBonita都是国外著名的开源工作流解决方案,但是对一些实际的项目需求来说,这两个解决方案未必能够在短时间内高效地完成项目的所有功能需求,原因在于这两个解决方案在UI和参考资料上并不完整,而且灵活性和项目的需求相比显得不够。此外,该项目对用户的友好性要求较高,操作该软件的工作人员日常工作中事务繁忙,要求系统能及时高效响应,不能有明显的延迟,并对打印机、扫描仪等终端设备需要良好支持,所以细节方面需要兼顾。

第二,开发某OA客户端。这个OA客户端的需求其实是来源于原先开发的OA系统,原先的OA是采用B/S架构,所有的用户操作都是在用户登录网页之后进行,但是公司的一些领导由于习惯了QQ等即时聊天工具的方式,需要将OA开发成类似QQ一样的界面,所以就产生了OA客户端的需求。当时的项目需求是需要在1个礼拜完成,这个需求原本是不太可能做到的,原因就是一个OA系统的功能就算是从头开发,客户端的功能也不下几十个,不可能在一周之类完成。但是有个灵感就来源于平时对客户端软件的观察,那就是阿里玩玩电脑客户端,经过观察,这个客户端其实只是将网页嵌套在一个类似浏览器的框架当中,因为当点击阿里旺旺客户端的时候,我们会发现都会弹出一个网页,网页的地址是127.0.0.1:8801之类的地址,很显然这个是一个本地的网页地址,也就是用一个类似浏览器的框架就可以模拟出一个电脑客户端软件,于是我就用Java编写了一个浏览器程序,对浏览器的外观进行一些设置和美化,同时让UI设计师将OA系统的界面做了一些调整,把网页嵌套在自己开发的浏览器程序中,程序一运行起来,发现原来电脑上的客户端和阿里旺旺相比大相径庭,这个项目也就是顺利完成。OA客户端的开发最重要的是思维,也就是在特定的时间里要能够善于发现身边的事物,能够借鉴他人游戏的经验来解决问题。

第三,开发某三星级酒店的ipad点菜系统。这个系统其实功能比较简单,就是在ipad上面能够实现菜单的预览和点菜,通过一个web后台管理菜单的数据,对于功能较为单一的应用,而且要能够在ipad上面运行,那么这个功能也算是一个小型的移动App了,一想到这里我们就会使用混合式应用(Hybrid App),混合式应用的开发有大家都知道的phonegap,但是我们国内也有出了一些较为高效的开发方式,包括APICloud为html5plus提供的IDE,让混合式应用的开发、编译、部署、调试变得方便和高效了很多。这里,从一个程序员的角度,我想提的就是在当前和未来,将会有越来越多像APICloud这样的服务商,提供一系列方便快捷的服务和工具,也许未来的软件工程,程序员使用得越多的将会是基于CBSE(component-based software engineering),这也是一种重要的思维方式,对于我们生活中遇到的问题也会是一种重要的解决思路。

上面的3个例子,是在程序员道路上让我印象深刻的几个例子,尽管并不能说明很多高深的问题和道理,但是程序员的生活也许就是如此,程序员们在默默地为我们 这个信息时代做出巨大贡献的同时,也在不断地塑造自己的各种能力-分析问题和解决问题的能力,随着这种能力的积累,将会细水长流,不断塑造程序员与众不同 的品质,我想这就是程序人生的真谛。

你可能感兴趣的:(程序人生)