职场中阻碍更好代码的15个障碍

产品必须在昨天发货。用户们都在抱怨缺少了一个功能。老板的老板说我们最好行动起来,否则会有灭顶之灾。似乎没有什么能像它能做的那样好。

没有人对开发人员改变世界的速度感到满意,每个人都希望代码像消防水龙带里的水一样流动,但没有人愿意给开发人员完成工作所需的东西。希望昨天就完成工作的老板不会雇佣更多的人,购买更快的机器,或者做让程序员更容易编程的几十件事情中的任何一件。

这里有15个现实世界中阻碍编程进程的障碍,每一个都阻碍着下一代软件的开发。我们的非正式调查出奇地简单。当开发商怀疑他们在和一个同情的听众谈话时,他们就倾吐了自己的不满。

编程效率障碍1:会议

对于妨碍您编写代码的最常见的抱怨是会议。如果程序员是可信的,他们会被锁在黑暗的会议室里数周甚至数年,而老板则会喋喋不休地谈论细节。当程序员通常责怪经理破坏了会议的时候,他们偶尔也会反过来责备其他程序员关于bug、特性或架构策略的喋喋不休。

虽然有些抱怨是愚蠢的——同样的程序员会抱怨老板不让他们知道并且不交流——但他们都来自于潜入软件的抽象世界的困难。一名速食厨师或咖啡师或许能够应付不同的要求,但将大脑转换到正确的模式来处理抽象算法通常需要时间。为了开会而离开那个地方会让工作再拖延一个小时左右。

编程效率障碍2:回复所有邮件

如果会议很糟糕,另一种选择可能会更糟:没完没了的电子邮件到处传,让所有人都看到。费力地浏览这些回复需要几个小时,而且没有人对结果感到满意。然后,态度较差的开发人员就会带着某种奇怪的骄傲,简单地说“tl;dr”。

一些团队尝试每周禁止一天电子邮件。另一些人则完全摆脱它们。这解决了过载的问题,但以通信为代价。突然之间,人们不再一起工作了。这应该很好吧?

编程效率障碍3:试图衡量效率

总有一些管理团队受到一些书的启发,“你不能管理你无法衡量的东西。”的y start counting commits to the code repository or lines of software or bug fixes. They think that counting is measuring, and measuring must be good.

但程序员是游戏玩家,这就把工作变成了一个有排行榜的大型电子游戏。程序员专注于编写代码行、解决bug、提交到存储库或任何正在计算的东西,而不是让代码变得更好。如果修复的bug得到了回报,那么突然间,关于小bug的报告就会随着修复的出现而激增。一个人因为报告错误而得分,另一个人因为修复错误而得分。或者如果算上代码行数,可以用10行代码解决问题的程序员会突然决定5000行代码会更灵活或更符合特性——只要再加5000行代码就行了。

度量生产力实际上会让代码库变得更糟,因为它会鼓励充满功能丰富、过度工程化的代码的长文件。

这个问题没有真正的解决办法。我们需要跟踪bug。我们需要组织我们的工作流程,协调软件的创建。高雅是无法衡量的。

编程效率障碍4:自以为是的开发人员

就程序员而言,只有一个同事比老板更糟糕:另一个开发人员创建了代码的最后一次迭代,但不再在项目中工作。就像每个家庭承包商都会贬低上一个木匠的技能一样,每个程序员都能迅速识别出上一代的可怕、不可原谅、完全脑残的行为。

当然,这可能是真的,但它并不像程序员说的那么糟糕。如果有的话,这通常不是由于缺乏技能造成的问题。有不同的风格,并且随着时间的推移而变化。上一代人无法使用我们今天使用的图书馆。他们无法阅读关于最佳实践的最新书籍。

女主角的态度关于之前编程工作可以经常项目放缓。骄傲和自我利益的混合物可导致程序员扔掉完全足够的代码只是使他们能够重建它的“正确的方式”。

编程效率障碍5:“以后再解决”的思维模式,又名“技术债务”

在项目计划中,没有足够的时间来构建我们需要构建的东西。我们抄近路,补上代码,拿出虚拟的管道胶带。一位聪明的经理曾经把这种情况称为“技术债务”,因为他们明白“债务”是必须偿还的东西。精打细算的人明白“债务”,即使他们不懂代码。

每个项目都有一些技术债务。有时候它能很快得到回报,但通常是下一代出现后发现它一开始就陷入了困境。他们需要建造上一代人从未建造过的东西。就像国债一样,但没有国债那么大。

编程效率障碍6:非程序员经理

在你的编程项目中,总会有微笑、快乐的人们,他们的专业不是计算机科学,而是其他任何专业。也许他们嫁给了老板的孩子;也许他们在正确的时间出现在正确的地方。但老板让他们当了经理,尽管他们还在努力弄清楚黑莓手机上的按钮。更糟糕的是,他们没有一盎司的阿斯伯格综合症,所以他们坚持在整个会议期间盯着你的眼睛。

有些程序员喜欢这些握手的人,因为愚弄他们很容易。如果你告诉他们,约翰逊联邦储备银行(Johnson DB)正在大举破产,他们会相信你,并把这个不祥的消息传下去。总得有人接受上级经理的批评。但其他人认识到,这些人只是召集会议,成为阻碍。他们能提供的指导很少,他们能提供的最好的是一些质量测试。

编程效率障碍7:程序员经理

虽然程序员可能会抱怨必须与非程序员经理打交道,但他们通常会私下说,有编程才能的经理可能更糟糕——有时更糟糕。

前天才们可能会决定对项目进行微观管理,并删除大量代码,因为他们有了一个新的愿景。或者他们会喋喋不休地说他们是如何用8080汇编程序或C或Java的一半代码完成同样的事情的。在任何情况下,他们可能更关注技术细节,而不是全局,尽管他们受雇是为了关注后者。

编程效率障碍8:大男子主义程序员,又名“brogrammer”

虽然对于程序员来说,把每一个问题和任何中断都归咎于销售团队的西装和殷勤接待人员总是一件愉快的事,但程序员也必须承认,有些问题可能是他们自己造成的。程序员被雇佣的原因是他们的计算机技能,而不是人际交往能力。

程序员不善于沟通,他们不善于考虑感情或自我。他们可以抓住一些技术上的争论,就像斗牛犬会抓住公牛的腿骨一样。客户是否想要不同的东西并不重要;程序员们被技术上的争论所困扰,他们仍然会在两年后的公司野餐会上讨论这些问题。

虽然程序员通常可以过滤出彼此的特性,但如果程序员碰头,团队可能会失败。这是很常见的两个人有不同的政治观点,例如,动态语言或NoSQL最终在同一个团队中。什么对项目是正确的决定变成了对这些程序员所珍视的一切的全民公决。那就什么都完成不了。在百年战争的下一场战役中,一切都被绑住了。

编程效率障碍9:自私或牛仔式的程序员

你从他的代码中得到了一个空指针吗?你的工作就是抓住它。在传入0时最好三思,因为自吸收式编码器不会检查0除以1的错误。这是你的工作。

自恋者编码器的工作超级酷,超级快,但只是因为它留给你很多防弹和测试。你的工作就是处理日常琐事,这样它才不会崩溃。

很多球队结束了为时已晚发现了这一点。代码做工精细在早期的测试块,但有人开始通过将他们推向真正的数据后,每个人都意识到,没有人检查的问题。哎呀。

编程效率障碍第10:糟糕的文档

写作文档需要时间。但我们是靠写代码赚钱的。我们通常是通过生成的代码行数来衡量的。你想要的结果。我们只是在做你想做的事。别担心,我们最终会记住并写下来的。

有时会有大量的文档,但这是针对几个月或几年前的代码版本。我说过这个方法将数据存储在Foo表中吗?我的坏。那是两代人以前的事了,我们还没有时间来处理代码和修复那些旧的笔记。但我们会讲到的,说实话。

编程效率障碍第11:盲目地专注于文档

虽然我们都经历过没有文档的项目,但是项目因为太多的废话和太少的编码而失败是很常见的。有几个人给我看了一个装满装订物的架子,然后说:“他们的文档是按英镑支付的。”Reading it all would take a year.

程序员经常像处理讨论一样处理编写注释的需求《太空堡垒卡拉狄加》或《神秘博士》。"他们写满了无数页的细节,没有总结或直奔主题。当文档没有提供太多的抽象或理解,只是重复代码所做的事情时,这可能是致命的。他们不是照明;他们只是把代码音译成英语。

编程效率障碍第12个:分散注意力的环境

一个客户坚持让我每天去他们的办公室。然后他们坚持让我用他们的电脑,一个星期都不能定制。然后他们没有任何办公空间,所以我和六个实习生被扔进了一个改装过的会议室,他们会花半天时间谈论前一天晚上发生的事情。另一半则致力于思考当天晚上要做什么。虽然很有趣,但我几乎没有完成什么工作。

虽然销售和市场团队可以在一些背景噪音中工作甚至茁壮成长,但程序员通常需要图书馆般的安静。无聊的闲聊、分心的敲击或铃声会把程序员的大脑从抽象的工作区里拽出来,重新回到现实中来。然后需要几分钟的时间让大脑到达它需要去的地方。

一个开发人员告诉我,他讨厌他的新桌子,因为它是离空调通风口近三英尺他说,当时的声音大得难以置信。三英尺,这让他无法集中注意力。这可能很幽默,但这是真的。

虽然许多企业给程序员提供了像乒乓球桌这样的动态玩具,但他们常常忘记了开发人员需要安静才能集中精力。然而,他们把程序员挤在一个大房间里,并认为这是一种协作的乐趣。

编程生产力障碍第13:“文化契合度”

你想要自己的办公室吗?或者你想在一个小组房间里大声说出你的问题?你喜欢一大早就开始工作,还是喜欢加班到很晚?

如果人们有相似的风格,每个团队都会工作得更好。不能的球队找到共同点很快失败。沟通从来没有发生过,而且他们最终的工作目的是相互矛盾的。

虽然人们很容易笼统地说安静的办公室或牛棚更好,但最好还是让团队来做。我发现当你在做大量的低级维护和建设基础设施时,每个人都能听到是很棒的。当你在等待编译器或构建完成的时候,如果有人对其他人大喊大叫,这并不是一个很大的中断。有时我甚至会知道答案。给每个人打个电话会很有效率。

但如果我要创建一个包含许多活动部件的复杂算法,中断、交谈甚至键盘敲击真的会让我无法集中注意力。这就是我想要自己安静办公室的时候。

编程效率障碍第14:固守传统技术

在Dice.com上有680个职位标题中的Cobol出70,000加上市。这仍然接近1%。守军会说这是一个伟大的技术,仍然能够完成任务。为什么重写的打孔卡,旧式只是继续前进?

他们有一定的道理,但是他们经常忘记保存这些古老代码的成本。所有内容通常都需要翻译,通常使用定制代码。有些代码是在ASCII之前编写的,这意味着转换输入和输出。旧的系统通常只计算空白字符,以确定数据库中有哪些内容。这是更大的转变。

12 第1页
第1页共2页
工资调查:结果在