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

点击上方“程序员大咖”,选择“置顶公众号”

关键时刻,第一时间送达!640?640?wx_fmt=gif










扫描二维码关注公众号,回复: 2329579 查看本文章






































































































































































































































































































    先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明明只是灵武七重,而在这两个月不到的时间,连跳两重修为,又跳过一个大境界,踏入了元武一重,这般进步速度,简直堪称变态啊。


    “这楚枫不简单,原来是一位天才,若是让他继续成长下去,绝对能成为一号人物,不过可惜,他太狂妄了,竟与龚师兄定下生死约战,一年时间,他再厉害也无法战胜龚师兄。”有人认识到楚枫的潜力后,为楚枫感到惋惜。


    “哼,何须一年,此子今日就必败,巫九与龚师兄关系甚好,早就看他不顺眼了,如今他竟敢登上生死台挑战巫九,巫九岂会放过他?”但也有人认为,楚枫今日就已是在劫难逃。


    “何人挑战老子?”就在这时,又是一声爆喝响起,而后一道身影自人群之中掠出,最后稳稳的落在了比斗台上。


    这位身材瘦弱,身高平平,长得那叫一个猥琐,金钩鼻子蛤蟆眼,嘴巴一张牙带色儿,说话臭气能传三十米,他若是当面对谁哈口气,都能让那人跪在地上狂呕不止。


    不过别看这位长得不咋地,他在核心地带可是鼎鼎有名,剑道盟创建者,青龙榜第九名,正是巫九是也。


    “你就是巫九?”楚枫眼前一亮,第一次发现,世间还有长得如此奇葩的人。


    巫九鼻孔一张,大嘴一咧,拍着那干瘪的肚子,得意洋洋的道:“老子就是巫九,你挑战老子?”


    “不是挑战你,是要宰了你。”楚枫冷声笑道。


    “好,老子满足你这个心愿,长老,拿张生死状来,老子今日在这里了解了这小子。”巫九扯开嗓子,对着下方吼了一声。


    如果他对内门长老这么说话,也就算了,但是敢这么跟核心长老说话的,他可真是算作胆肥的,就连许多核心弟子,都是倒吸了一口凉气,心想这楚枫够狂,想不到这巫九更狂。


    不过最让人无言的就是,巫九话音落下不久,真有一位核心长老自人群走出,缓缓得来到了比斗台上,左手端着笔墨,右手拿着生死状,来到了巫九的身前。


    “我去,这巫九什么身份,竟能这般使唤核心长老?”有人吃惊不已,那长老修为不低,乃是元武七重,比巫九还要高两个层次,但却这般听巫九的话,着实让人吃惊不已。


    “这你就不知道了吧,巫九在前些时日,拜了钟离长老为师尊,已正式得到钟离长老的亲传。”有人解释道。


    “钟离长老?可是那位性情古怪的钟离一护?”


    “没错,就是他。”


    “天哪,巫九竟然拜入了他的门下?”


    人们再次大吃一惊,那钟离一护在青龙宗可是赫赫有名,若要是论其个人实力,在青龙宗内绝对能够排入前三,连护宗六老单打独斗都不会是他的对手。


    只不过那钟离一护,如同诸葛青云一样,也是一位客卿长老,所以在青龙宗内只是挂个头衔,什么事都不管,更别说传授宗内弟子技艺了,如今巫九竟然能拜入他老人家门下,着实让人羡慕不已。


    “恩怨生死台,的确可以决斗生死,但必须要有所恩怨,你们两个人,可有恩怨?”那位长老开口询问道。































































































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


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


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


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


640?wx_fmt=jpeg


编程效率障碍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,虽然说相当快,但是只有当你重新学习所有关于死锁的经验教训之后,知道线程优先的时候才能发挥作用。世上没有免费的午餐,工具虽好但都是有代价的。


640.jpeg

  • 编译:码农网 – 小峰

  • www.codeceo.com/article/15-barriers-to-better-code.html

  • 程序员大咖整理发布,转载请联系作者获得授权

640?wx_fmt=gif640?【点击成为源码大神】

猜你喜欢

转载自blog.csdn.net/px01ih8/article/details/81151251
今日推荐