本帖最后由 zl3450341 于 2011-11-08 01:25:38 编辑 今天看了雅琪MM的工作七年总结,也深有感触,从一个开发者到设计者,管理者角色的转变。算算,我也做开发2年了,也该总结一下自己了。
09年3月在广州,正式从事JAVA开发。那时候只是刚刚知道Java谓何物,Java基础也就很一般,坦白说学过23天 JavaSE,突击过15天SSH,写一个BBS。一个小公司做三个月的临时工。对于我从事的这份工作,这门语言完全处于茫然阶段,当时面试完以后,给我的评语是:基础还可以,框架完全是一团糟。
回想起来我很想感谢那个公司,让我技术提升了另外一层次,算是突破吧,又或叫做入门。试用期2个月,都在接受培训。从前台到后台,我很感谢我的导师,他在我眼里一直是个大牛,即便现在仍然是。后台代码写的漂亮,又精通前台,公司的页面组件基本上都有他参与开发。虽然他给我讲的并不多,每天只有15-30分钟时间,其余的都是自己在看公司资料库,写练习。重新过了一篇JAVA基础、SSH、TDD(测试驱动开发)、CC、Maven使用、Jquery、基础的CSS知识。虽不深入,但却也知其一二。试用期过后,分配到房地产事业部,主要工作职责主要维护公司的物业管理系统、人事管理系统。 其中人事系统是客户和我们自己公司都在使用的。当时我正好参加了公司的人事系统结项大会,开发这个系统的员工薪酬开支是:90W。整个系统文档是21G多,这可谓是我当时维护工作中最头疼的事。维护工作也算简单,主要是新增一些功能,或者客户打电话过来说由于一些误操作异致了一些问题,让帮忙解决脏数据之类的。这两个系统是截止目前为止,我所经历的最标准、最严格、最规范的系统。给我打上了很深的烙印,之后所开发的系统的我都会自觉不自觉的拿来跟它们比较。 唯一遗憾的是:我没有参与这两个系统的开发,没有亲身经历开发过程。 在公司呆了半年,我总觉得是不是太闲了一些,而且没在参与完整系统的开发,再加上部门的业务不太稳定,公司将发展重点放到影院产品线上,导致房地产行业部大量的人员流失。后来得知,后来我走后。整个部门被UC吃掉了,全部挖过去了。
在这家公司,最大的最大的收获就是:对于技术问题,不再有畏难情绪,相信技术的问题总有办法解决、然后就是学会了解决的问题了办法即Google。 到现在,只要碰到问题,我第一反应仍是Google,以至现在的公司的领导都说我很少拿问题出来讨论,其实我是习惯了依赖Google,Java水平也提升了一个程度。
10年的8月我到了深圳,由于缺乏工作经验、项目经验加之又是招聘淡季,找工作变得很困难。一个偶尔的机会去比亚迪打了一个月临时工~之后他们希望我留下来,但是由于待遇问题无法达成一致,最后只能作罢。9月份急匆匆的进了一家公司,其实这是一个我比较反感的公司,公司会统一发工作Q,上班时间禁止在线听歌之类的占用带宽的行为。各种各样的罚款,比较有意思的是公司的一个实习生,发工资是扣完种种之后,拿到只有800块。各种义务加班,连晚饭都不管。发生多起已离辞员工过来找公司清算薪资的,总之就是各种各样的扣和少发。工作气氛只能用一个词来形容:民怨沸腾。我多次跟老板沟通过,无效。总是得到各种承诺、各种许可,但却屡屡失言。三个月,我已经彻底失望,下定决心走人,便是我开始找工作,很快找到下家,然后提出离辞,公司也给力的就批了,走的时候我还跟老总说了一句:我不希望我再回来清算薪资问题。11年的元旦,我正式去新公司入职,也就是我现在的公司,后来上家确实也没有给我少发工资。
这份工作,虽然只有短短的三个月,但是让我认识到自己在沟通方面的优势,长项。敢于表达自己的观点、而且会讲事实摆依据去说服对方来认同我的观点。认识到自己的长处、优点是件幸福的事。
从11年的元旦至今,一直在现在的公司工作,主要是开发公司的产品租用平台。整个平台由我一个人设计开发,这是我之前所未经历的,所以其中有很多的辛酸和故事,当然也有很多值多兴奋的事情。平台在0.2版的系统进行重新开发,既要兼容之前的功能、又有新增功能。做需求分析,只用了一个时间,在现在看来确实太短了,前期需求的透彻、具体的环境的分析不够细致,导致后期开发的时间改动稍微有点点大,至少超出了我的预期。接着设计原型,公司的策划MM是新招来的,在这方面可谓是新手,Axure基本上不会用,对于原型设计更是没啥概念,恨不和一个界面列出所有的功能来。没办法,她天天夸我帅,我只好天天手把手的教她~~ 开个玩笑,其实她是孩子的妈了,只是长的一张娃娃脸。当然了,现在她的Axure用的那比我是好多了。接着进行技术选型上,和领导们有了意见分歧,在我看来,只是一个简单的信息存储系统 + 一定量rest通信服务,对性能,并发无要求。我强烈建议采用SSH,但领导对于SSH这些开源框架关注的并不多,对于代码的稳定性可靠性有置疑。无论我怎么说,他们坚定的坚持要我用自己封装一套出来,我并不怀疑我的沟通说服能力,但是当领导内心已经坚持,任我如何说,亦是无效。最后用了3个月,对JDBC、Serlvet进行了封装了,页面的渲染领导要求采用sitemesh,关于sitemesh公司里面,没有一个比较熟悉的人,只是在他们在用openfire时,觉得这东西不错,框架式页面搭建。可悲的是sitemesh这东西,于是从openfire中抠出来代码,一直加到组件中进行封装。可悲的是,这个代码绘制页面不够灵活,与我的需要有些出入,为了让它更灵活,符合我的需要,于是对这套代码进行了重写扩展。然后在第三个月开始设计数据库,开发,至今已经到了内测阶段。
这份工作,是我独立设计开发的第一套系统,对我的意义比较大。重新封装JDBC、事务处理、Servlet,也算是对我的基础知识的一个检测,但是暴露出来的问题的也很多:
需求分析、设计缺少经验、需要分析和系统设计应该是一个迭代的过程。先进行梗概的分析、把握。再对具体环境更行细节的分析。就拿订单而言:订单如何产生、产生以后会经过那几个状态、什么时候归档(完成),每个
环节涉及多个少角色、每个状态的转变是进行何种操作引起等等......而不是简单的分析一下订单的本身包括的信息就完事。前期的需求越是细致,精确,后期的改动就越小。
缺少宏观的设计,缺少整体的把握。比如技术的选型、页面组件的选取和采用。比如做开发的时候,碰到需要用redirect的方式从后台往前台传值的情况,而且这个值是动态的,需要我后来改近了自己写的组件也达到这样的功能,但是如果采用现成的struts,根本不需要浪费时间。又如前台的验证组件,弹出框架等组件都是到用时才去选择,这也是缺少一个整体把握的过程。
盲目的采用新技术。如采用sitemesh来渲染前面页面,在公司没有一个人对此项技术很了解的情况的盲目采用这种技术,导致了很多不必要的麻烦。在我开发中的很多问题都是由于这东西引起的、很多BUG也是由它引起,一个功能本来没有问题,但由于在渲染的主页面上定义了一个其它的功能,导致原本没问题的功能失效。最广泛的就是页面验证组件,大面积的失效。导致我重写验证。
经验缺少:如:页面上同是用table布局的地方,都要考虑到表格单元格内容过长,导致页面变形;比如某些字段在数据库中做了长度限制的,在前面前面要也做到统一;比如组件不能吞掉异常,事实中在开发中,所有的异常应该抛出来在同一层中进行处理;再如,组件的使用要统一,如使用Jquery。我为了避免在开发中会引入其它JS库,所以在渲染界面写了jQuery.noConflict();结果由于与弹出框架发生了冲突。导致我有些界面用jQuery,而有些界面则是用$来引用......
马上又是2012年的元旦了~意味着今年一年又过去了,从整体上对这二年进行一个总结,以及对接下来的工作和生活的一个规划。
读书方面: