来自IT世界的好奇变态-3

每日WTF网站已经收集了14年来自IT世界的有趣,荒诞和/或悲伤的故事。 我翻译了一些我觉得很有趣的故事。 所有公司名称和名称均已更改。 以前的问题可以在“ 好奇的变态 ”标签下找到。

图片

第一个故事:“不仅仅是辉煌”


[ 原始 ]

我们都有无法完成工作的同事。 贾拉德也很幸运。

他在Initech的一小组开发人员中工作,这些开发人员为使用Windows客户端与服务器交互的客户创建了Windows客户端。 该公司决定将应用程序从.NET移植到Java。 最重要的指南推荐了来自Intelligenuity的备受推崇的领先Java开发人员Kisha作为项目经理。 管理层说:“不用担心。” “ Intelligenuity只雇用最杰出的程序员。”

在第一次项目会议上,经理宣布他们将对Java项目使用Eclipse。 Kisha说:“我没有Eclipse。 有人可以发送吗?” Jarad给她发送了一个链接。 在下次会议上,他问她是否安装了Eclipse。 她回答说她无法下载该媒体,因此她等待下一次会议寻求帮助。 经理跑到汽车上,并通过单击下载链接解决了问题。

让我们继续下一次会议:Kisha说她无法继续工作,因为“ Eclipse在JDK方面有问题,有人可以发送给我吗?” Jarad再次向她发送了链接。 几天后,在下次会议上,她说:“ ​​Eclipse无法工作,因为它需要一个jar文件,有人可以发送吗?” 之后,“由于Eclipse不断报告NullPointerException ,有人可以向我发送用于创建类的代码吗?”

最后,经理更改了会议的结构。 他们继续了常规的Windows客户会议,但增加了一个单独的专门会议,仅供Kishi使用。 随着时间的流逝,事实证明她和丈夫是一位非常高级的领导人和他的妻子的朋友。 举行了另一次会议,以“确保其成功开展工作”; 这意味着团队经理为她编写了代码。

Kisha曾经告诉经理,客户在Web门户上遇到严重问题,因此应尽快与客户举行会议以解决他的问题。

经理与客户(他自己,Kishi,Jarad和项目经理)举行了一次会议,以一劳永逸地解决问题。 会议当天,客户对技术支持人员和管理人员的数量感到惊讶。 他解释说:“嗯……门户的“问题”是我向Kisha询问了门户网站的URL。 给他写一封信就足够了。”

有时在这个世界上会发生正义,结果Kisha失去了工作。

第二个故事:“三个月之痒”


[ 原始 ]


2016年3月, 伊恩需要一份工作。 搜索开始后几乎立刻,他很幸运:他找到了一家小型初创公司,需要一名具备Python架构和设计技能知识的员工。 “小”是因为除了Ian之外,该公司在其创始人Jack的领导下只有三个开发人员。

杰克本人对伊恩进行了采访。 经过技术测试后,他了解了有关该公司项目的更多信息:iOS应用程序的几乎完整的原型。 用户将其手机与手腕心率监视器同步,然后手机应播放与用户当前活动匹配的音乐。 该应用程序的主要目的是帮助训练过程中获得必要的脉搏。 该应用程序还使用手机的加速度计来跟踪用户开车时的步伐。 据杰克说,这些数据对于帕金森氏病的研究本应是有用的。 他用最好的大学的科学文章来支持他的发言。 Jack希望Ian开发一个新的后端系统来进行数据存储和查询处理。

杰克友好友善,他的热情感染了其他人。 伊恩立即接受了这个提议,并准备在第二天开始工作。 他的办公室狭窄,但仍然独自属于他。 他的任务是创建应用程序所需的后端。

两个星期过去了。 一个困倦的星期一早上,杰克邀请他的开发团队到会议室。 他在Powerpoint演示中产生的眩光烧伤了视网膜。

“我仔细考虑过。 我们是一个全新的创业公司。 没人知道我们吧? 我们需要采取一些措施来提高品牌知名度。 因此,我决定:我们将摆脱该应用程序的音乐部分,而只专注于数据收集。”

伊恩本能地几乎说: “什么?!” 他们将不得不放弃两个星期的工作成果。 另外,数据收集部分以前是完全可选的。

Jack切换到另一张幻灯片,其中显示了他现在想为每个用户跟踪的指标。 它们太多了,我不得不使用最小的字体。 为了阅读,伊恩不得不起眼睛。

“如果将足够大的干草堆放在一起,肯定会出现针头!”杰克说。 “我们将免费提供该应用程序,并且与它一起使用将意味着必须进行注册。 对我们来说,实际收入将是收集的数据。”

投资者的资金花在了城市商务中心的豪华办公室里; 免费的应用程序开发人员应该得到最好的。 杰克聘请了第二位iOS开发人员,数据科学和实习生。

“但不要给实习生任何重要的工作,”杰克告诉全职员工。

掌握了新情况后,Ian开始开发新系统的体系结构,该体系结构将记录所有必要的数据。

三个月后,杰克将所有东西扔进了垃圾箱。 “没有应用! 我们需要一个新的发展方向!”

杰克的新愿景是创建一个网站,人们必须在该网站上指出自己在梦中,训练和其他活动中所听的作品。

“人们喜欢谈论自己。”杰克说。 “我们不应该为他们提供给我们的数据而付钱给他们!”

雇用了一名前端开发人员来创建该网站。 网站启动后不久,杰克向投资者吹嘘自己已经达到了100万的唯一访问者。 实际上,只有大约300个注册,其中一半是由一个人创建的。

您已经可以猜到三个月后发生了什么。 Jack放弃了发展缓慢的网站,转而支持Slack机器人,该机器人应该响应命令"Play ${song} by ${artist}" ,在Spotify中找到歌曲并提供链接。 Spotify小部件将播放30秒的预览,如果用户拥有Spotify Premium帐户,则将播放整首歌曲。

“就这些吗? 我们将如何赚钱?”,-到此时,开发商不再束手无策了。

“订阅将被支付,”杰克大胆地回答。

“对于聊天机器人?” “伊恩反对。 “要使其正常工作,用户已经需要Spotify Premium。 如果我们希望人们为此付出更多,那么我们需要给他们更多机会!”

“我们待会再处理,”杰克回答。

杰克委托实习生开发公司的新核心产品,这违反了六个月前杰克的要求。 实习生尽了最大的努力,但很快被迫返回学校。 没有仪式的不完整代码被扔给前端开发人员进行修订。 在一位iOS开发人员的帮助下,他完成了它。 伊恩在做什么? 他创建了一个仪表板和日志记录,因为Jack坚持认为他们吸引了足够的用户来证明这种努力是合理的。

又过了三个月。 添加了许多“功能”,例如,该机器人强迫Slack频道上的用户使用它。 此行为违反了Slack的使用条款,因此该应用程序不允许进入商店; 杰克本人必须将链接发送给感兴趣的人,以便他们手动安装它。 最初,产品被转移到杰克亲自认识的50个“非常友好”的公司中。 其中,只有少数安装它,第二天继续使用它的情况就更少了。 然后杰克将广告扩大到300家“友好”公司,但结果却是一样。

尽管Ian无法帮助其他开发人员完成工作,但Jack开始坚持增加工作时间时,Ian遇到了转折点。 但是,杰克强迫他待到很晚才“表示声援”。 这是最后一根稻草:两周后,伊恩写了辞职信。 他上班的最后一天恰逢Slack bot的发布,在此期间,他观察到仪表板上的直线。 当他最终离开豪华办公室时,这家初创公司仍然没有赚到他的第一分。

幸运的是,杰克有了一个计划。 伊恩(Ian)离开后,他从头开始,即将创建新产品。 不,他不会带来任何收入,但是他们需要首先了解该品牌。

第三层楼:“备用传送带”


[ 原始 ]

“嗯...你能帮我看看吗?”

帕特(Pat)放弃了对新功能进行编程的工作,并看到弥尔顿的立方体站在她附近。

“我认为我遇到了问题,”弥尔顿补充说。

公司的主要内部系统之一是数据处理管道。 也许可以将“管道”一词视为夸大其词,因为实际上只有少数几个Shell脚本和Python程序从文件中提取数据,对这些数据执行操作,然后将结果转储到其他文件中,然后再由其他脚本读取。 在工作过程中,人们通常从版本控制系统中获取脚本的最新版本,对其进行修改和调整,以便他们为与数据相关的特定问题提供答案。 如果看起来这个特定过程可能有价值,那么他们会清理代码并将其重新添加到版本控制系统中。 如果他们认为自己不再需要该代码,则只需重置为HEAD。

但是,有些工具(例如Milton)基本上保留了所有脚本的副本。 或者,与弥尔顿一样,复制几本。 Milton最了解数据处理管道,但是大部分知识都包含在他的个人脚本库中。

“我认为有必要对版本控制系统进行更改,” Milton说。 “我有一个被脚本调用的脚本,该脚本被脚本调用,并且所有脚本都依赖于一堆已创建的外壳变量,例如$SETUP_DIR 。”

帕特点点头。

“因此,我想将所有这些重组为一个参数,以便其他人可以使用该代码。 我是这样做的……但是在测试之前,我忘记更改调用脚本,以便它们传递参数。”

特别是,弥尔顿的脚本包含以下内容:

#!/bin/sh

rm -rf $SETUP_DIR/*/


他将其重构为以下行:

#!/bin/sh

rm -rf $1/*/


Shell脚本不关心这些变量的存在。 Milton具有$SETUP_DIR的持久环境。 但是$1是第一个参数,如果不传递该参数,它将为空。 因此,在不带参数的情况下启动新的Milton脚本时,将其部署到rm -rf /*/ ,删除其帐户可以访问的所有内容。

基本上,这导致了无数次尝试删除他没有权限的文件。 另外,这意味着他的主目录消失了,因为一连串的意大利面条脚本根本无法重新创建,因为它们从未进入版本控制。

“这可以解决吗?”弥尔顿问。

“当然,是的。 一切都可以从您的上一次备份中恢复,” Pat说。

尽管在所有Windows系统上都启动了自动备份工具,但未在任何Linux系统上对其进行配置。 支持部门认为,如果您在技术上具有足够的能力来使用Linux和编写Shell脚本,那么您将具有足够的知识来配置自己的备份系统。 特别是为此目的,所有人都可以使用可访问的SAN。

“哦,我……从来没有设置备份,” Milton轻声说道。 “嗯……至少我没有推动?”

帕特希望弥尔顿能从这个错误中学到正确的教训。

第四个故事:“什么是浮点数?”


[ 原始 ]

图片

对于新手程序员来说,有很多陷阱:声明变量和初始化变量之间的区别,有时需要使用分号来完成行,将错误抵消一个的麻烦……我们在行业中都遇到过精巧的自学成才的程序员,他们甚至可以使用正确的体系结构创建大规模应用程序这是一个梦想,但我们看到了自学成才的初级人员,他们几乎没有掌握基础知识,并认为这是他们所需要的。 最后,出于某种原因需要文凭和正规教育。

这个故事始于Olaf刚从大学毕业,并以“实习程序员”的身份从事了他的第一份实际工作。 该公司已为改善国家医疗保健系统的治理设定了自己的目标:任何与医疗保健系统进行交流令人怀疑的人都会说这是一项艰巨的任务。 但是,该公司是由只有PHP的基础知识的医生创立的,他在有时间时会独立学习。

Olaf开始工作,打算运用他的设计模式知识。 PHP很容易学习,但是很难掌握。 用PHP软件编写的许多示例都使用上帝对象,并且代码与演示文稿混合在一起-两个严重的错误,但是,大多数在线教程中都未提及。 Olaf开始将函数与表单分开,创建可重复使用的对象以最大程度地减少复制粘贴,并从事其他类似任务,愉快地将传递给他的代码混乱变成有序的。

于是他发现自己在酋长的办公室,酋长安排他洗自己的头发。

“其他程序员不会理解这一点!”老板喊道。 “代码太复杂了。 你为什么要改变它? 它有效,您必须离开它!”

灰心丧气的奥拉夫(Olaf)恢复工作,将一个干净的版本上传到他的主分支,而没有进行任何更改。 为了避免与不良做法发生冲突,他开始研究会计系统中的一个漏洞,该漏洞具有较高的优先级和紧迫性,因为它与计费有关。 用户可以将CSV文件及其支出信息上传到服务器,然后系统按类别汇总这些值并创建账单报告。 但是,在内部的某个地方,四舍五入的误差逐渐增加,在某些重要的边界情况下导致数量不正确。

奥拉夫比他的同事学习更多,但是没有全面的培训。 他很快设法确定这是一个带有浮点数的数学错误。 由于十进制数字不能完全以二进制形式表示,因此在边界情况下会产生计算错误。 他开始寻找正确的方法来处理PHP中的十进制值。 与Node或C#不同,PHP中的外部库很难连接,因为该语言不具有对包管理的内置支持。 他不知道如何添加能够正确执行数学运算的库。 由于该软件仅计算总和,因此Olaf决定使用整数数学:读取该值,除去小数点(以便将10.50 $的值表示为1050),执行计算,并在显示时再次添加小数点。

另一位大三学生喜欢这个主意。 高级开发商批准了该提议,但首席开发商断然拒绝了这一提议。 他对此有何主张? “这不是浮点错误。 它是由于PHP的类型较弱而引起的,该程序尝试将值求和为字符串而不是数字。

(对于那些好奇的人:PHP不使用+运算符来连接字符串。相反,它使用“。”。 "hello " . "world"的结果"hello " . "world"将是"hello world" 。)

结果,高级开发人员实现了此解决方案:将整数部分与小数部分分开,以使$ 10.50变成$ 10.00和$ 0.50,然后分别汇总每个部分。

Olaf并没有流连忘返,等待他们发​​现错误仍然存​​在,因为程序仍然使用美分作为浮点数来处理小数部分。 他用更好的语言找到了更好的工作,并离开了公司。

图片

第五层:“安全计算”


[ 原始 ]

在80年代后期, Karl在一家软件开发公司工作了一段时间,该公司致力于为军用和民用客户提供航空电子设备和全球定位系统。 在商务上,他经常拜访Schlockdeed Corp,后者是一家有合同为美国陆军开发新一代战斗机的客户。 由于其工作严格保密,因此确保安全非常重要。

每次Carl进入或离开企业时,他都必须经过安全部门。 在那儿,他仔细检查了他的公文包,夹克,午餐盒和几乎所有东西,除了对尸体腔的全面研究。 尽管Schlockdeed每天进行细致的检查,但他们的某些“安全措施”却荒唐可笑。

在通过软盘传输信息的时代 ,程序员经常带他们去工作,并从中取出装有软盘的盒子。施洛克德(Schlockdeed)制定了相当宽松的开车政策,尽管这是窃取他们秘密的最简单方法。卡尔等承包商在检查了个人资料后,被授予“媒体通行证”。它是一张卡片,可以让他们毫无疑问地携带并进入建筑物中的任意数量的软盘。

直到他决定将自己喜欢的HP-41CX计算器带到办公室之前,卡尔的工作并没有被任何事情所掩盖。他们研究复杂的算法,并且在板上编写方程式花费了太多时间,因此Karl希望加快这一过程。在早上的检查中,后卫Bill拔出HP-41CX,脸上立刻出现了担忧的表情。

: «, . ». . 41CX - ? , ? «, CIO. », — .

, , , «» . , (Chief Information Officer) . , 80-. , Calculator Inspection Officer.

“伙计,我需要检查一下您的机器,”鲍里伸出手说道。比尔将他的HP-41CX交给了他。保利仔细检查了他并说:“我必须没收他。您会看到,它具有内部存储器,因此有可能被用来窃取秘密。 “归根结底,我会将其退还给您,但您甚至不必考虑再次陷入困境!比尔将卡尔带回主要的安全部门,当时他已经没有计算器了。

, . . , . AC (Approved Calculator), . HP-41CX, , Schlockdeed . , , « » -.

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


All Articles