从选择 Java 框架谈谈技术人员的”舒适区”

[前言: 技术人员的舒适区是本文的要说的一点内容, 至于 Hibernate 是否优秀, 那是”专家”才有资格讨论的问题]
这几天, 一位 DBA 朋友很是苦恼. 起因是他所在的开发团队的架构师与程序员准备在接下来的项目中继续采用 Hibernate 作为 Java 框架 . 众所周知(有人说,他没有听到过类似的说法, 所以不能是”众”), 从 DBA 的角度来看, Hibernate 对 DBA 来说如同噩梦, 非常的不友好, 所以 DBA 极力推荐 iBatis . DBA 看来, 在该应用场合下, 应用 iBatis 更容易控制数据库的性能, 而程序员们也不用因为性能低下的 SQL 而一遍遍返工修改程序. 可是开发人员们罗列了各种 Hibernate 的优点证明使用 Hibernate 将会是正确的, 带来的开销是值得的.
DBA 也知道, 在过去几年的时间里, 这个开发团队一直在使用 Hibernate , 开发人员熟悉 Hibernae 的方方面面, 他们自认为针对 Hibernate 有足够的控制能力, 不愿意离开现在的技术环境, 这才是他们反对更换到其他环境下的主要原因.
当然, 今天我不是要比较这两个框架的优缺点. 而是要说说技术人员都会面临的一个很有趣的问题:舒适区.
最近几年, 舒适区这个词我们经常从一些”培训大师”的口中听到,引起了无数渴望成功者的共鸣.其实说的倒是自古以来人皆有之的一个共性.

引用I : 现代西方认知心理学认为”舒适区” (Comfort Zone)是指人们一定限度的感知和联想的范围,在这一范围里,个人或集体能有效地运作,不会出现不自在和恐惧,所以人们会本能地寻找自己的”心理舒适区”。

从”舒适区”的角度上看, 架构师/程序员不愿意更换到其他框架下无疑也有一部分心里因素的问题. Hibernate 已经使用了几年, 对他们来说已经相当熟悉了, 迁移到其他环境下不确定性因素很多, 这样”不确定性因素”给他们带来了不安全感. 所以, 他们自然会熟记 Hibernate 的各种优点, 并期望一直使用下去.
不过换个角度上看, 这种保守性无疑在需要快速面对变化的软件业有一定的风险.

引用 II: 每当人们处在舒适区中,就会有安全感、自信心,觉得自己能够胜任所担当的一切。但如果长时间 处于这样的状态,就像留恋在温水盆里游泳的青蛙一样,等有一天自己想跳出来时却已经太迟了!

就拿这个 Hibernate 来说, 最近就有 FireStar 软件公司在指控 JBoss 公司的 Hibernate 3.0 软件侵犯了其连接关系数据库与面向对象的软件的技术专利, 如果 FireStar 胜诉并要求停止开发该软件, 依赖于 Hibernate 的程序员们该怎么办呢? 这个事情就好比青蛙泡在缓慢加热至沸腾的水中一样,代价恐怕是惨痛的.
作为技术人员, 积极的心态面对变化是必需的. 如果死死的守住一个小技术环境, 回报率自然会下降. 从软件业的发展来看, 也是这样.
oops, DBA 也不要把自己捆在一种数据库上……
–End.
–Updated:
针对 一本正经地道听途说 的回复:

我说的“众所周知”的”众”指DBA 而言, 当然,如果用你没有听过就不算”众”倒也说得过去.
你应该不是DBA吧 ? 从一个开发人员看问题,自然是另外一回事。我们曾经面临这样一个案例: 数据库执行计划走错, 需要修改 SQL, Hibernate 上作这样的修改,并不是很快捷(因为不是直接的数据库SQL, 当然现在的 Hibernate 3.0 支持naive SQL 了)。这个案例,如果放到 iBatis 上,可能只是几分钟的事情. 或许,你已经把 Hibernate 玩得灵活无比, 做起变更灵活无比, 那只能说佩服了。真希望每个项目中的人员都能够有这样的天才.
另外,也不一定是 Hibernate “专家”才可以发表评论. 每个人看问题的角度不同. DBA反对 这个东西,或许有他的理由(正如那篇Blog讨论的”舒适区”) . 不要忘了,一个领域是所谓的专家,可能另一个领域就是新手.
或许你认为别人没引用英文信息就是”道听途说”, 那么 “主观推测’ 算什么呢?


  • 大笨熊

    个人认为DBA门也没必要那么害怕hibernate,在程序中需要优化性能的地方可以在Hibernate中使用native sql来避免。
    至于版权,linux不是也面临着同样的问题吗,没看见有很多公司就放弃不用了。

  • http://www.uuki.com/blog wangzy

    我们团队倒是一直用ibatis,原因也是为了调优(当初hibernate2.0还不支持native sql),不过我同意楼上观点,hibernate3.0是支持native sql的,所以DBA本身也要与时俱进阿。hibernate对于架构上的帮助比ibatis强多了。

  • restart

    片面

  • http://jan.yculblog.com Jan

    FireStar这么没天理的起诉必定会失败的

  • http://www.oracledba.com.cn David.Guo

    这种问题在我们公司也存在
    大家不乐意换开发的方法
    哪怕只是工具
    我们现在作j2ee,我建议用jdeveloper
    可惜,所有的人还是用jbuilder
    虽然还是和oracle连接,又如何列
    因为大家在作jsp的时候用jdeveloper习惯了.

  • http://sticktowen.spaces.msn.com/ John还是老的辣

    从前有个国家叫杞,杞国有个人老是想着。。。。。。嘿嘿,开个玩笑

  • hhh

    片面,主观!

  • http://my5151.meibu.com my5151.meibu.com

    这个是技术人员的习惯,存在就是合理的. ( 开源的自定义web表单工具, 在: http://fc8264.meibu.com )

  • http://1000copy.itpub.net 1000copy

    各打了一个巴掌,不知道观点是什么?

  • mastercn

    舒适区的存在也不是没有好处,可以有效的降低技术风险,避免项目的失败。
    其实这个问题很简单,都虚心听一下对方的意见就好了,
    DBA看重的是数据库存取效率,而开发人员看中的是开发效率,
    开发效率包含了构建效率,维护效率和测试效率
    这些都是一个项目成败的关键
    数据库的效率并非在任何时候都是重要的,
    任何一种工具在效率问题上都不是完美的,我们可以借助另外的工具或方法来改进效率。
    开发人员也应虚心听取DBA的建议,在性能优化上采取一定的方案,满足项目本身对性能&效率的需求。
    汇编语言比C&C++效率要高,但通常我们不用它。

  • http://www.dbanotes.net/ Fenng

    最近看到一位同事的帖子,里面提到一个“路径依赖”,也和这个蛮象的