某天早晨,我和一个程序员随便谈谈,他说,我们的系统变成假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上面的签名:我为成功而生,不为失败而活。 我为胜利而来,不向失败低头。我要欢呼庆祝,不要吸泣哀诉。
请拿出你的勇气,面对你不熟悉的事物,让它成为你的朋友。
分享到:
相关推荐
在背钻初始能力研究中,对背钻龙位能力进行了研究,发现背钻龙位能力对信号传输的影响非常大。同时,对背钻深度公差能力也进行了研究,发现背钻深度公差对信号传输的影响也非常大。 为了提高背钻技术的应用效果,...
- 在这个故事中,四海龙王的儿子争夺龙位,引发洪水灾害,引起玉皇大帝的注意。玉帝决定通过竞赛决定新任龙王,而小白龙因为一件神奇的击水玉带而脱颖而出。小白龙在竞赛中看到人间的苦难,决定放弃王位,拯救一位...
"暗箭煞"指的是门正对长廊或其他尖锐物体,可能导致家庭不安,化解方法包括在门上方设龙位,门外放置吉祥物等。 最后,大门的风水不仅关乎方向,还涉及大门的风格、材质以及与整个住宅的协调性。大门应符合住宅的...
<项目介绍> - 四连杆机构的仿真 --m3_1.m: 位置问题求解 --m2_1.m: 速度问题求解 --FourLinkSim.slx: Simlink基于加速度方程的仿真 --FourLinkSim2.slx: Simscape简化模型仿真 --FourLinkSim3.slx: Simscape CAD模型仿真 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
ridge_regression 用于岭回归的python代码(已实现以预测下个月的CO2浓度) 资料可用性 文件 Ridge.py :标准函数和Ridge回归函数window_make.py :使用滑动窗口方法制作大小为p(窗口大小)的时间序列列表。 Final_version.ipynb :使用Co2数据对代码进行实验
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
功能说明: 系统主要分为系统管理员和用户两个部分,系统管理员主要功能包括首页,个人中心,用户管理,节日风俗管理,饮食风俗管理,服饰风俗管理,礼仪风俗管理,信仰风俗管理,建筑风俗管理,我的收藏管理,留言板管理,论坛管理,系统管理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
中国城市温度历史数据(2000-2020)-最新全集.zip
中国土地利用现状遥感监测数据(1km)-最新.zip
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
java资源Google API for Java提取方式是百度网盘分享地址
中国分地区地级市泰尔指数数据集(2000-2019).zip
环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
功能说明: 系统功能实现了首页,房源信息,交流论坛,公告资讯,个人中心,后台管理等功能。系统的后台实现了个人中心,用户管理,房东管理,房源类型管理,房源信息管理,在线咨询管理,预约信息管理,订单信息管理,签订信息管理,申请退租管理,交流论坛,系统管理等功能的添加、删除和修改。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上 服务器:tomcat7及以上
yolo算法-电线杆数据集-1493张图像带标签-.zip;yolo算法-电线杆数据集-1493张图像带标签-.zip;yolo算法-电线杆数据集-1493张图像带标签-.zip
安装包eclipse-jee-neon-3-win32-x86_64提取方式是百度网盘分享地址
PartSegCore_compiled_backend-0.12.0a0-cp36-cp36m-win_amd64.whl.rar
python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。