第一个故事。 致命字母
[
原始 ]
曾几何时,
乔治在Initech的办公室找到了工作。 该公司刚刚在一栋旧办公楼中租了几层楼,该办公楼最近已从城市衰退类别转移到一楼的优雅咖啡屋,其他所有人都闻到了鞋油和新鲜皮革的气味。
那是一个广阔的空间,乔治当时正处于职业生涯的那个阶段,当时他应该有一个单独的办公室,可以看到车道。
他的第一个任务是在公司软件的Mac版本中解决该问题。 在Windows上看起来很完美,但是字体渲染错误出现在OSX上。 很难找到这个bug,但是George可能是前世的一名侦探,因此他准备进行此测试。
最重要的线索是版本控制的历史。 在过去的三年中,有五个开发人员对该产品进行了开发。 他们似乎每个人都在公司待了四个月,然后离开了。 他们花了许多个月没有做任何改变,然后一个新的开发人员出现了,整个循环再次重复。 正如乔治所发现的那样,当他试图弄清产品错误的功能,工作和原因时,它们的名字一直在弹出。
由于该应用程序是跨平台的,因此开发人员实现了自己的字体加载器和渲染器。 至少那是他的想法。 字体的内部结构是一件危险且令人困惑的事情,这反映在代码中。 这也反映了这样一个事实,即没有维护其完整性的各种程序员都在一个接一个地工作。
太混乱了 。
在代码中,George看到了很多方面无疑是很糟糕的-对
memcpy
,不带
free
malloc
不带指针的算术调用的不安全调用,这在逻辑上比逻辑上更有效。 但是显然,这都不是字体问题的根源。
乔治沮丧,决定从另一侧接近她。 在带有渲染错误的屏幕上,总是有一种或两种专用字体。 George将字体上载到Adobe和Microsoft的字体检查实用程序,并看到了许多错误的报告。
字体下载代码很糟糕,但是字体本身甚至更糟。 发现问题后,乔治告诉老板,字体需要修复。 老板把这交给了公司总裁。
第二天,老板走近乔治:“总统想
紧急与您会面。”
总统办公室更像一间会议室,但没有会议桌。 一个长长的房间,在桌子的一侧,墙上的窗户都可以看到河景。 一位愤怒的总统坐在他的办公桌前。
“你们两个怎么了? 乔治,您来这里不到四个月,已经在浪费我的时间-您是在浪费我一些关于
字体问题的疯狂想法的
钱吗?”
“但是。 我可以
证明 。”
“在Windows版本中,字体可以正常工作! 问题应该出在地狱里。 我知道你能得到多少 也许我应该带上一个计算器,计算出这次寻鬼的公司花了多少钱?” 他打了桌子,使键盘旁边的计算器跳了一下。
指控仍在继续,但是乔治在会议之后已经知道他会怎么做。 到了一天结束时,他将自己的证章和笔记本电脑还给了他一个粗鲁而诚实的辞职声明。
在短暂的无薪假期之后,乔治找到了新工作。 几年过去了,他已经开始忘记在Initech花费的时间。 但是有一天,他看到了一则有关释放Microsoft Windows漏洞关键补丁的消息。 事实证明,“第三方字体处理代码”可能会导致某些Windows库中执行任意代码。 经过一番研究,乔治证实了自己的直觉:正是Initech代码导致了问题。 此外,最后一个Initech二进制文件是在他离开公司
一个月后的2008年发布的。
第二个故事。 在过程中以及过程中和之下进行工作
[
原始 ]
凯文(Kevin)在1980年代后期在Townbank工作时,前后发现自己与成千上万的其他新兴程序员处于同一处境:公司程序员不只是编写代码-他需要坚持这一过程。
该过程与世界宗教的严格戒律的不同之处仅在于其任务是维护法规的完整性。 光荣的过程,可能是幸福的,过程是好的,您必须始终遵守该过程,最重要的是,该过程对您有用!
对于大多数开发人员来说,这个过程并不算糟糕。 您只需要习惯它。 填写表格,获得批准,注册测试计划,编写组装文档-所有这些都是有序的。 但是,正如Kevin很快发现的那样,Townbank的过程既没有退伍军人也没有初学者适应。
湿婆因子
凯文的第一个任务是在一个团队中工作,该团队当时参与了Townbank IT部门当时最大的项目-从逐渐老化的大型机向多个新的VAX系统的大规模迁移。 从理论上讲,该过程看起来不错-顾问会见了客户,发现要转移哪些系统,有必要编写规格,将任务分配给开发人员,质量控制部门必须确认新系统的工作方式与旧系统相同,然后代码才能在生产中显示。
当项目经理制定流程时,可以预料的是,不可预见的行动将始终只占总成本或实施职能所需时间的一小部分,而首先是。 但是,该项目继续发展,投入使用的环境越多,Kevin和他的其他开发人员不得不花更多的时间进行估算。 正式地,开发人员以不同的方式来称呼它-测试系统集成,配置服务器,测试媒体兼容性,但他们之间的真实称呼是“ Shiva因素”。
认真的生意!
不管怎么说,Shiva都不是一个无能或经验不足的系统管理员。 实际上,当Townbank决定从大型机迁移到VAX时,Shiva的名字只是一小部分可以处理此类基础架构迁移的人员的开始。 Shiva全权负责此事,并介绍了自己的政策,这有助于消除流程中的缺陷。 例如,每天早上,在进入星期三之前,控制部门的所有开发人员,分析师或雇员都必须在Shiva办公室的黑板上字面上签名以确认其实际身影。 此外,由于感觉对开发人员的行为进行的跟踪不够详细,因此他引入了版本控制保护:对于每次代码更改和环境之间的转移,都需要一个备忘录。 并且所有更改都应该由他的用户ID进行。 并从他的终端。
在一个平静的日子里,可以在一天之内进行一次小的更改,但平静的日子通常落在假日或周末。 恼火的开发人员向高级管理人员抱怨,他们认为这些政策会使项目变慢,并且似乎完全无用。 作为回应,管理层耸了耸肩-Shiva在项目的一开始就设定了他的目标-安全的环境,免受其他代码的交叉污染和开发人员的无能。 最后,VAX服务器仍然是新的,甚至许多高级开发人员还没有完全掌握它们。
群众抱怨和诅咒命运,但每个人都没有反抗,推翻湿婆神并结束了他残酷的统治,而是辞职并继续工作。 尽管湿婆神有种种障碍和努力,但这一过程仍在继续,但在某些情况下湿婆神似乎被忽视了-如果他本人无法进入该怎么办?
小助手程序员
尽管Kevin的终端显示他在生产环境克隆中工作,但Nosmo King和Joe Blow的客户名称清楚表明他犯了一个严重缺陷-该应用程序错误地连接到开发环境数据库,午餐后必须对其进行测试质量控制部门。 在正常情况下,更容易修复错误-在开发环境中对配置文件进行更改并恢复工作,但是命运本来希望Shiva参加很长的会议,并且应该只在第二天才出现。
希望希瓦早点回来,凯文去了办公桌,但只看到一张空椅子。 但是,Shiva的键盘引起了他的注意。 字母A,S,V,H和I比其他字母被擦除的更多。 凯文知道希瓦沉迷于力量,但他是不是太自恋了,准备一次又一次地印上自己的名字? ...也许这是一个线索? 为了娱乐,凯文转到命令行并输入“ shiva”作为用户名和密码。 凯文(Kevin)期望希瓦(Shiva)可以随时进入办公室,所以他单击“ Enter”,对他能够完成输入感到震惊。
太神奇了 太好了 凯文知道他需要与某人分享他的发现。 他对曾经是他的导师的一位退伍军人说了这一点,但是他的反应令凯文感到惊讶。
事实证明,Shiva的用户名和密码的组合是Townbank最喜欢的“秘密”,这是Shiva担任大型机管理员以来就知道的。
另一位甚至更有经验的开发人员向凯文(Kevin)解释说:“以使Shiva无法识别,我们每次加注时都会玩这个游戏。”
他继续说:“顺便说一句,为了未来,如果您不想被其他所有人的生活所吸引和破坏,那么您应该从航站楼进入,而不是从他的办公室进入。”
第三个故事。 跟我说希腊语
[
原始 ]
几十年前,甚至在激光打印机,图形操作系统和与设备无关的图像格式出现之前,
Gus就职于当地学院的IT部门。 作为停机时间的个人项目,他决定弄清楚如何用希腊语打印文本。 大约一周后,他编写了一个程序,该程序能够将古典希腊文字打印到打印机上。
Gus的老板曾担任IT经理,但尽管如此,他还是一位古代语言学专家。 他再也不需要在常规打印机上看到希腊文字了,他感到很高兴。 老板告诉了他的朋友,他们告诉了自己,等等。 很快,古典希腊学者的世界变成了一个热情而喧闹的研讨会。
Gus曾经收到来自亚利桑那州一位不知名的大学教授的电子邮件。 他从古斯酋长那里听说了一个奇妙的神话般的节目。 他也能得到吗?
古斯很乐意同意,但是出现了一个问题。 他的程序适用于VAX / VMS操作系统的早期版本和Pascal编译器,并且将文本输出到一台特定的VERSAMOD-200打印机(可以切换到矩阵模式)
和一个特定的打印驱动程序,该驱动程序用二进制代码巧妙地修补,以免破坏矩阵图像。 Gus怀疑教授是否具有足够的技术知识来欣赏他的解释,因此他礼貌地回答了这一问题,而没有涉及任何技术细节:抱歉,但是该程序根本无法在任何其他机器上运行。
一周后,一位老板走到他的办公桌前,提到了他来自亚利桑那州的朋友,然后温柔地问Gus,是否可以找到任何方式向他发送程序。 尚未听到Gus解释无法在世界上任何其他计算机上运行代码的尝试。
“你真是个天才,古斯! 我确定您会提出一些建议。 提前谢谢!”,-对自己的乐观感到满意,老板离开了。
古斯开始思考如何满足或至少满足老板的要求。 最后,他有了一个主意。 他进入了计算机的命令行:
DUMP /HEX "PRINTGREEK.EXE" /LIST=VERSAMOD-200
。
很快,他程序的
十六进制转储呈现出明显的外观。 古斯面带微笑收集了一份打印稿,然后走进老板的办公室。 “她在这! 这是您所要求的程序。”
“哦!”老板似乎很惊讶,但理解。
古斯说:“如果他们的安装有任何问题,请让他们与我联系,我会为您提供帮助。”
“太好了! 非常感谢!”,老板瞥了一眼桌子,寻找合适的邮件信封。
不久之后,我们在亚利桑那州的另一位尊敬的IT同事被移交并责令将其安装在纸上。 他一定在WTF中经历了相当震惊的时刻,但是他显然成功了。 从那以后至少已经过去三十年了,Gus从未听到教授或其他大学职员的任何问题。 也许有人刚与Hades达成协议或要求Kronos在印刷特殊字符不再是西西弗斯(Sisyphus)劳动的时候转让它。
第四个故事。 紧急传真
[
原始 ]
在技术发展的当前阶段,传真已经过时了。 它们的发明
比电话要早
十几年 ,但是尽管在扫描和电子邮件技术方面取得了巨大进步,但它们仍然是通信的标准形式。
传输数据时,线路上的随机卡顿或杂音可能会破坏传真。 大多数现代传真机都具有基本的错误处理功能,可以提醒用户必须重新发送传真。
这种使用bug的方式效果很好,以至于从来没有人更改过它。 但是,
汤姆(Tom)所在公司的一位业务分析师却提出了一个好主意。
“如果用户不坐在传真机旁等待消息怎么办?”他想。 “如果发件人的传真机未检测到问题怎么办?” 我们必须传真给他一个错误报告!”
尽管分析师的担忧是有充分根据的,但汤姆和他的小组反对发送传真失败的消息并不一定会使每个人的生活变得更轻松。
他们说,因此,发件人的机器将很忙,并且他将无法重新发送原始传真。
分析师说:“这很正常,我们的软件可以并行发送和接收传真。 这个想法是
iPod之后最好的 ! 她
绝对可靠 !”
但是辩论毫无意义:在管理人员看来,业务分析师总是正确的,并且该功能已得到紧急实施。 该程序称为“ FaxBack”,它执行与名称对应的功能:在发生故障后的很短时间内,它将失败的传输发送回发送方(由主叫方ID标识)。
长期以来,一切工作都没有任何问题,直到一天,汤姆办公室附近停了两辆带警笛的警车。 警察说他们接了911的紧急电话,但是没有紧急情况,也没有人承认他们拨打了911。
警员很快离开,但第二天一早,另外两辆警车迅速驶向办公室。 再也没有紧急情况,也没有人打911,所以他们平静地离开了办公室。
但是第三次,当汽车在第二天下午出现时,警察拒绝离开,直到找到“焦虑”的根源。 警察局确信电话是从公司的电话打来的,并要求弄清楚发生了什么。
Tom在一天中的其余时间和晚上的一部分时间里跟踪公司内部的电话,结果发现打到911的电话来自数据中心,更具体地说是来自FaxBack。
传真机(如办公电话)必须拨“ 9”才能访问外线。 因此,当FaxBack应答来自新德里的失败传真,拨打9时,其后是印度的国际代码-11,并且电信系统的“特殊规则”起作用。
安装电信系统的人提出了将911视为特例的好主意,因为在紧急情况下呼叫者可能没有想到先拨另外9个电话。 即使呼叫者只是一台计算机,一条特殊规则也适用于传真池中的线路。