盘点我的工作
呆呆地坐在这里,总想写点东西,也不知道该写些什么?同事们都在认真做着自己的工作,没有人知道坐在他们旁边的我明天将不会坐在这里,因为我要离开这里了,不知道怎么回事,这几天上班有一种恐惧的感觉,不知道是为了什么。有种莫名的恐惧,难道是因为我们现在所做的这个项目,难以理请思路的需求分析,变幻莫测的数据库结构,最另人头痛的界面设计,堆到一起让我无穷下手,工作效率极其低下,我感到无所适从,我郁闷之急,盘点一下我工作一年多来的工作的成功与失败:
最开始带我入门的应当属我们开的SQL SERVER2000课了,虽然以前也曾经学过VB VF 但对于我来说都没有太深的印象,教我们SQL SERVER2000的老师让我们去他自己的教学网上实践SQL 语句,顺便讲一些关于ASP的知识,于是我开始慢慢接触网络编程语言,不过仅限于皮毛,与实战还有很大的距离,后来这个老师从外面接了小的网站项目让我们专业的同学分组来做,作好之后采用那组的作品,就可以得到项目经费就2000元,不过诱惑力对我来说还是相当大的,可惜是用PHP+MYSQL 要搞什么跨平台,看来还用重新学起,于是从图书馆找了几本关PHP+MYSQL的书天天研究,分析代码,最终搞懂了怎么用PHP搞论坛、新闻系统,留言板等,但是界面始终不如人意,界面出不来,后台代码无从谈起,所以后来就不了了之了,但是却给了我一个深入了解网络编程语言的机会。
转眼间,寒假快到了,突然看到了一家广告公司招聘兼职网络程序员,就我这半瓶醋,抱着博一下的决心,就去那家公司面试了,老板要求要用ASP语言做,我的ASP早就丢掉了,不过机会是不等人的还是试一下吧,最后,壮了胆把这个项目接下了,负责做公司门户网站的美食版块的新闻系统,我负责所有的后台编码,前台界面有公司内部的人员设计,这正是我所希望的,规避我的短处,发挥我的长处,总费用1500,先付500定金,拿到钱的时候我就有点后怕了,万一不能如期完成是不是要吃官事呀,一个月能做完吗,超期是不是会罚款呀,我只能硬着头皮上了,这对于我来说也是个非常难得的机会,如果作好了,以后的机会会更多,我的能力也会得到明显的提升,不过后来的日子就不好过了,已经到了假期,舍友都回家了,原本热闹非凡的宿舍变得冷冷清清,我感到极其的郁闷,好在下面的食堂还有一个窗口没有关门,可以保证吃饭,但是行走在冷清的校园里觉得很不舒服。更重要的是遇到很多技术上的问题更是无从下手,比较最简单的ASP连接SQL SERVER数据库就让我困扰了2天,还有还很多的问题,我一个闷在宿舍,对着电脑,图书馆的大部头书根本解决不了问题,最好的就是BAIDU和GOOGLE了,基本上有90%的问题在上面得到了解决,但是在这个过程中如果问题得不到解决,我晚上都睡不好觉,那时候晚上睡觉中还梦见自己在整网页,起来继续整网页,更痛苦的是脚本错误,能让我弄好久都不知道怎么办,但最后靠着BAIDU和GOOGLE都解决了,这重日子持续了半了月,快过年了,我估计孤独也熬不过了,不行得回家,于是终于在年三十回到家了,正好赶上贴对联,但是晚上还是睡不好,老是梦见我在写程序,调程序,为了不耽误工期,在
时间大概过了半个月,老板找我去公司谈进一步合作的事情,原来在我做网站的同时,工学院另外计算机系的一个学生也为公司做网站,只是我负责美食版快,他负责房产版快,结果老板对那个同学的作品不太满意,因为工作量都差不多,他做了40天,我做了25天,他做完的文件竟然会有
时间过的很快,转眼间了过了一个学期,到 了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
当其他同学还在家里沉浸在新春的快乐中,大年初六我又和去年一样踏上南下的列车去公司上班了,新春刚过,公司没有太多的事情,还的对去年的系统做维护,现在才理解到了林锐的话:“客户的需求是不断变化的”,是真有道理,项目还没有完全验收,需求就已经变了,客户又不断要求增加新的功能,而这些在当初的合同上又没有提及到,但是老大为了搞好客户关系,也都答应了,这就直接导致软件的开发成本不断增加,真没有办法,别人做着维护,我就研究一下技术,抽空重写了本公司的网站,感觉还行,用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关联,这样做下去越来越没有信心了。一个更新操作要更新多个表,否则数据会不一致,这样下去反而增加了很多的工作量。就在此时,学校里的毕业设计开始了,而我在技术上在公司也应该处于比较高的地位,主要还是公司缺乏牛人,这样下去在技术上也得不到多大的提高,而且还得天天做那个糟糕的数据库结构带来的业务编码,算了还是回学校做毕业设计吧,相信我的能力能在我的毕业设计中得到体现。
在我做完同步模块,于