盘点我的工作

    呆呆地坐在这里,总想写点东西,也不知道该写些什么?同事们都在认真做着自己的工作,没有人知道坐在他们旁边的我明天将不会坐在这里,因为我要离开这里了,不知道怎么回事,这几天上班有一种恐惧的感觉,不知道是为了什么。有种莫名的恐惧,难道是因为我们现在所做的这个项目,难以理请思路的需求分析,变幻莫测的数据库结构,最另人头痛的界面设计,堆到一起让我无穷下手,工作效率极其低下,我感到无所适从,我郁闷之急,盘点一下我工作一年多来的工作的成功与失败:
      
最开始带我入门的应当属我们开的SQL SERVER2000课了,虽然以前也曾经学过VB VF 但对于我来说都没有太深的印象,教我们SQL SERVER2000的老师让我们去他自己的教学网上实践SQL 语句,顺便讲一些关于ASP的知识,于是我开始慢慢接触网络编程语言,不过仅限于皮毛,与实战还有很大的距离,后来这个老师从外面接了小的网站项目让我们专业的同学分组来做,作好之后采用那组的作品,就可以得到项目经费就2000元,不过诱惑力对我来说还是相当大的,可惜是用PHP+MYSQL 要搞什么跨平台,看来还用重新学起,于是从图书馆找了几本关PHP+MYSQL的书天天研究,分析代码,最终搞懂了怎么用PHP搞论坛、新闻系统,留言板等,但是界面始终不如人意,界面出不来,后台代码无从谈起,所以后来就不了了之了,但是却给了我一个深入了解网络编程语言的机会。
     
转眼间,寒假快到了,突然看到了一家广告公司招聘兼职网络程序员,就我这半瓶醋,抱着博一下的决心,就去那家公司面试了,老板要求要用ASP语言做,我的ASP早就丢掉了,不过机会是不等人的还是试一下吧,最后,壮了胆把这个项目接下了,负责做公司门户网站的美食版块的新闻系统,我负责所有的后台编码,前台界面有公司内部的人员设计,这正是我所希望的,规避我的短处,发挥我的长处,总费用1500,先付500定金,拿到钱的时候我就有点后怕了,万一不能如期完成是不是要吃官事呀,一个月能做完吗,超期是不是会罚款呀,我只能硬着头皮上了,这对于我来说也是个非常难得的机会,如果作好了,以后的机会会更多,我的能力也会得到明显的提升,不过后来的日子就不好过了,已经到了假期,舍友都回家了,原本热闹非凡的宿舍变得冷冷清清,我感到极其的郁闷,好在下面的食堂还有一个窗口没有关门,可以保证吃饭,但是行走在冷清的校园里觉得很不舒服。更重要的是遇到很多技术上的问题更是无从下手,比较最简单的ASP连接SQL SERVER数据库就让我困扰了2天,还有还很多的问题,我一个闷在宿舍,对着电脑,图书馆的大部头书根本解决不了问题,最好的就是BAIDUGOOGLE了,基本上有90%的问题在上面得到了解决,但是在这个过程中如果问题得不到解决,我晚上都睡不好觉,那时候晚上睡觉中还梦见自己在整网页,起来继续整网页,更痛苦的是脚本错误,能让我弄好久都不知道怎么办,但最后靠着BAIDUGOOGLE都解决了,这重日子持续了半了月,快过年了,我估计孤独也熬不过了,不行得回家,于是终于在年三十回到家了,正好赶上贴对联,但是晚上还是睡不好,老是梦见我在写程序,调程序,为了不耽误工期,在正月初六我就踏上了返校的火车,然后继续写程序,终于在元宵节左右完工了,算了总工期用了25天,老板还算满意,拿到尾款,心里觉得很爽,1000块,马上回去请宿舍的人大吃一顿,花去100大洋,这也算是来大学以来赚得最多的一笔钱拉,钱不最重要的,最重要的是在这个过程中所学到的东西,掌握了很的获取知识的技能,为以后的进一步学习打下了很好的基础。
   
时间大概过了半个月,老板找我去公司谈进一步合作的事情,原来在我做网站的同时,工学院另外计算机系的一个学生也为公司做网站,只是我负责美食版快,他负责房产版快,结果老板对那个同学的作品不太满意,因为工作量都差不多,他做了40天,我做了25天,他做完的文件竟然会有80M。而我的还8M都没有,我看过他的源程序,真正有用的没有多少,里面存在很多 没有用到的垃圾文件,特别是图片,也就是在编程过程中,根本没有整理文件,导致文件异常的庞大,感觉上,在这方面我还是比他强的,而且在后面与网站编辑沟通的时候,我又很负责地尽量满足他的要求,解决他的问题,最后给老板的印象是,我是个很负责责任的人,于是想留我继续在公司工作,辞退了另外一个同学,但是我在大三还要上课,就按原来的方式合作,公司美工设计好网页,发给我,我再在后面写ASP代码,就这样我边学习边工作,为该公司完成了市民板快和网络歌手板快。
    
时间过的很快,转眼间了过了一个学期,到 2005年的7月份,我们要放暑假了,在这个学期中,我通过编写ASP代码,已经熟练地掌握了基于ASP的编程,但是在这过程中我也接触了一些关于MS STUDUIO.NET方面的知识,特别是C#方面,但是只能限于自己电脑上的练习而已,我必须找个能够提升自己能力的环境,因为此时做ASP编程已经不能满足我的要求,感觉一直做下去,也是老样子,没有很大的能力提升空间,而公司的网站只能要ASP做,所以我辞掉了现在的工作,我必须想更高的层次迈进。
    
暑假从家里返校后,我就在网站上留意有没有关于.NET方面的招聘信息,还真让我找到了, 本市有一家软件公司正好找.NET方面的程序员,我看这是个机会,我去试一下,或许会有机会,虽然我在.NET上没有集体开发的变成经验,只是有个大概的了解,我还是去应聘了,一起参加面试的共有六个人,一看来头,我最差,其他的人中有三个人是我的学长,刚好毕业在另一家软件公司从事DEPHI编程一个月,觉得不好想跳到现在应聘的这家公司。还有一个在面试前,聊了几句,得知是从广州过来的从事JAVA方面的高手,而且简历里还有个什么证,全是英语,看不懂,而我却还是一个没有毕业的大学生,不能全职在这里工作的人,看来我今天的胜算不大,准备放弃了,但是后来又想既然来了,就硬着头皮去试试吧,面试开始后,我一直往后推,不敢进去面试,后来面试的老板送走了最后一个面试的人,他认为已经完了,我就赶紧上去说:经理,我也是来参加面试的。经理比较大方,就面试了一下我,因为我在C#方面钻研比较早,可能有点机会,但是因为我是在校生,所以面试通过的机会不大,他让我回去等通知,我想估计没有什么机会了,还回去吧。
   
大概时间又过了半个月,我接到经理的电话让我明天去上班,我大吃一惊,觉得有些意外,有些惊喜,但是一听上班地点在这个城市的西南端,而我们学校却在这个城市的东北端,没有直达的公交车,踩单车要踩一个小时,我有些犹豫,但是为了能有机会更好的学习,提升自己的能力,我一定要珍惜这个机会。我答应经理明天去上班,
   
一大早,我踩着单车,运行一个小时,到达了传说中的上班地点,真是超远,踩着我屁股都痛了,为了这个机会,我也忍受一下了,一进办公室,人不是很多总共5个人,其中有个就是那个从广州来的那个JAVA高手,当初就想,如果有机会跟这个牛人一起工作该有多好啊,老天真是眷顾我,这点小愿望也让我实现了,但是当初只是招两个人,那么也就是除了那个牛人之外就是我了,难道我真的比我的学长强吗,后来和同事聊天时,才知道在我等待的半个月中,先后来了三个人,包括广州来的高手,另外两个都是我的学长,先一个做了一天感觉离住的地方太远了,做了一天一声不吭就走了,后一个也不知道什么原因莫名其妙地走了,可能觉得工作环境不是很好(注:我们软件部的办公地点是在公司的仓库里,因为该公司除了做软件以外还做系统集成,里面堆了很多的电脑,感觉不太正规),所以这才有机会给我进去,真是天助我也。

   现在开始我开始了我真正的工作,一份软件工程师的工作,听起来很好听,可是只有600块的工资,就觉得心里不爽了,不过最重要的能在这里体会到一个软件开发团队是如何进行团队开发的,否则呆在学校里学很多东西,但是如果没有实战过,一样会是摸不着头脑,但愿在这里,我能得到我想要的东西。

刚开始,由于我的C#比较有基础,所以基本上在团队开发中不会拉后腿,难得呀,呵呵,同事对我进行了VSS的初步培训,熟悉了怎么用VSS进行源代码管理,总算让我闻到团队开发的味道,窃喜中,参与的第一个项目是帮东风柳气做售后服务系统,B/S模式,以C#做为开发语言,后台为ORACLE 10G 的数据库,ORACLE 何其伟大也,传说中可以达到工业级的数据库,一启动就能吃掉服务器500M的内存,可惜在学校只接触过SQL SERVER2000的数据库,相信应该不会差别太大,不过就我那烂机,实践ORACLE就别想了。参与开发的六名工作人员中,只有从广州来的那个JAVA高手用过ORACLE,其他人都没有用过,但是那高手也仅是用过,并没有对ORACLE 进行维护过,光装ORACLE数据库装了两天,在这期间,我们的开发人员经常开会探讨分析需求,设计数据库,我期间我也大显神威,(夸张一番),因为我在大二就通过计算机三级数据库技术,对数据库设计理论比较熟的,相反其他人除了老大(角色:项目经理)了解数据库设计理论之外,其他人都好象不太了解,真不知道他们以前的系统是怎么做的,老大比较器重JAVA高手,让他设计数据库,结果比较出乎意料,不要说要达到第三范式,第四范式,连第二范式都成问题,果然老大比较了解数据库设计,将一些问题一一纠正,这个数据库才勉强可以用,我现在也发现其实那个高手也不怎么高,虽然做了一年多的JAVA编程,可能是在一个分工比较明确的团队里做的,除了写些代码外,好象没有参与过数据库设计,真是遗憾,看来高手并不高,我在关键时刻也提出了比较好的建议,另外对BOM的理解也比较好,至少比其他开发人员要好,而且在做需求分析的时候,又用UML画了用例图,和顺序图,老大就觉得我这个员工还可以,至少在基础理论上比其他人更优秀一些,在最后的软件架构设计的时候我又倡导三层架构,现在我才了解到原来他们做系统用的是两层架构,现在他们做原来系统的维护就带来了很多的麻烦,再加上广州高手也倡导三层架构,因为做JAVA在架构方面的思想还是比较好的,我们就开始了三层架构实践了,一个做界面,我做业务层,另一个做数据层,但是效果并不理想,我开始想的也比较天真,我想对于数据库的操作,无非是添加、更新,删除,检索,我还天真地认为,这样就能搞定所有的业务操作,再加上我们的开发人员对ORACLE数据库的不熟悉,我们用对待SQL SERVER的方法对待它,结果出了很多意想不到的错误多了一个空格就可能引发错误,而且很难发现,而我开始做的单位管理模块,单位基础信息就有三十多了字段,就一个新增操作,就让我头疼了两天,程序早就写好,可有时候能通过,有时候就不可能。我只能一个字段一个字段地检查才排除了错误,真是痛苦,而且为了赶工期,几乎天天加班到晚上11点,国庆也没有休假,真是忧闷,我那时侯发现这样下去也不是办法,可能架构出了问题,因为在设计的时候,考虑到以后的扩展,用了WebSevice,为了实现基于多数据库的支持又用了抽象工厂设计模式,搞了那么多花花东西,没有花足够的时间在真正的业务编程上,这样持续了一个月,老大也发现了这样下去不是办法,后来软件部开了个会,整体重新返工,改变原来的软件架构,去掉WebSevice和抽象工厂,轻装上阵,渐渐地开发才步入正规,结果这个项目延期一个多月,才勉强完工,但是客户又不断的要求增加功能,搞得我们疲惫不堪,在原来的基础上就增加了新闻发布和交流论坛,这个任务就由我来做了,在网上SQL SERVER ACCESS的论坛一大把,但是ORACLE 的论坛可没有见过,经过几个月的开发对ORACLE数据库比较深的了解,知道ORACLE SQL SERVER 在语法上的差异,我了解到它们都支持标准的 SQL 语句,但就主键生成机制和存储过程等有很大的不同,所以我必须在一个没有存储过程的论坛上进行修改,界面不变,改变底层的数据库操作,终于用了三天时间搞定一个论坛,做完论坛后,就相对比较轻松了,只是对这个系统进行维护,增加一些附属的功能,正在这个时候,公司作为柳州职业技术学院计算机系的校外实习基地,老大又让我承担了对该校毕业生的技术指导,其实我和他们一样都是将要毕业的学生,有点差别的就是我是本科,他们是专科。我已经参加了半年的软件开发,在和他们的接触和交流中,我感觉到了在这半年的时间里,我真的有了很大的进步,看到他们的数据库设计,还有字段的命名,程序的编写规范都只停留在一个学生的地步,中文的字段名,中文的变量名,没有面向对象的思想,没有架构思想,UML和设计模式更无从谈起,与一个真正的软件开发者相差甚远,相比之下,我就感觉到我学了很多的东西,比如团队开发,良好的编码习惯、VSS的原代码管理、MS VISIO的流程和UML设计、POWER DESIGERR的数据库设计,实体类的使用、软件的分层思想、ORACLE的使用和优秀的架构思想,以及良好的业务分析能力和数据库设计思想、Web Service 的实际应用、软件设计模式的了解等,谈不上精通,但也可以熟练使用了。春节到了,为了能在除夕前赶到家,我提前请了三天假,回家了,这个学期在公司学到了很多东西,有中满载而归的感觉,但是在学校里,却没有上过多少课,偶尔去上课,同学都说“老兄,很久不见了”,我心里不是滋味,不过也无所谓了,即使我天天坐在课堂上也学不到什么东西,上的课都是几年前的知识,比如做系统分析,还在讲如何用流程图对业务进行分析,但是现在实际的软件开发都是面向对象了,这方面已经用用例图、顺序图、交互图、类图等代替了,相比下来,我觉得我旷这一个学期的课还是值得的。我无悔,好在期末考试没有挂,我万幸了。

当其他同学还在家里沉浸在新春的快乐中,大年初六我又和去年一样踏上南下的列车去公司上班了,新春刚过,公司没有太多的事情,还的对去年的系统做维护,现在才理解到了林锐的话:“客户的需求是不断变化的”,是真有道理,项目还没有完全验收,需求就已经变了,客户又不断要求增加新的功能,而这些在当初的合同上又没有提及到,但是老大为了搞好客户关系,也都答应了,这就直接导致软件的开发成本不断增加,真没有办法,别人做着维护,我就研究一下技术,抽空重写了本公司的网站,感觉还行,用ASP+ACCESS做,毕竟现在支持ASP.NET的空间不多,就凑合用吧。在这期间研究了报表技术,主要是对codeproject上的一个开源的报表项目进行研究,并对该项目进行了简单的封装,以后可以用到我们的开发项目中,也不用什么水晶报表和什么ACTIVE REPORT,那个毕竟是第三方的程序,又不开源,用起来 有经常出问题,觉得不是太好,而且这个开源项目是基于RDL(报表定义语言)的,可以为我们所用,后来经JAVA高手的提示说,在JAVA编程界数据库访问都用NHibernate,而现在在。NET的开源社区的NHibernate也到了1.0版本了,于是又对NHB这了比较深入的研究,封装了NHB的底层操作,可以做到与业务无关,但调用也比较方便,又再上面开通了支持存储过程和SQL语句的接口,虽然NHB不提倡用存储过程,但是在现在的业务处理中还是必须的,经过我的封装感觉上比听棠的SPL好用多了,又顺便写了个基于NHibernate的代码生成器,可以生成实体类和对应的NHibernate配置文件,还有对应的有关CURD操作等,感觉上,以后如果用这种方式做系统开发,基本的CURD和单表检索基本上都不用写了,直接用代码生成,而这类操作占数据库操作的绝大部分,其他的,可以通过写存储过程的SQL语句来完成,那样的话,做一个系统最重要的就是需求分析,数据库设计,和界面设计了,然后再做少量的业务代码,免写数据层,免写80%的业务代码,感觉很爽,看来我的毕业设计就靠它拉。

现在又有新的项目了,帮柳州五菱做采购系统的二期,因为在前年做的系统,已经不能完全满足需求了,比如向供应商询价和客户采购申请要由原来的C/S转向B/S结构,在公司内部采用C/S 通过Remoting技术,但是公司的服务器是不能进行外网访问的,但是要让供应商进行网上报价,必须放到外网,又给我们在架构方面提出了较高的要求,最终提出了B/S+C/S的混合模式,即在外网用B/S模式,实现公司询价和供应商报价,在公司内部用C/S模式,外网和内网是数据同步用web service 技术,局域网访问要Remoting技术,三层架构,共用业务层和数据层,只是在界面层不同而已,方便以后扩展,分层架构的优势就体现出来了,而数据层和业务层,就用我刚研究的东东,设计好数据库后,直接生成实体类和配置文件,还有大部分的业务操作,就是做界面了。

但是在数据库设计的时候,我的设计思路与老大发生分歧,老大坚持他的思路,我的就只能放弃了,老大的设计有他的理由,只能满足业务的表层需求,支持业务数据的随便录入,而我的设计思路支持流程自定义,,而且满足第三范式,但是按老大的意思是,这样做不够灵活,按一般的思路如果基础库里没有新物料,应当添加新物料,但是老大的思路却是基础表用来做参照,不和任何业务表关联。而且还不要库存表。物料的基本属性存在很多的业务表中,但是一般的思路是业务表中只保存关联的基础表的ID,所以感觉起来老大的数据库设计会引发很多的弊端,毕竟数据库设计理论还是有很大的指导意义的,所以我的思路和老大的思路不断碰撞,导致数据库的结构也在不断的变化,但是老大他作为项目经理,有绝对的权威,他的思路已经成为定势,我没有办法改变他,所以只好勉强接受,就顺着他的思路做下去,但是做得越多发现很多地方都不太好做,很多的业务表查询都不能以ID关联,这样做下去越来越没有信心了。一个更新操作要更新多个表,否则数据会不一致,这样下去反而增加了很多的工作量。就在此时,学校里的毕业设计开始了,而我在技术上在公司也应该处于比较高的地位,主要还是公司缺乏牛人,这样下去在技术上也得不到多大的提高,而且还得天天做那个糟糕的数据库结构带来的业务编码,算了还是回学校做毕业设计吧,相信我的能力能在我的毕业设计中得到体现。

在我做完同步模块,于2006415,提交了我的辞职申请,得到老大批准,结束了我一年多的工作,好好做毕业设计,做我的办公自动化系统。争取拿个优秀,相信我,一定行!

 

 

 

posted @ 2006-03-21 17:48  疾行者  阅读(390)  评论(0编辑  收藏  举报