或许是累了,思维开始发散

    在高歌猛进了近一个月之后,这几天似乎找不到感觉了。之前发现的几个技术难点也一直没有解决的思路。而且我发现自己的想法总是停留在表面和高层,如果深入进技术细节,就力不从心。我愿意,也可以跟踪追赶上业界的技术前沿,也能够认识到哪些技术是精彩的,是需要重视和认真研究的,但如果跟我较真它们的细节,我往往就说不清楚,每每这种时候,那种感觉都很不爽。前两天写文档的时候,渐渐的就有了这种感觉,所以就写不下去了,堆了一些文字和图表,质量差的都不好意思check in。这个时候陈老师让我缓一下,尝试他建议的一条新路。

    陈老师是个非常善解人意的老师,也可能是太了解我了,他都能看出我的工作状态曲线。什么时候该猛攻技术难题,什么时候该停一停总结一下,写些东西,什么时候又该写写代码……安排的总是那么得当。从刚进实验室什么都不懂的时候开始,到现在三年多,从本科到现在博士,一直能跟着这么好的老师学习工作,觉得自己跟其他同学比起来,真是幸运——这是常常会从心底油然而生的感觉,以致于在"十五"后期青黄不接,我奉命去支援其他项目组的时候,更加感觉到和陈老师一起工作是多么幸福的事情。

    我现在关注的就是自己的课题和OO设计模式/软件应用架构模式两个方面,其中后者又以MS .net平台为主要关注点。

    课题不用多说,我喜欢自己现在所从事的研究工作,这是从12年前通过Pascal接触计算机开始,到上完博士课以后终于能够得以实现的梦想——全日制、全身心的按照自己的想法,以coding为手段实现有实用价值的系统,无上课之乱耳,无考试之劳形。这也是我对这次学校劳务输出式的 "第二次公派留学高潮"并不感兴趣的原因之一,出去能有这么好的课题做吗?放弃好不容易争取到的自己喜欢的研究课题,跑到外面去给那些外国包工头们干活,实在是难以接受。关于这次出国留学的话题,这里也没必要多说,如果要一言以蔽之,那么我就送两个字:浮躁。

    虽然博士生的主要任务是进行原创性的研究工作,但其实我更希望做一些有实际意义的事情。比起把一个本来很简单的问题用复杂的公式和晦涩的语言堆砌出来然后发表在xx学报上,我更愿意去做一些提高效率、减少浪费、消除瓶颈的实际工作。然而无奈,我们生活在一个迂腐落后的教育框架之下,除了做一些对人类进步有意义的事情之外,还要做一些额外的事情——否则就难以毕业拿到学位。没办法,有很多事情就是这么诡异。

    关于OO设计模式/应用软件架构模式,我已经关注一段时间了,这个应该要从我的《倒退的历史》系列(未完成,也不可能完成了)发布在cnblogs首页引起巨大反应说起。那时正是我暂时离开陈老师去支援其它项目组的时候。那也是一个MIS项目,也是一个Web应用,也是一个采用ASP.net构建的系统。这里用了三个"也"是因为早在2002年上本科的时候,我和另外几个哥们就一起申请本科生创新基金,用ASP.net做过WebMIS,虽然大家经验非常少,但是现在回头想想,那次开发过程中其实包含了很多我们自己都没有意识到的先进思想,而且分工明确,大家合作非常愉快,小组气氛很好,效率也很高。遗憾的就是对OO完全没有深入的认识,就是拿着OO语言写着结构化的代码,以最原始的方式进行着MIS的开发。其实这也不能怪我们,那时那些讲编程的书都是用ADO.net直接写sql,没有哪本详细介绍分层架构的,当时也想不到去剖析petshop(估计以当时的水平也看不懂)。然而当我已经读了硕士之后,再次加入这样一个同样性质的项目,我看到的不但不是更加先进的软件过程方法论、更加清晰的分工和对OO的优雅实践,反而看到了比我们本科时更加糟糕的场景——需求不断变化带来的代码地震反反复复的出现。于是我愤而写下了《倒退的历史——切"五花肉"式的分工》,引来无数讨论,大部分都是支持我的,但也有一些不同的声音,这些不同的意见让我思路开阔了许多,让我体会到了社区的力量。于是趁热打铁推出了第二篇《为什么不用存储过程》,这次也是评论如潮,但不少人提到了ORM,并表达了对我还在讨论存储过程这种老掉牙问题的bs。这时我才开始注意到ORM,并开始在园子里注意阅读idiorwayfarer等牛人们的文章,也渐渐了解了一些基础概念。同时,我也发现了吕震宇《c#设计模式》系列,看得让人感觉茅塞顿开,一下子让我踏入了设计模式这片始终心存敬畏的领域。后来,我看了《Design Patterns Explained》,这是我看的第一本关于DP的书。再后来又开始看李建忠的c#面向对象设计模式纵横谈Webcast,有了更多的了解,这才慢慢入门。然而遗憾的是,这些知识始终没有在实践中应用的机会。

    后来去广州的时候(那又是一个"倒退"的MIS项目),我又抽空看了MS Practice&PatternsEnterprise Library DAAB代码,才发觉其实我们今天很多大系统写成这种恶心的样子微软应该负主要责任,在微软的开发资料中,无论是MSDN还是技术图书,对分离业务逻辑层与数据访问层一直没有明确的技术指导,只有DAAB这种探索性的半官方尝试稍微体现了一些这种思想。至于ORM,似乎到目前位置微软就没有往这个方向考虑(也许未来的ADO.net Entity Framework是个类似的东西,但至少现在还没有出现)。

    去年,我又被抽调去支援《倒退的历史》那个项目,情况依旧,我又抽空看了孙亚民的《构建面向对象的应用软件系统框架》,并尝试把这种分层和OO的思想向那里的老师们推荐,然而正如我所预料的,阻力很大。一方面因为他们已经脱离技术前沿太久了,对新技术已经没有太大的兴趣,另一方面是我自己无论在理论深度还是实践经验方面都还差的远。不过前两天听陈老师说那个项目已经开始用NHibernate了,心中不由得一阵激动,以为是终于认同了我的观点,但仔细一问原来是那里有位教授极力推荐的缘故,不禁又黯然神伤了一会……

    我关注这个领域一是兴趣使然,二是我觉得MIS是我们实验室的传统领域,我们做过不少项目,也创造过辉煌,但是那些时候的开发方法和技术已经严重落后了,而且我们做了那么多类似的项目,完全能够将其中一些共有的部分总结出来,形成自己的框架,作为实验室知识的积累,也便于以后重用。这才是我们做软件的人的有形的资产,一笔宝贵的财富。随着项目越做越多,软件开发技术不断发展,这个框架也需要不断更新,不断重构。

    这样,我们的实验室才能不断与时俱进,更加高效的完成更多的科研任务。

    新的梦想能够实现吗?

posted on 2007-04-01 13:46  合金枪头  阅读(275)  评论(11编辑  收藏  举报