给公司炒了之后,很是迷惑
一个月前,过三关斩五将,进了广州一家过了CMM3的公司实习,进入为期两个星期的实习期,课题是通用权限管理,开发语言是java,框架不限,数据库Sybase。需求写得比较模糊,不到两页A4纸。
很快就把后台的代码写完了,由于比较推崇MVC和松耦合,当时写得比较多层,从页面到数据库访问大概流程是: Jsp->Servlet->Service->DAO->DAOImpl ,数据是用Bean封装,集合数据向上返回一个Iterator。Bean的对象和DAOImpl的对象分别由两个工厂类产生。
页面做的比较简单,数据有效性验证都在Servlet里完成,没有在Jsp页写Javascript。
数据库的设计需求已明确规定,在此不表。
和我一同去实习的两位实习生,他们的作品我也看过了。其中一位的做法是Jsp和JavaBean两层结构,JavaBean封装数据和进行数据库操作,页面是仿照该公司的一个正使用着的系统。另一位除了一个数据库连接类外全部都用Jsp页面实现,sql语句写在Jsp页面里,再对查询出来的ResultSet进行操作,页面是仿照Mysql的管理界面。
两个星期后,技术总监检查我的作品后很不满意,再过二天收就到辞退通知。他们两位留下了。当天,我找到了我的主管,希望他能给我一些建议。他建议我在技术上加强页面的设计能力(Html和Javascript),加强框架的实际应用能力。我问他对软件工程的看法,他说软件工程一直是我们努力的目标。
听了他的建议,确实说中了我的软肋,html我只能写简单的tr td等标签,平常都是用DreamWeaver我写的,javascript,我只会写alert confirm等函数,平常都是上网参考人家的代码改改就用。至于框架,也是停留在只了解思想,不能在实战使用的阶段。
辞退后两周里,闭关认真做了一个网上书城(具体可以看www.pengzhoushuo.com),各用了一、二、三层的架构,分别用了之前我们三个人当时的做法,两层架构确实比三层要快,可一层就有很多问题了,例如往页面返回可滚动的ResultSet后,不能关闭数据库连接,不然会导致ResultSet出错。
边做这个项目,边对自己进行检查,收获是html和javascript的比半个月前熟了些。可我却越来越迷惑了,我们学的是软件工程专业,我们的老师不停地对我们说要注重软件的可维护和可扩展性。我们合作做项目的时候都努力的按层次分工而不是按模块分工。可我在实习的时候同事告诉我,只要你愿意,你把项目全部写成
jsp文件都没有问题的,只要界面和功能做好了就行。表单提交时只需要在前端加javascript加上验证,就不需多此一举地在服务器端做验证了(这样人家把网页下到本地删掉javascrip再提交岂不是可以插入一些特殊的数据了么?)。项目分模块是有关联的模块一个人做,互相之间是独立的。
这就是中国软件的现状么?我一直努力地调整自己的看法,可我却起来越迷惑了。是我们学到的书本知识太超前了么?我关注的OO,设计模式、软件工程、架构都是骗人的么?为什么我们学到的知识要打折扣的使用。为什么我们学了多层结构后,还得在jsp页面上写sql语句?还是因为我把自己放错了位置,程序员就得像民工一样只能见砖瓦,不能看高楼?
原谅我吧,我还只是一个很迷惑的大四学生。