来自IT世界的奇怪变态

至今已有14年了, 每日WTF一直在收集来自IT世界的有趣,荒诞和/或悲伤的故事。 我翻译了一些我觉得很有趣的故事。 所有公司名称和名称均已更改。

工作3000英里


来自我们作者Snoofle的个人经历的真实故事。 [原创]

几十年前,国防承包商DefCon Inc在美国陆军工作,试图获得一份新合同,以创建用于战斗的某种应用程序。 该公司希望在其提案中证明其有足够的员工来执行该项目。 因此,她雇用了上千名不同的程序员,项目经理,经理等。 研究了各种商业报价的军方看到一群新员工,他们完全不了解必要的流程,程序和要求,因此将合同转移给了另一家公司。 承包商方面解雇了这千人。

几个月后,又出现了另一份类似的合同。 该公司再次雇用了一千人来证明它有员工。 几个月后,合同又被移交给了另一家承包商,该公司再次解雇了全部一千人。


在过去的两年中,这一过程已经重复了好几次。

毕竟,可雇用的大部分员工已经意识到公司的雇用/解雇周期非常短,因此承包商只能吸引刚从教育机构毕业的新来者,而不会吸引任何人。 最终,一些高层管理人员对所有这些人感到震惊,这些人仅仅是因为办公桌的价格要比公司员工以及公司雇用的员工为合同而解雇的经验丰富的开发人员便宜得多。 因此,他发出命令,将公司所有经验丰富的员工更换为 廉价的年轻员工。 这个过程花了两年时间,但仍然发生了。

现在,薪金成本已大大降低,并且令所有有经验的候选人开发人员感到愤怒,该公司可以增加其长期员工而不会增加薪金预算。 她只能雇用没有经验的年轻开发商才能最终获得合同。

不幸的是,所有这些年轻的开发人员都很少有经验,并且公司不再有可以培训他们的人。 因此,他们两年合同的结果是这个不可靠的项目,该项目经常崩溃,表现无法预测且无法修改。 当处理必须发射和引爆的系统时,此类特性是不希望的。

在某个时候,一位高管意识到发生了什么,迫使公司停止在瓷器店里像大象一样行事,并雇用了高薪顾问。 不幸的是,高薪顾问很好地记住了招聘-解雇周期,并且不想与该组织有任何关系。 一段时间后,该公司不得不大幅改善雇佣条件,直到最终有几位经验丰富的员工同意以全职员工的身份工作。 它发生在新泽西州。

管理层将这些新员工分配到该项目以加快工作速度之后,新员工说: “等等,该项目的中间还有一个很大的空缺!” 管理层答复说,该项目的这一部分是机密的,只有拥有机密信息的人才能研究,并且只能在加利福尼亚的一家企业中进行研究。 请求并获得了适当的批准,然后将经验丰富的员工派往加利福尼亚的一家工厂工作了两个星期。

在同意旅行之前,开发人员想知道他们在学习后将如何访问这些资料。 毕竟,只能在加利福尼亚州当场访问,所有员工都在新泽西州生活和工作。 他们被告知他们将在加利福尼亚学习详细信息。

好吧,他们都飞往西海岸,入住酒店,然后开车去办公室。

那时他们被告知需要解决的所有问题。 在工作的第二周星期四,决定完成所有必要的升级需要大约两年的工作。 开发商再次问: “我们将如何从新泽西州获得材料?” 经理们回答说,所有工作都应在当地完成,并将在未来两年内留在加利福尼亚。 从下周一开始。

但是,等等,他们没有机会与家人讨论这个问题! 一位父母缺席90%的时间会对孩子产生什么影响? 他们想在旅馆和机场住两年吗? 为什么公司没有在加利福尼亚而是在新泽西雇用本地员工呢?

事实证明,由于承包商位于新泽西州,因此他雇用的员工也必须在新泽西州注册。 当然,如果在雇用之前已经报告了这一点,那么大多数员工(如果不是所有人)都将拒绝工作。 如果他们知道,那么所有工人都不会登上飞机,飞往加利福尼亚,熟悉该项目。

您甚至不能说,为了公司的利益,经理们的其余工作都是为了牺牲受害者的利益而进行的,而开发人员却在想:“这到底是什么?” 星期四晚上忙于无休止的通话。 星期五早上,所有员工辞职,前往机场返回家中。

军队代表有尊严的举止,并对人们两年不愿离开家园的事实表示同情。 但是,在与承包商交谈并兑现其在工作地点拥有经验丰富的员工的承诺时,他们变得更加艰难。

结果,与承包商的合同被终止,并被雇用以替换新的合同。

失败案例


[原创]

图片

在新工作的第一天, 塞巴斯蒂安并不特别热情。 他已经看到了很多东西,并且变得冷漠和悲观。 这项新工作应该没有什么不同:一群烦人的同事,思想欠佳的需求,旧的代码库,充满意大利面条的代码。 但是她的薪水很高,他厌倦了他的老团伙,厌倦了那些熟悉的面孔。 因此,他在内部为相同的办公室政治和沉闷任务的新阴影做好了准备。

当他去IT部门获取证书并听到旧Packard Bell服务器的嗡嗡声和咔嗒声时,他并没有特别生气。 塞巴斯蒂安只是将他对一台正常工作的计算机的要求降低了几个等级,然后回到了他的新办公室。 是的,他的职位意味着他自己的办公室和相应的付款。 为此,他可以接受许多其他事情。

他的登录信息在第一次尝试时就起作用了,这真是令人惊喜。 他期望使用Windows XP。 当Vista启动时,他不确定是否应该为较新的操作系统感到高兴,还是为它是Vista而感到恐惧。 通过完成管理员权限并修整UAC,他甚至可以假装这是“七”。 他想: “恐怕还要吓我一跳,”他启动了Outlook。

收件箱中已经有邮件:几封欢迎信,其中包含有关新员工的信息,以及其经理的第一个任务。 至少可以说,他对任务分配的效率印象深刻,他致了新领导的一封信。

第一个字母是这样的:

您好塞巴斯蒂安,欢迎来到我们完善的工作环境。 一切都正确地完成了。 创建项目文档时,您将使用Bonk-Word(IBM基于Web的文档编制应用程序)。 记住要经常保存工作! 如果Bonk-Word崩溃,则需要给IT部门写封信以重新启动它。

该公司起草了设计文档。 用被动语态写下所有内容,用紫色指示章节标题,用绿色指示章节标题。 公司总裁每天早上9点都会检查文件,因此请为此做好准备。 标头中的错误将在您的个人文件中成为黑标。

首先设计一个解决方案,以解决我们四年来一直无法解决的Macintosh字体问题。 明天凌晨9点,您应该准备一份六页的项目文档。 谢谢啦

“明天要六页?” -塞巴斯蒂安担心。 “我想我为效率感到高兴。 好吧,至少这不会很无聊 ,”他crack节,打开Bonk-Word并开始处理所谓的字体问题。

他发现的第一件事是经理没有开玩笑说要经常储蓄。 到一天结束时,他在头脑上下了赌:首先要降的是Bonk-Word或Vista本身。 大约每半小时,他们俩都坠毁了。 但是出于某种原因,在纸上保留离场统计数据让塞巴斯蒂安放心。 它提醒他:世界上还有其他事情在起作用。 最简单的数学运算并不令人印象深刻,但它们是可靠的。 定期 稳定

塞巴斯蒂安也许在这个办公室里很孤单。 但是他安静而独立。 尽管持续不断的出动烦人,塞巴斯蒂安仍然前进。 他停下工作来研究各种字体渲染方面的文献,包括Postscript规范,有关如何使用它的随附文献以及万维网上的信息中心,这些信息中心旨在以熟悉且方便的问答形式收集业界最佳思想的智慧。 。 他在文档“创建一个Python程序以渲染每个字符”中进行了广泛描述。 他花了两页简述了可以说些什么。

“如果他们需要六页,他们将得到六页,”塞巴斯蒂安认为。

第一天原来很奇怪,但塞巴斯蒂安(Sebastian)看到他可以忍受至少几年。 他完成了工作,离开了那幢建筑(里面闻起来有旧皮革内裤的味道),然后慢慢走向他的“免费停车位”(另一个使他感到满意的优势)。 缓慢-由于停车场完全被锈蚀腐蚀,并且在许多地方混凝土完全掉落,暴露了地板和立柱的加固作用。

第二天早上,正好在9:00,塞巴斯蒂安在他经理的办公室里,等待公司总裁的第一个项目验证,后者打电话给他。 考虑到公司有60名员工,塞巴斯蒂安对直接与总裁的对话感到不舒服,但他必须忍受。

“我按要求做了,并且用量适当。 这很可能只是一种形式,之后我就可以开始工作。”

一个小时后,塞巴斯蒂安羞辱又疲惫地回到了他的办公室。 他收到的荒谬而残酷的批评仍在耳边响起。 总裁说,按照公司的要求,他的科目标题几乎不是“绿色”,而不是绿色,并且各章的标题是“红色”,而不是预期的紫色。 此外,他被明确告知,使用Python调试字体是“不可能的”。 取而代之的是,Sebastian被命令使用C ++并使用该公司的“出色”软件库。 塞巴斯蒂安的经理在等待总统的电话时赞扬该文件,但在检查过程中一言不发,无可辩驳地看着他办公桌前的砖墙。

塞巴斯蒂安关上了办公室的门,把自己从公司的其余部分都关闭了。 他坐在豪华的皮椅上,盯着一台几乎无法工作的计算机的屏幕。 他重新打开文档,然后重新启动机器,因为Vista决定飞出。 当计算机再次启动时,他检查了他的银行帐户,考虑了抵押付款,并咬了咬牙。

“好吧,”他在空荡荡的办公室大声说。 “看看这些库。”

他开始寻找的第一件事是文档。 自然,在这样一家痴迷文档的公司中,“精彩”库的文档应该以理想的准确阴影准确地以正确的字体键入,并带有正确的章节标题和章节名称。 但是文档...不是。 有很多设计文件具有完美的绿色和紫色。 但是他们仅描述了库开发方法,而未提及其使用。

“我失去理智了吗?” 塞巴斯蒂安问自己,汽车何时第三次重启。 “也许代码是自我记录的……”

他经历过恐怖,但是并没有什么奇怪的:这些库由标准库中设计不佳的字符串函数包装组成。

尽管事态不断恶化,塞巴斯蒂安还是受到了打击。 他每天都被要求进行另一轮口头恐吓。 四年来,该公司无法解决这种字体问题。 但是,他提出的任何提议都不适合总统。 塞巴斯蒂安(Sebastian)放弃了自己的公司图书馆,开始使用著名的Python解决问题; 最后,如果他们仍然腐烂,那么为什么他们告诉你呢? 但是无论他使用什么:他自己的Python测试人员,Microsoft,Apple,Adobe的测试人员,字体仍然完全混乱。 488无法修复,无法修复,无法解决的设计补丁错误。

总统坚决拒绝承认真相。 他声称这是塞巴斯蒂安的错,因为他没有使用出色的C ++库。

塞巴斯蒂安(Sebastian)用尽了所有的选择后,把钥匙和经理的辞职书留在了经理桌上生锈的车库里。 他告别了他甜美的办公室和他们作为计算机分发的地狱般的打字机。 他深吸了一口气,最后一次感觉到沉闷的皮肤气味,完全无法挽回地离开了。

由于某种原因,他怀疑自己会错过公司。

您可能会从这种医疗保健中生病。


[原创]

在任何行业中,都需要在不兼容的系统之间传输信息。 如果您过着义人的生活,那么这些系统就是同一平台上的不同应用程序。 但是,如果您偏离了正确的道路,那么这些系统将以不同的语言针对在不同操作系统上以不同字节顺序运行的不同平台编写。 想象一下,在Mac OS某些版本下的Safari中,某些Java应用程序需要在Windows的某些版本下与.NET的某些版本进行通信,而Windows在某些版本的Windows下又需要与某些版本的COBOL进行通信。在任何大型机上运行的二进制EBCIDIC

早在任何人都无法想象的噩梦之前,我们就使用SGML进行降级并演变为XML ,这应该是一种在所有平台上都可以使用的解析器来指定文档中包含的格式和字段的简便方法,以便可以交换信息,只知道DTD和/或验证和解析方案

为了简化工作,我们并没有期望最好的结果,而是在XML包装器库的顶部编写了代码。

不幸的是,他们没有完成任务。


在医疗保健行业中,一些开源专家创建了(H)ealthcare(API)项目或HAPI ,该项目本质上是医疗保健行业的面向对象的文本消息解析器。 不幸的是,他们似乎正遭受“不知道何时停止”的综合症。

最新版本没有实现仅将定界字符串或固定格式字符串分成文本字段值列表的通用解析器,而是实现了1205个不同的解析器,每个解析器都有自己的高级数据结构。 最高级别的结构包含数十个子结构。 每个解析器对每个字段都有一个或多个访问方法。 字段可以是单个实例或实例列表,在这种情况下,有必要以编程方式确定要使用的访问方法。

这是一个约有1.5万个方法调用的API! 这些开发人员到底在想什么?

例如,类: EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO可能具有零个或多个产品服务部分。 因此,我立即开始考虑某种数组或列表。 因此,代替这样的事情:

  EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO info = ...;
    列出<EHC_E15_PRODUCT_SERVICE_SECTION> prodServices = info.getProductServices();
     //迭代

...我们需要执行以下一项操作:

  //获取子结构
     EHC_E15_PAYMENT_REMITTANCE_DETAIL_INFO info = ...;
	
     //从子结构中获取内置的产品服务

     // ...如果我们确定他只有一条消息:
     EHC_E15_PRODUCT_SERVICE_SECTION prodSvc = info.getPRODUCT_SERVICE_SECTION();
	
     // ...如果我们不知道会有多少:
     int n = infos.getPRODUCT_SERVICE_SECTIONReps();
     for(int i = 0; i <n; i ++){
         EHC_E15_PRODUCT_SERVICE_SECTION prodSvc = info.getPRODUCT_SERVICE_SECTION(i);
         //使用这个
     }

     // ...或者您可以直接抓住它们并进行迭代
    列出<EHC_E15_PRODUCT_SERVICE_SECTION> allSvcs = info.getPRODUCT_SERVICE_SECTIONAll(); 

...,您需要调用所需的方法,否则可能会遇到异常的风险。 但是,如果有很多方法可以通过API执行一项任务,那么有很多方法可以使用API​​在代码中执行任务,这不可避免地会导致问题。

您可以说: “来吧,一切都还不错” ; 只需使用您所需要的即可。 但是随后您意识到这些数据结构中的一些被深埋在十个或更多层中,每个数据结构都具有数十个子结构和/或字段,并且它们全部具有几种访问方法。 而且,它们所有人的名字都非常长。然后您意识到HAPI开发人员已经厌倦了键入文本,并开始使用诸如LA1,ILT和PCR之类的数据结构作为缩写。

该API会很有用:如果在请求解析的字段中找不到所需的API,则会抛出异常,并且您需要自己找出问题所在。当然,这意味着您已经知道数据流中正在传输的内容。

无名氏在医疗保健部门工作,并支持围绕HAPI封装的库。通过简单地解析另外一个字段,可以定期给他任务(花了几个星期才能完成)。在花费大量时间仔细阅读API文档卷之后,他用一类300行编写了一个通用解析器,其中包含几个split,substring,parseDate和parseInt,以代替整个接口。

此后,添加新字段的时间不超过十分钟。

Source: https://habr.com/ru/post/zh-CN431394/


All Articles