为了打破您整天看到的常见代码填充的技术博客,我们今天为您提供了一些不同的内容。我们的朋友雷米·波特每日WTF写了一篇关于团队合作力量的客座文章。你可以阅读更多雷米的工作在每日WTF,你可以找到他Twitter我也是.享受!
乔治不太喜欢他的工作。他是一名高级开发人员,为信用报告和收款机构开发软件,这既不 “性感” 也不刺激。不过,他有一些很棒的同事,例如他的初级开发人员Elaine或IT负责人Thomassulo先生。
不幸的是,没有多少伟大的同事可以弥补不得不与劳埃德一起工作。劳埃德是另一位高级开发人员,劳埃德是一个问题。Lloyd不仅仅是一名高级开发人员,他曾经是一家大型医院系统的IT主管。这是他喜欢令人作呕地重复的事实: “我知道我在做什么,” 他会说。“我曾经为六家医院运行过它。我支持了成千上万的用户,这是生死攸关的。我知道我在做什么 ”。
他知道自己在做什么,所以他避开了组织编码惯例。他知道自己在做什么,以至于他会单方面对应用程序进行更改,而不会与其他开发人员,管理人员或最终用户进行讨论。当功能不可避免地由于他的干预而中断时,现存的代码是错误的,因为 “我知道我在做什么。” 他从未遇到过他不讨厌的新库或API,因为他已经知道他在做什么,对他的过程的任何改变都是不好的。有一次,他打破了一个交钥匙,通过破解打开数据库并修改基础架构来购买应用程序,因为 “我知道我在做什么。
这项工作很无聊,但实际上是劳埃德使乔治处于边缘。不断地与劳埃德斗争,不断地清理劳埃德的烂摊子,不断地在管理层面前被劳埃德削弱,这使他变得很糟糕。乔治开始计划换工作,但在他离开之前,他得到了最后一个项目。
这个项目本身就是那种在 “企业组织” 中悄然滋生的东西。他们的客户-主要是物业管理和公用事业公司-需要不断与乔治的公司交换法律文件。这些文件有一个处理工作流程。他们可以购买大量的应用程序来解决这个问题,但 “不是在这里发明的”,“我们的需求对于通用产品来说太具体了”,“我们的资本预算是空的,但我们的开发预算是满的”,意味着他们正在内部构建应用程序。
乔治是该项目的负责人,但乔治并没有全神贯注 -他正试图过渡到没有劳埃德的工作。当然,在他甚至没有看到需求文档之前,该项目就比计划晚了六个月。一群中层管理人员决定把他们的马车拴在这匹马身上,这意味着干预。“让我们为这个项目设置一个新的CI服务器!” “让我们切换到使用实体框架,即使我们的组织中还没有人真正研究过这项技术!” “我们应该做Ajax!” “PMO已经决定我们将在这个项目中使用一种新的方法,我们称之为Scrum。” “我知道我们的内部浏览器标准是IE8,但我们将在HTML5中做到这一点!”
结果不是乔治最好的作品。代码可以更干净,源代码管理历史可以更干净得多 ,他犯了一个错误。实体框架在 “代码优先” 样式中使用时,可以从对象模型生成数据库架构。在产品发布之前,George和Elaine都没有发现, 默认情况下 ,它会在某些类型的关系上启用级联删除。具体来说,存在从StatusCode表中的实体到依赖于这些状态代码的文档的级联关系。
乔治确实发现了他的错误,所以他在出门的路上尽了最大的努力。他告诉伊莱恩,他记录了这个缺陷,他告诉了托马斯苏洛先生,并给了他修复它的建议。他们可以在闲暇时修复-或不修复-缺陷。由于该应用程序没有删除状态代码的功能,Thomassulo先生打电话说这是 “不修复”。
乔治微笑着,点点头,然后继续他的下一份工作。八个月过去了,乔治和那些不是劳埃德的人一起度过了这几个月。他与Elaine保持联系,与Thomassulo先生交换了奇怪的电子邮件,但大多数人认为他的职业生涯已经结束。
直到一天下午,伊莱恩打电话给他的手机。“我现在很高兴,也很生气。
劳埃德在公司代码库中的漫游最终使他进入了文档管理应用程序。劳埃德看到其中一个状态代码被命名为 “预先批准”,因为他在六家医院运行它,并且知道他在做什么,他知道状态代码是错误的。他知道应该是 “等待批准……”。他不需要和用户一起检查这个,因为他知道自己在做什么。他不需要和其他开发人员讨论这个问题,因为他知道自己在做什么。他不需要阅读文档,因为他知道自己在做什么。而且他当然不需要在测试中进行更改,因为他知道自己在做什么。
如果劳埃德刚刚做了简单的事情: 更新StatusCodes SET Name = ‘等待批准…’ 其中id = 5,他就不会有任何问题。这就是乔治留下的文件所推荐的。但是劳埃德知道他在做什么,而是选择删除旧的状态代码,然后插入一个新的,然后更新损坏的记录。当然,在一切变得非常非常错误之前,他没有通过删除步骤。用户积极处理的文档中有一半从数据库中消失了。
“所以,” 伊莲解释说,“我对你很生气,因为我被拉来帮助劳埃德解决这个问题。但我很聪明-我提出接受劳埃德的其他工作,以便他可以专注于这个问题。
劳埃德,当然,知道他在做什么,因此不需要任何帮助。劳埃德看到了丢失数据的问题,看到文档实际上仍然存储在网络共享中,看到有了一些支持的元数据表,他可以使用推理来重建丢失的数据。这就是他所做的。手动。毕竟,他知道自己在做什么。
没有人觉得有必要阻止他。相反,伊莱恩和托马斯苏洛先生敬畏地看着劳埃德·布鲁特逼疯了。劳埃德在上午8点的早期就销毁了新鲜的数据,并在当天剩下的时间里努力更新数据。他没有离开他的桌子一次。
“所以,当然,” 伊莱恩告诉乔治,“我们一直等到一天结束。然后我走过去,敲了敲他的立方体墙,他向我厉声说。他只是刻薄 ,所以我露出最甜美的微笑,我俯身说,’嘿,劳埃德,你知道我们有备份,对吧?’ 他脸上的表情就是我对你感到满意的原因。“
“你有照片吗?” 乔治问。“因为如果我也看不到那张脸,那该轮到我对你不高兴了!”
想要构建具有高性能控件的桌面、移动或web应用程序?下载终极免费试用版现在,看看它能为你做什么!