Oracle 程序员吐槽:永远不会再为 Oracle 工作了!

九路 等级 621 0 0

一位Oracle程序员在Hacker News上吐槽自己的工作,引起了热议,内容如下:

Oracle数据库12.2。它有近2500万行C代码。

这实在太恐怖了,简直难以想象!你做不到在不破坏成千上万个现有测试的情况下更改产品中的单单一行代码。好几代程序员在很紧的项目期限内编写了这些代码,代码中充斥着各种各样的垃圾内容。

非常复杂的逻辑、内存管理和上下文切换等等,一切都用数千个标志(flag)连接起来。整个代码充斥着神秘的宏命令,要是不掏出笔记本,手动展开宏命令的相关部分,你就无法搞清楚这些宏命令。可能要花一两天才能真正搞明白某个宏命令的作用

有时你需要搞明白20个不同标志的值和效果,以预测代码在不同的情况下会如何运行。有时多达数百个标志!我一点也不夸张。

这个产品仍然存活并仍然可以用的唯一原因是数百万次的测试!

下面是Oracle数据库开发人员平常的一天:

开始处理一个新的bug。

花两周的时间试图搞清楚20个不同的标志,这些标志以神秘的方式相互交互、导致这个困境。

再添加一个标志以处理新的特殊场景。再添加几行代码来检查该标志,避开有问题的情况,并避免该bug。

将更改提交到含有大约100台到200台服务器的测试服务器集群,这些服务器将编译代码,构建新的Oracle数据库,并以分布式方式运行数百万个测试。

下班回家。第二天来上班,处理别的bug。测试可能需要20小时到30小时才能完成。

下班回家。第二天来上班,检查你的服务器集群测试结果。顺利的话,会有大约100个失败的测试。倒霉的话,会有大约1000个失败的测试。随机选择一些测试,并试图搞清楚你的假设出了什么问题。也许另有10来个标志要考虑,才能真正搞清楚bug的本质。

再添加几个标志,试图解决问题。再次提交变更进行测试。再等20小时到30小时。

另外重复冲洗两周,直到你确保神秘的标志组合无误。

终有一天你会成功,没有一次测试失败。

添加针对你更改的100多个测试,确保下一个不幸接触这段新代码的开发人员永远不会破坏你的修复程序。

为最后一轮测试提交工作。然后提交以供审查。审查本身可能另外需要2周到2个月。所以现在改而搞下一个bug。

2周到2个月后,一切都已完成,代码最终合并到主分支中。

以上就是在Oracle修复bug的程序员日常工作的客观描述,一点也不夸张。现在想象一下开发新功能会有多么恐怖。开发一项小小的功能就需要一年半载(有时甚至长达两年!)(比如说添加一种新的身份验证模式,比如支持AD身份验证)。

这款产品可以用这本身简直就是个奇迹!

我不再为Oracle工作了。永远不会再为Oracle工作了!

收藏
评论区

相关推荐

Oracle 程序员吐槽:永远不会再为 Oracle 工作了!
一位Oracle程序员在Hacker News上吐槽自己的工作,引起了热议,内容如下: Oracle数据库12.2。它有近2500万行C代码。 这实在太恐怖了,简直难以想象!你做不到在不破坏成千上万个现有测试的情况下更改产品中的单单一行代码。好几代程序员在很紧的项目期限内编写了这些代码,代码中充斥着各种各样的垃圾内容。 非常复杂的逻辑、内存管理和上下文
手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug
前言 Hey,大家好,我是码农星期八,似乎还没有更新过关于Mysql的相关文章,同时也是因为工作需要,一起来学学叭。 数据库种类 常见的数据库有Mysql,Oracle,SQLite,Access,MS SQL Server。 这时候可能有人一看,what?数据库这么多,我要全部都学吗???,学这么多需要多久,是不是又是几个月。。。 我的回答是,
工作中用到的oracle SQL
Oracle SQL用于记录工作中用到的oracle sql语句 表新增字段 表结构变动: 新增字段并指定字段类型sql 新增一个字段,多个字段用小括号括起来,逗号分隔alter table 表名 add 新增字段名(类型长度); demo TSALES_APPLY_COST表中新增一个字段(CAPITAL) 类型为: NU
MySQL基础(非常全)
MySQL基础一、MySQL概述1、什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库2、什么是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ? 答:他们均是一个软件,都有两个主要的功能: a. 将数据保存到文件或内存 b. 接收特定的命令,然后对文件进行相应
初学安装oracle11g遇到的问题,以及解决方案
如何完全卸载清除干净oracle数据库 一、删除注册列表 1、win+R输入regedit,打开注册表编辑器 2、选则HKEYLOCALMACHINE下面的SOFTWARE找到ORACLE点击打开,如果之前有安装多个oracle的话,只需要删除对应的注册表,如果只安装了一个,就可以直接肆无忌惮的将本oracle全部干掉了。 二、删除注册的服务 1、win+R
Java Web服务器的介绍
一、Java Web服务器的介绍Web服务器:是指能够为发出请求的浏览器提供文档的程序。服务器是一种被动程序,只有浏览器发出请求的时候才会响应。主流的Web服务器有:1.WebLogic:Bea公司开发的一个收费的大型服务器软件,后被Oracle收购,支持Java EE 所有规范。2.Tomcat:由Apache、Sun和其他一些公司及个人共同开发而成。该服
SpringBoot整合Mybatis连接Oracle数据库
学习目标:<font colorred face"宋体" size3通过本篇文章掌握如何使用SpringBoot整合Mybatis来连接Oracle数据库进行基本的数据库操作。在之前的项目中,大多使用的是Mysql数据库,但在企业中使用的是Oracle数据库,下面就来简单的介绍下如何使用SpringBoot整合Mybatis的方式操作Oracle数据库。<
如何让你的代码更优雅
前言你有没有骂过“前任”的代码?你的代码有没有被吐槽过?没有注释,命名随意,没有封装,结构混乱,一个页面几千行。。。。如何写出优雅的代码,让自己不被吐槽,让人羡慕,接下来咱就一起聊聊如何写出优雅的代码,如果大家有更好的写法和经验,欢迎在评论区留言,一起学习什么样的代码是优雅的代码咱先聊聊,什么样的代码是优雅的代码,在我看来,优雅的代码包括以下方面,首先就是代
牛皮了!遇到“ORA-12154: TNS: 无法解析指定的连接标识符”错误,到底该如何解决?
相信使用过Oracle数据库的人一定碰到过“ORA12154: TNS: 无法解析指定的连接标识符”错误,我在此做一个小小的总结。 在程序中连接Oracle数据库的方式与其他常用数据库,如:MySql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接,但是Oracle则需要通过Oracle客户端配置网络服务名的方式来连接。否则就会出现“
这可能是目前最全的!java开发手册嵩山版
在这里分享一份 [mybatis从入门到精通] 的强力教程,定能够助你一臂之力。 Mybatis基本介绍1. ORM和MyBatis1. 对象/关系数据库映射(ORM)1. 基本映射方式1. 流行的ORM框架简介目前流行的编程语言,例如Java、 C等,都是面向对象的编程语言;而目前主流的数据库产品,例如Oracle、DB2等,依然是关系数据库。编程语言和底
【分享程序员的生活】在国企里面当程序猿是一种怎样的体验!!??
在国企里面当程序猿是一种怎样的体验?前言2018年底,我通过半天的笔试及面试加入一家(某一线城市事业单位全资控股)研究机构(省级研究院),任职软件工程师;在这边工作了整整两年半,目前已经在做跳槽准备,回头看看这几年,感受颇深,只好一吐为快,以便对想进入国企的程序员帮助及借鉴。 入职考试笔试部分:国企面试与其他企
个人博客开发之数据库设计
前言分享完需求,我们就按照需求去设计数据库就可以了,这里我数据库选用Mysql 原因呢Mysql相对于其他数据库如ORACLE等轻巧,方便,开源,免费,好用,而且效率也够用 数据库设计这里数据库设计我推荐大家一款数据库设计工具,我一直在使用觉得还不错叫PDMan多平台版本,Mac Windows,Linux 系统都有 。总之功能非常强大 , 分表设计 用户表
AWS解决方案架构师认证
云计算这几年是越来越火了,随之企业上云趋势的飞速发展,不仅各大互联网巨头在布局云计算。传统的IT厂商如IBM、Oracle、VMware也在大力发展云计算。其中当属AWS的云计算体系发展最早,实力最强。AWS的很多产品也成为了业内标准。当然,其认证体系也是十分的科学。包含:运维、架构、开发、AI、大数据、安全这几个领域。目前,AWS在全球云计算市场仍占有最高
数据存储-大数据的三种存储方式
互联网时代各种存储框架层出不穷,眼花缭乱,比如传统的关系型数据库:Oracle、MySQL;新兴的NoSQL:HBase、Cassandra、Redis;全文检索框架:ES、Solr等。如何为自己的业务选取合适的存储方案,相信大家都思考过这个问题,本文简单聊聊我对Mysql、HBase、ES的理解,希望能和大家一起探讨进步,有不对的地方还请指出。MySQL:
怎样运用DMS轻轻松松迈开数据库查询使用云服务器第一步,看这一篇就可以了
最近,AWS在由光环新网经营的AWS我国(北京市)地区和由西云数据经营的AWS我国(甘肃)地区发布了,它能够协助我们在许多情景进行数据库迁移:•能够将数据信息入迁或迁移AmazonEC2上创建的数据库查询或Amazon RDS;•适用同构或对映异构数据库查询的转移;•适用724钟头online的数据库迁移;•能够开展跨region、跨账户的数据库查询数据备份