Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >毁灭程序员效率的 15 个障碍

毁灭程序员效率的 15 个障碍

作者头像
用户4962466
修改于 2019-10-11 01:53:52
修改于 2019-10-11 01:53:52
3550
举报
文章被收录于专栏:我的前端路我的前端路

会议,什么都不懂的经理,生产效率指标——这就是你和下一个伟大软件之间的天堑。

昨天必须得发布产品。用户争闹和咆哮某个缺失的功能。老板的老板说,我们最好迅速行动起来否则就炒我们的鱿鱼。感觉一切都有心无力。

没有人满意开发人员这种已经“竭尽全力”改变世界的速度,每个人都希望代码像消防水管里的水一样能够源源不断地流出来,但没有人愿意提供给开发人员更好地完成工作的条件。正如那个想要我们昨天就完成工作的老板,他不愿意雇佣更多的人,不愿意购买速度更快的机器,也不愿意做任何其他可以让程序员专注于编程的事情,又想马儿跑,又不给马儿吃草。

下面就是现实世界中的15个编程障碍。

编程效率障碍No.1:会议

最常见的抱怨是打断开发人员编码思绪的会议。如果老板信任该程序员,就会要求他们时不时地去那间数周甚至数年昏昏暗暗的会议室闲聊有关细节。尽管程序员通常归咎于是管理人员毁了会议,但他们偶尔也会指责其他的程序员老是跑过来询问有关或bug或功能或架构策略的问题。

虽然有些抱怨是愚蠢的——但程序员依然会埋怨,如果老板让他们自己在黑暗中摸索,没有一点沟通——任他们自己在软件的抽象世界里埋头苦干,自己去面对各种困境。快餐厨师和咖啡调配师或许还能够兼顾不同的需求,但如果是切换大脑到正确的模式来操作抽象算法则通常需要时间。从会议模式中切换回编码模式,可能会浪费一个小时左右的工作时间。

编程效率障碍No.2:答复所有的电子邮件

如果说会议很糟糕,那么这一种可能更糟糕:需要查看发来的无穷无尽的邮件。回复邮件需要时间,而且没人会对回复结果表示满意。然后那些最不耐烦的开发人员或许会选择简单的回复——“tl;dr”(即too long,didn’t read。篇幅过长,没有阅读)。

有的团队试图开设每周一天的禁邮日。还有的团队就完全不用邮件。虽然解决了邮件过载的问题,但却是以沟通为代价的。要是突然不在一起工作。这还能算是好办法吗?

编程效率障碍No.3:试图衡量生产力

总会有管理团队受那些所谓“你不能管理你无法衡量的东西”的书籍启发,于是开始衡量提交的或代码库或软件代码行或bug修复。他们认为,计数就是衡量,而且衡量一定是好事。

但是程序员并不是砌砖工,不能数数砌了多少砖就知道其效率。相反,为了写出更好的代码,程序员需要或专注于编写的代码行,或解决bug,或提交到代码仓库,或做一些无法计数的事情。如果bug修复可以加分,那么一些微小bug的报告就会激增,bug修复也会如此。有人因为报告bug得到了奖励,然后另一个人因为修复它也能得到奖励。或者,如果是计数代码行数,那么那些可以用10行代码解决问题的程序员,可能就会转而表示5000行的代码将更灵活或功能更兼容——任何可以添加到5000行中的都加进去。

衡量效率实际上会因为鼓励功能丰富,代码过度设计的长文件,而让代码库变得更糟。

对于此问题还没有真正的解决方法。我们需要跟踪bug。我们需要组织工作流程,协调软件的创建。这种优雅是无法衡量的。

编程效率障碍No.4:妄自尊大的开发人员

对于程序员而言,有这样一个同事比Boss更难以忍受:创建了代码的最后一次迭代,却不再工作于这个项目。正如每个房屋装修承包商会贬低上一个木匠的技能,每个程序员也会快速指出可怕的,不可原谅的,完全是死脑筋的上一代的行为。

当然,这可能是事实,但它很少像程序员说得那么糟糕。如果有什么区别的话,问题通常也不是由于技能匮乏而引起的。主要还是风格的不同,并且风格还会随着时间而改变。上一代和我们今天访问的库不同。他们也不曾阅读过有关最佳做法的最新著作。

妄自尊大的编程态度往往会减缓项目。骄傲和利己主义的混合发酵会导致程序员抛弃完全能够胜任的代码,只为了按照他们认为的“正确方式”重建。

编程效率障碍No.5:“以后修复”的思维定式,又名“技术债”

我们总感觉不够时间在项目中按计划构建我们想要构建的东西。于是,我们偷工减料,给代码打补丁,缠满了虚拟胶带。曾有明智的经理将此称为是“技术债”,因为“债”是以后必须要还的。即使他们不理解代码,也知道“债”的含义。

每个项目都有一定的技术债务。有时它会快速见效,但通常直到下一代才会发现这已经成为了一个坑。他们需要构建上一代没有做到的东西。就像滚雪球一样,越滚越大。

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

总会有那些面带微笑,西装笔挺,却不是主修计算机科学,也不懂编程项目的家伙成为了经理。也许他们娶了老板的女儿;也许他们正好在“正确”的时间出现在了“正确”的地方。但是,老板让他们担任了经理,即使他们一窍不通。更糟的是,他们会用外行人的眼光来看待问题,哪怕不伦不类,文不对题。

有一些程序员表示很欢迎这样的经理,因为愚弄他们很容易。而且他们还承担了来自于更高管理层的炮火。但也有人承认,这些人只会不断地开会,只会妨碍编程。他们几乎给不了任何有用的指导,他们可以提供的只是那么一点质量检测。

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

虽然程序员可能会因为不得不与非程序员经理打交道而抱怨,但他们经常悄悄地表示,编程人员去做管理人员更糟糕——有时甚至更糟糕得多。

他们是前任的天才,可能会决定微观管理项目,然后果决地撕裂大片的代码,因为他们有了一个新的展望。或者,也许他们会闲谈,对于同样的事情,他们是如何用8080汇编或C或Java编程写了一半的代码。在任何情况下,他们更痴迷于技术细节而不是大局,虽然他们被雇来的目的是盯牢后者。

编程效率障碍No.8:善于社交的程序员,又名“brogrammer”

虽然程序员可以将每个问题和任何中断的责任归咎于巧言令色的销售团队,但编程人员也必须承认,有一些问题在于他们自己。程序员被聘请的目的在于他们的计算机技术,而不是他们的人际交往能力。

程序员通常不善于沟通,不知道如何表达他们的感受和思维。他们可以准确抓住技术参数,就像庖丁解牛一样迎刃有余。无论客户想要改变什么都不要紧:程序员总是时刻思索着技术参数,即使是在公司野餐上也不外如是。

尽管程序员通常可以过滤掉对方的特质,但当程序员之间发生磕磕绊绊时也会让团队失败。当同一个团队中两个人有着不同的政治观点,比方说,动态语言或NoSQL,那么团队就会永无宁日。一切都像是在战场一样,战火纷飞,硝烟弥漫。

编程效率障碍No.9:自私或牛仔程序员

你从他的代码里发现一个空指针?捕捉空指针于是成为了你的工作。你最好多想一遍要不要传递一个零,因为自私的程序员不会检查除以零错误。这也成为了你的工作。

牛仔程序员的工作又酷又快,但这是因为他的代码中遗留了许多漏洞,并且没有经过测试。于是这也成为了你的工作,因为如果你不处理这些琐事的话,代码就会崩溃。

很多团队在最终认识到这一点的时候已经为时已晚。代码块在早期测试中运行良好,但当输入真正的数据之后,各种问题就开始暴露出来。真是一场灾难。

编程效率障碍No.10:可怜的文档

写文档需要时间。但由于老板雇我们来是来写代码的,并且通常通过我们写的代码行数来衡量我们的效率。因此既然你想要结果,那么我们就只做你想要的那部分。当然最终我们还是会写文档的,但质量的好坏就不论了。

有时候,文档虽然很多,但却是几个月或几年前老代码的版本。我们只是还没来得及修改这些旧文档而已,但是,以后我们会同步的——相信我。

编程效率障碍No.11:成为文档的奴隶

虽然我们都经历过没有文档的项目,但是空话太多、编码太少反而导致项目失败也很常见。曾有几个人指着满满一书架的文件夹,向我炫耀说:“我专门请人来写文档。”然而要读完这么多文档需要一年的时间。

程序员通常在处理需求时,会写一些评论和注释,之后充作文档。因此这样的文档,都是一些微小的细节,没有经过认真地总结或没有说到要点上。这在文档中将可能是致命的,当他们没有提供太多的抽象和理解,就只写代码流水账的时候。这样的文档并不具启发性,只是翻译下代码而已。

编程效率障碍No.12:很容易导致分心的环境

有一个客户坚持要我每天去他们的办公室,坚持要我使用他们的电脑。然后,他们没有提供任何的办公空间,所以我只能和六个实习生在会议室写代码,此外,这些实习生还需要我用半天的时间回答他们前一天晚上碰到的问题。另外半天的时间则用来指示今天晚上做什么。于是,我基本上做不来自己的工作。

虽然销售和营销团队可以在背景噪音的环境下茁壮成长,但程序员通常需要图书馆般安静的背景。闲聊,令人心烦意乱的敲击声,或铃声将驱逐程序员的思维走出抽象的工作区,回到现实中。然后,需要几分钟的时间才能重新沉浸于工作区。

有一位开发人员告诉我,他恨他的新办公桌,因为它靠拢空调出风口,噪音令人难以置信的响,使得他真的很难集中注意力。这可能略有夸张,但的确是一个事实。

虽然许多企业会提供程序员类似乒乓球桌的娱乐活动,但他们往往忘记了开发人员需要在安静的氛围中集中精神。甚至,他们还将程序员转移到大房间,认为这可以促进合作,殊不知却会导致一有风吹草动,整个房间的程序员都受到干扰。

编程效率障碍No.13:“文化契合

你想拥有自己的办公室?或者你更喜欢团队化的办公室,这样你就可以直接喊出你的问题?你喜欢在清晨开始工作,亦或是你更喜欢熬夜?

如果团队成员之间的风格相似。那么这支团队往往才能更好地工作。无法找到共同点的团队很快就会失败。没有沟通,最后只会南辕北辙,不知所谓。

编程效率障碍No.14:死守传统技术

很多捍卫者认为古老的技术依然很伟大,依然能够完成任务。因此对于为什么要重写代码表示疑虑重重。

他们想得没错,但他们忘记了保持这些古老代码的成本。所有一切通常都需要用自定义代码进行翻译。某些代码甚至写在ASCII之前,这意味着需要转换输入和输出。旧系统经常会计数空格字符只是为了在数据库中指出这是什么。这就更加需要转换了。

当然程序员可以通过屏幕抓取,重新格式化,临时构建系统来做大量的工作,但一段时间以后,他们往往需要花费更多的工作来清理混沌的逻辑,以致于腾不出时间来写新的逻辑。

编程效率障碍No.15:对最新的渴望

最新的工具自然有意思,但却在没有经过大量时间再次编码以往的工作之前,是不会被开发工作室采用的。走在时代尖端的人总是会扔掉API的整个部分,并重新编写,从而迫使我们这些下游的程序员不得不跟着一起改写代码。我厌烦过,当我不得尽力用Python 2.7的代码对付Python 3.0的代码时,因为依现在的情况,Python已经是一种相对稳定的代码库。

在许多情况下,新的工具并没有战斗化。例如,Node.js,虽然说相当快,但是只有当你重新学习所有关于死锁的经验教训之后,知道线程优先的时候才能发挥作用。世上没有免费的午餐,工具虽好但都是有代价的。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
程序员编程障碍
编程效率障碍No.1:会议 最常见的抱怨是打断开发人员编码思绪的会议。如果老板信任该程序员,就会要求他们时不时地去那间数周甚至数年昏昏暗暗的会议室闲聊有关细节。尽管程序员通常归咎于是管理人员毁了
企鹅号小编
2018/01/09
6750
程序员编程障碍
一个老程序员的30年生涯回顾
前几天,我读到一篇文章[1],一个60多岁老程序员回顾自己的人生。 读完以后,我很受触动,觉得对于软件行业的很多看法,我也有同感。下面就是这篇文章的翻译。 一个老程序员的30年生涯回顾 (译文) 原文网址:hackernoon.com[2] 作者:Chris Fox 1、 1967年,我13岁时开始学习编程。 1988年,我正式进入了软件行业,通过编程养活自己。那一年,我34岁。 2、 1989年,我加入微软公司,那是微软为程序员提供单人办公室的最后一年。我们编程时,几乎没有干扰,这真是太好了。
腾讯NEXT学位
2020/08/18
6690
​【译】掌握这些策略,公司轻松留住顶级程序员!
我们是家专注于提供高品质软件开发服务的小公司,最近和一家在全球有业务的大公司签了合同,负责一个大型项目。工程日期只给了八个月,实在是太紧了。所以,我们打算扩大团队来应对这个挑战。
Masutaa大师
2023/08/23
2320
​【译】掌握这些策略,公司轻松留住顶级程序员!
十倍程序员的传说
最近关于 10 倍程序员的事又开始在各个社交平台火了起来,CODING 作为国内领先的一站式 DevOps 解决方案,今天也来讨论一下 10 倍程序员到底存不存在和这个概念到底意味着什么。
腾讯云 CODING
2019/08/08
4750
十倍程序员的传说
程序员的自我修养5️⃣—不至于代码
相比码农、程序猿、软件工程师、张江男、屌丝程序员等等这些网络词汇,当你把自己看作是一个屌丝程序员的话,那你也可能就是那个衣食不愁,但整天浑浑噩噩、无所追求的屌丝。我更愿意用技匠这个词来形容程序员,就像我给自己起的花名一样。
马拉松程序员
2022/04/26
4620
《程序员的职业素养》- 读书笔记
这本《程序员的职业素养》内容相对比较简单,但是涵盖了一些程序员在工作过程中需要注意的一些细节问题,如果读者是程序员的话会对职业发展有很大帮助的。
用户2932962
2018/08/30
7510
《程序员的职业素养》- 读书笔记
PM 帮程序员提高效率需要做的 5 件事
PM 帮程序员提高效率需要做的 5 件事 作为一个软件开发人员,只有卓越的技术是不够的。更重要的是应该专注一些作为一个专业人士应该了解的内容。在我的排序中,与参与项目的其他人的交往能力是名列前茅的。无论项目是什么性质的,你都需要与其他人互动: 作为一个开源贡献者,你必须合作审查补丁或让别人来审查你的补丁,你必须解决用户提出的问题,你需要与其他提交者或共同维护者一起规划好如何同新用户交流功能 作为一个自由职业者,你必须与现有的和潜在的客户互动。你还需要和参与项目的其他开发人员、设计师和测试人员互动,你需要清
用户1289394
2018/02/27
6060
PM 帮程序员提高效率需要做的 5 件事
45张令程序员泪流满面的趣图
20 实习生将他的代码交给高级开发人员,高级开发人员反手就是一个Code Review
IT阅读排行榜
2019/04/25
2.5K0
45张令程序员泪流满面的趣图
程序员对项目经理的误解
在软件开发的领域中,程序员和项目经理之间往往存在一些误解。这些误解可能会导致沟通不畅,工作效率低下,甚至可能影响到项目的成功。本文将探讨一些常见的程序员对项目经理的误解,以及如何解决这些问题。
DevOps持续交付
2023/12/04
2530
程序员对项目经理的误解
最令程序员恐惧的 10 件事,据说还没有全部“躺枪”的
软件开发是一个伟大的工作——和任何其他工作一样,它也有它的缺点。下面的10件事就是大多数程序猿关于编程所无法苟同的。 对于非软件开发人员来说,开发人员的工作看起来一定很甜蜜:很多公司都需求这方面人才,得到的报酬真的很不错,公司给你各种有趣的福利,等等。但是真相却是,虽然,这一切是真的,但如同任何其他的工作一样,程序员也有那些扒拉着头发恨不得拔光的时刻。在软件工程师的一生中,有许多事情可能会让他或她沮丧不已。 基于在线讨论论坛中程序员的评论和投票,我们总结了最令软件开发人员沮丧的10件事情。如果,读完了这些,
BestSDK
2018/02/28
8420
拿什么来衡量程序员的生产力?
老实说,我们现在还没有明确的方法可以衡量程序员以及整个团队的生产力。我们可以确定谁可以依赖,谁比较努力,但却无法证明这些猜想,也没有量化的方法。
哲洛不闹
2018/09/18
5670
拿什么来衡量程序员的生产力?
如何提高程序员的生产率(上)
一、硬件资源 1) 办公环境 大部分开发团队都不把座椅家具视为一个非常重要的问题。拥有宽敞的桌面的环境,可以在桌上放置更多的东西:本子、笔、杯子、书本、打印的资料。更重要的是在和其他人沟通的时候,我们
韩伟
2018/03/05
1.2K0
如何提高程序员的生产率(上)
低效程序员的7个坏习惯
低效程序员的7个坏习惯 程序员总是想做到尽可能的高效,但很多人往往会觉得力不从心。这是因为他们在多年的编码过程中养成了一些不好的习惯。下面这7个坏习惯绝对是软件工程师需要改掉的。 1.缺乏激情 这
用户1289394
2018/02/27
1K0
低效程序员的7个坏习惯
糟糕的程序员面试
“谷歌式”面试真心是让人又爱又恨,它糟糕透了:好的应聘者落选,坏的应聘者背背答案就能通过,呵呵。
哲洛不闹
2018/09/18
3890
糟糕的程序员面试
一个十几年程序员给所有新老程序员的忠告
吉日噶拉(在外企、上市公司工作过,自己也创业失败过,遇到过很多失败挫折,甚至露宿街头,但是最后还是挺过来了),是一个十几年的程序员了,里面介绍了他的相关经历,以及他的一下经验,无论是对刚入门的程序员,还是工作了十年八年的程序员都有一些经验值得借鉴学习。这里我也把这本书中的部分精华分享给大家,希望对大家有帮助!
AWeiLoveAndroid
2018/09/03
1.9K1
一个十几年程序员给所有新老程序员的忠告
低效程序员的7个坏习惯
问题导读: 1.为什么程序员不喜欢测试代码? 2.为什么程序员喜欢说“不”? 3.为什么程序员不能和其他人友好相处? 程序员总是想做到尽可能的高效,但很多人往往会觉得力不从心。这是因为他们在多年的编码过程中养成了一些不好的习惯。下面这7个坏习惯绝对是软件工程师需要改掉的。 1.缺乏激情 这已经是一个老生常谈的话题了,但却是真理。写了多年的代码后,程序员们很可能会失去激情,只想着做一天和尚撞一天钟。更糟糕的是,这种情绪会像瘟疫一样传染给周围的人。 “即使写了一整天的代码,你也应该在午餐和下班后对它津
用户1410343
2018/03/27
7640
三件事让你成为效率高的程序员
本篇文章是一名很有经验的资深程序员所发表的一篇关于编程开发的感悟,他会用他自身程序员的经验告诉我们开发效率很高的程序员要做到哪几件事。 我们许多人开始编程的时候都有特定的目的。比如,我开始编程的时候,是让我能在睡觉和在学校的时候自动玩那个文字版的 MUD 游戏。我那时候是个写脚本的 13 岁小孩,甚至不知道什么是编程。我可能有一个想法,然后就写代码并测试 – 全部靠我自己。 当我们为其他人开发软件时就变得很困难,因为我们常常缺乏相同类型的动机和兴奋感,而它们驱使我们追求自己的愿望。我们没有自己的想法,而是花
沈唁
2018/05/24
6930
程序员学习需要攻克的8大障碍
作为一个时时关注小伙伴们学习情况的人,老九君看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。 大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来: 更享受学习经历 进步更快 碰到难题更执着,不轻言放弃 写代码时更独立 那么,这些障碍究竟是什么呢,我们又该如何攻克它们? 1.不正确的学习动机 在谈及壁垒之前,老九君想先着重说明学习动机的重要性。不要只是为了编程而学编程,也不要因为听说它很酷就来学编程。 你得因为要解决问题而学习编程,你得因为想要自动化和改善生活而学习编
老九君
2018/03/06
7930
程序员学习需要攻克的8大障碍
高效程序员的7个技能
最近阅读到一篇不错的文章,包括评论部分都有不小的参考价值。于是,将文章翻译出来与大家分享,并针对部分内容添加了个人的一些看法。以下部分为正文:
程序新视界
2020/06/08
4120
高效程序员的7个技能
老程序员都去哪了?
导读:在纽约,PyGotham每年召开之际,都会有超过600名程序员聚集在一起讨论工作。
IT阅读排行榜
2019/04/25
5830
老程序员都去哪了?
相关推荐
程序员编程障碍
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档