`
1000copy
  • 浏览: 72519 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

如今谁坐龙位?

阅读更多



某天早晨,我和一个程序员随便谈谈,他说,我们的系统变成假3层了。语气中看来非常寥落。我脑中便一下子跳出这个“龙位”的故事:
 
“民国14年,费孝通到湖南永顺考察,当地人问他:‘如今谁坐龙位?’,14年光阴一瞬间,在很多人看来如此重要的政权更迭竟然传播到如此不堪的状态。”
 
回头来说3层。7年前,3-ties开发刚刚兴起,但是是否使用3-ties理念的开发是有分歧的。有些人认为我们的产品UI和数据库开发更重,中间件可有可无,最多不过可以解决密码问题而已。有些人认为3-ties就是业务逻辑集中,这个想法不错,只要坚持,一定可以有一个合理的中间件。两者都有各自的说法,但是随着开发的逐步深入,产品的累次更迭,结果却毫无疑问的、几乎是一边倒的走向了假3层——中间件仅仅有几个访问数据库的方法——和几十M大小的客户端,数据库代码相比,中间件不过几百K。规模完全不可同日而语。Delphi是这样,C# 虽然有不少逻辑,但是和数据库,客户端还不比不了的。把访问数据,分页除掉,真正的业务代码少的可怜。大量的业务,验证,页面组织都在客户端和数据库服务器。
 
相信3-ties有它的用武之地。不过我们的系统是UI密集型,而不是业务密集型,不多的业务也大量的集中于数据库。因此中间件可有可无这一观点,在今天看来也就毫无悬念。
 
理论跟不上现实,这是我看到的一种情况。而还有一种让人扼腕痛惜的是完全不去了解现在业界的状况,或者知之不多。最近某天,一个程序员问我,客户提到了什么Ruby On Rails来访问我们的系统,Ruby On Rails是个什么东西?
 
Ruby On Rails(ROR)从2003年开始,红了N年,并且是N年来最红的一套框架,没有之一。可以快速,优雅的实现Web应用,并且有丰富的ajax支持,它把MVC模式做了非常创造性的应用,对整个行业都有很大的思想上的触动。因为 ROR 这个框架,脚本语言不再被视为玩具。第一次登上了和主流编译型语言同等高度上。网上可是闹翻天了的,随便那个技术型网站都会长篇累牍的讲到这个东西,并且持续时间之久,论坛的火爆程度,都是以往的框架所不及的。可是,居然有人对 ROR 听都没有听过。我不知道他们上网都看些什么?作为一个技术人员,难道可以只是完成自己手里的工作就万事大吉了吗?微软最近出品的Asp.net MVC2,就是彻头彻尾的对ROR的抄袭——我理解这是对ROR的礼赞。
 
可能有些人觉得,这个我们用不上,不需要费心去了解。那么TDD,Refactor,尤其是Refactor 总是要用的吧。我觉得TDD,Refactor红了这么多年,身边的人也用了这么多年,完全说明是非常实用的技术,TDD让代码更好的分而治之。Refactor帮助代码职责明确,符合OO和最佳实践的范式,让接受代码的人不会再说“这是什么垃圾代码”。自己的工作完全和业界脱节,甚至和其他的项目组脱节,这是怎样的“碎片”生活?好,我在说一次它们的含义:TDD(Test driven development,测试驱动开发),Refactor(重构)。也顺便了解下它们的创始人,Kent beck,Martin Fowler。
 
过了这麽多年,还是局限于“业务更重要,技术是手段”,念叨什么,“满足客户是最重要的”已经过时了。你认为你是需求人员吗 ,你认为你是客服人员吗?不,你是技术人员,你的职位名称告诉你:技术从来都不是附属于那个的,它有独立的生命周期,技术是你满足客户的首要的和持续的方法。念叨什么“太忙了,没有时间啊”也是过时了的——难道不就是因为忙所以才需要改进技术,改进方法吗?这样的非此即彼的思维,是令人厌倦的。
 
 
比起前两种状况更危险的不是不知道,而是不知道自己不知道。某公司做了5年的TDD,Refactor尝试,你总是认为那是某公司的事情,某个项目组做了一年,看来前一个你不能用了,现在我帮你想一个借口——那是他们的事,和我们没有关系。让你们尝试任何新东西都是这样推,那样躲的。你是不想做吗?是不能做吗?你到底在怕什么?所以我说,你不知道自己不知道。你缺乏改变的勇气,害怕处于他人的观察之下可耻的失败,并且不知道自己缺乏面对失败的勇气。这就是事实。
 
芝兰之室,久而不知其香;入鲍鱼之市,久而不知其臭。现在我告诉你,你处于鲍鱼之市,是臭的。你说我习惯了,不觉得臭,也不愿意暂时换口好空气,回头再来——那就是你的错了。我们用的InstallShield,VSS都是网上有名的垃圾软件,仅仅是因为历史久,资格老而活下来。现在我说他们就是垃圾,而你说习惯了,无所谓。这是什么逻辑?
 
引用一同事在feiq上面的签名:我为成功而生,不为失败而活。 我为胜利而来,不向失败低头。我要欢呼庆祝,不要吸泣哀诉。
 
请拿出你的勇气,面对你不熟悉的事物,让它成为你的朋友。
 

1
1
分享到:
评论
1 楼 congdepeng 2010-06-19  
看出点什么 但是又没领会到中心思想

相关推荐

    【疾病分类】 GUI SVM大脑疾病(脑瘤)和神经疾病(动脉瘤)分类【含Matlab源码 4093期】.zip

    【疾病分类】 GUI SVM大脑疾病(脑瘤)和神经疾病(动脉瘤)分类【含Matlab源码 4093期】

    【图像边缘检测】小波变换图像边缘检测【含Matlab源码 4142期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    HC200-10标定版描述文件及标定版ps文件

    HC200-10标定版描述文件及标定版ps文件

    【图像融合】双树复小波变换像素级图像融合【含Matlab源码 2024期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    顾客模具验收鉴定报告.doc

    顾客模具验收鉴定报告.doc

    2020年度SaaS企业 TOP100.docx

    2020年度SaaS企业 TOP100.docx

    9培训申请单.xls

    9培训申请单.xls

    23数据技术 森林火灾预测系统 高品琦 商业计划书.docx

    23数据技术 森林火灾预测系统 高品琦 商业计划书.docx

    【图像重建】离散余弦变换DCT图像重建(MSE、PSNR、压缩比)【含Matlab源码 2403期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    风险与机会评价与应对策划表.xls

    风险与机会评价与应对策划表.xls

    31客户满意度汇总表.xls

    31客户满意度汇总表.xls

    【图像融合】 DSIFT多聚焦图像融合【含Matlab源码 2224期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像压缩】奇异值分解SVD灰色图像压缩(可设置压缩比)【含Matlab源码 4358期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像分割】全局和局部多特征融合的红外图像分割主动轮廓模型【含Matlab源码 4024期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【车牌识别】 GUI BP神经网络车牌识别(带面板)【含Matlab源码 858期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    基于 YOLOv5 的对象检测算法的系统

    与大学团队合作,设计一个包含 Raspberry Pi、摄像头模块和基于 YOLOv5 的对象检测算法的系统。• 开发了能够识别和分类各种交通标志的实时交通标志检测和分类系统

    python读取excel到数据库中,简单的数据库管理脚本

    python读取excel数据 python读取excel到数据库中,简单的数据库管理脚本

    成本中心领(退)料单.XLS

    成本中心领(退)料单.XLS

    【图像融合】高分辨率全色图PCA图像融合(含评价指标)【含Matlab源码 2407期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像去噪】非线性扩散PM算法图像去噪【含Matlab源码 2130期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

Global site tag (gtag.js) - Google Analytics