Bryanedds 自称是一名软件异教徒。近日,他 在Medium上历数了现代软件开发中存在的反模式 。本文将扼要进行介绍。
在软件开发工作中,考虑越长远,软件就会越健壮,成本就会越低,痛苦就会越少。但由于经济环境驱使,管理者采用了一种短视的思维方式。软件系统的完整性不仅没能成为应该受到尊重的约束,反而被看成了软件开发的障碍。
不管你多么高效,不管你加了多少班,或者与同事合作得多好,只要你的想法与管理层出现了分歧,你就会被钉上十字架。因为你的工作是帮助管理层达成下一季度的预期。你必须修复上一季中本可以避免的缺陷,或者仅仅重构几段不相干的代码实现下一个拙劣的特性。
成为一名软件架构师的资格不是技术,而是具备强迫一线工程师以不可持续的方式实现软件功能的能力,因为这是满足短视的管理层所必须的,而构建精心设计的系统就不再是软件架构师的首要任务了。
让你获得软件开发职位的不是你的技术能力,也不是你同其他工程技术人员合作的能力,因为日常工作只需要你很小的一块能力。真正让你获得职位的是你对莫名其妙的Bug和混乱代码的忍受能力。你不是一个问题解决者,而是一名问题忍受者。
业务和管理人员短视,但与你共事的人比他们更短视。管理人员会考虑下一个报告期,而他们可能只考虑下一个工资期。
有人从不抱怨代码,也从不“浪费时间”梳理代码,并且总是最先终止“有害”的讨论。一旦团队的代码库变得混乱,他就会取代现有的软件架构师,成为新的负责人。
集体代码所有是了让开发工作不中断,但它允许任何人以任何方式修改任何代码。这会导致“ 公地悲剧 ”。而实际上,有时候“阻塞”是必要的,高级工程师可以藉此防止代码库遭受短期思维侵害,确保软件以一种可持续的方式开发。Bryanedds认为,集体代码所有是自JavaScript出现以来最损害代码的事。
方法论无助于创建更好的软件,敏捷就是一个很好的例子。它开始时是一种合理的软件开发方式,但现在却变成了“ Psych 101 MBA Bullshit ”。
此外,Bryanedds还指出,不要期待新团队/项目中不存在这些反模式,商业软件开发是一种底线竞争,没有人会在乎开发者遭受的痛苦。
感谢郭蕾对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 )。