写点什么

优秀开发者应该避免的五个错误

  • 2021-07-06
  • 本文字数:2170 字

    阅读完需:约 7 分钟

优秀开发者应该避免的五个错误

本文最初发布于 Rafael Quintanilha 的个人博客,经原作者授权由 InfoQ 中文站翻译并分享。


伟大的数学家 Carl Jacobi 曾说过“反过来想,一定要反过来想”。在他看来,逆向分析问题有助于找到最佳解决方案。有鉴于此,伯克希尔·哈撒韦公司传奇合伙人查理·芒格在哈佛大学做了一场精彩的分享,主题是关于探讨“怎样才能不成功”。由此,这让我开始思考——有什么最简单的方法能让你成为一名糟糕的开发者?你接下来将要看到的这些原则很主观,不尽全面,也没什么顺序。不过,如果你遵循这些原则,那么我敢保证你会成为一名糟糕的开发者。


我之所以把它们称为“原则”,是因为我在本文不关心技术问题。记住,反向思考。简言之,知道不要做什么后就更容易搞清楚究竟要做什么了,而且更稳妥。因此,请留意下面这些原则,并决定自己想成为哪种开发人员。

从来不做自己的代码存在 Bug 的假设


虚荣,绝对是我最喜欢的原罪。——阿尔·帕西诺,《魔鬼代言人》


软件开发是为数不多让你有机会经常犯错的领域。如果错误的影响不大,那么待在这样的领域挺不错。


不过,别忘了,你可以成为公司最好的开发人员,只要相比之下,你比其他人犯的错少就行。但是,你所犯的错误的绝对数量可能还是不小,这在所难免。好消息是,这没什么问题——机器通信需要很高的准确性,1 万行的代码库,一句错误就可能出现严重的问题


但是,因为你自觉比其他开发者优秀,这可能是真的,所以你开始考虑,自己不会犯错。或者说,即使出了什么问题,也跟你没关系。


问题是,很多时候,你都有责任。你编写了糟糕的代码,在审核过程中忽略了它,或是在计划时没有预见到,没关系。人人都可能犯错。


不过,如果你从来都不认为自己会出问题,那么你就会把责任推到其他人或东西上——同事、你用的愚蠢的框架、过时的浏览器或者老旧的操作系统。任何东西都要承担责任,除了你。而且,如果你从来都不承认错误,那么你就会像被诅咒了一样,永远也不会进步。作为一名开发人员,不进步是非常致命的。

编写代码时不用脑子


真理只能通过思考来领悟。——托马斯·阿奎那


作为人类社会的一员,我们学到的第一件事就是要衡量自己行为所产生的后果。这同样适用于编程。毕竟,你的工作是通过代码为人们创造价值。如果你忘了这点,就成了官僚主义者。而要让官僚主义者成为一名优秀的开发者,这会相当困难。


如果你只是无脑的做事,那么跟机器有什么区别。


在不远的将来,你就可能被人替代(被更善于思考的人,或是被可以降低成本的机器)。务必要理解分配给你的任务。除非,你想成为一名糟糕的开发者。

缺乏判断力


掌控自己的命运,否则就会被别人掌控。——杰克·韦尔奇


一名优秀的开发人员,却无法清楚地报告他所面临的问题,这种情况我还没遇到过。这是因为计算机非常听话,它会按照自己收到的准确指令行事。如果你在调式代码时有很好的判断力,就可以自己发现问题。但是,如果你没有那样的判断力,那么在解决问题时,别人的帮助可能会更有效。


记住,机器非常蠢,你必须得告诉它应该怎么做。在工作中,你要给它们发很多很多指令。终有一天,你会发出错误的指令。如果你不能有效地查看代码,并识别出错误的指令,那么你将会是一名糟糕的开发者。

热衷于写更多的代码


没有它们的时候,我们才开始意识到,许多东西并非必要。我们用它们,不是因为我们需要,而是因为我们拥有。——塞内加


为应用程序有多少行代码而自豪,这种情况非常常见,尤其是在新手开发者中。事实上,这是一个强烈的信号,你要成为一名糟糕的开发者了。


对于机器而言,每行代码都是一条指令。指令的数量越多,犯错的可能性也越大。同时,这也意味着,你需要具备更多的知识才能更改代码的行为。代码越多就会越让人望而却步。没有人想读、让人碰都不敢碰的代码是糟糕的代码。


我前面提到过”否定之否定“,很简单,就是”越少越好“。原因如下:把事情搞砸的方法远比改进方法多得多。如果你不想惹麻烦,就要尽可能降低弄乱代码库的可能,反之,糟糕的开发者会想方设法加入更多内容。


请记住,最终每行代码都会被阅读、测试、更改、增加甚或删除。显然,你的工作与代码量是成正比的。如果有人在不必要的情况下增加自己的工作量,那么他/她就是一名糟糕的开发者。

为机器写代码而不是为人


让我害怕的是,我们的技术已经超越了我们的人性,这一点已经变得非常明显。——爱因斯坦


最后也是成为一名糟糕的开发者最有效的方式。在我看来,为机器写代码而不是为人,是最容易犯的错,代码没有注释,变量名不准确、不一致,忘了缩进,等等。


要记住,机器只理解机器代码。其他非 0 非 1 的东西都是为了让人更容易理解代码。如果你不注意这一点,就会给人带来麻烦。要想成为一名糟糕的开发者,这可谓是一种完美的方式。


想一想,什么样的文章让你感到愉快。通常是简明、清晰、直接、有意义、前后一致的。无法理解作者的用意,叙述没有意义,写得很差或者格式很奇怪,你不会喜欢读这样的文章。同样,代码没有意义,需要付出巨大的努力才能掌握,也是打击读者积极性的绝佳方式。一个让读者灰心的作者是一名糟糕的作者,一个让读者灰心的开发者也无疑是一名糟糕的开发者。

写在最后


如果你想要成为一名糟糕的开发者,那么我希望上述原则对你有帮助。但是,如果你改变主意,想要成为一名优秀的开发者,那么你现在也已经知道应该避免什么。


原文链接:


https://rafaelquintanilha.com/how-to-become-a-bad-developer

2021-07-06 14:361557
用户头像

发布了 742 篇内容, 共 481.5 次阅读, 收获喜欢 1549 次。

关注

评论

发布
暂无评论
发现更多内容

鸿蒙NEXT开发案例:随机密码生成

zhongcx

Java对象序列化流详解

百度搜索:蓝易云

NocoBase 本周更新汇总:优化移动端样式

NocoBase

开源 低代码 零代码 无代码 版本更新

解锁电商新视野:淘宝商品详情API接口的实时属性与价格数据探索

代码忍者

API 接口 pinduoduo API

鸿蒙开发Hvigor插件动态生成代码

龙儿筝

「工作流Agent」亮相百度世界大会,百度智能云千帆 AppBuilder 产品功能重磅升级

Baidu AICLOUD

rag

如何在ppt中添加数字图标?推荐这款在线版PPT软件!

职场工具箱

效率工具 PPT 办公软件 AIGC AI生成PPT

TCP的滑动窗口与拥塞控制

百度搜索:蓝易云

一招带来远程办公新体验

芯盾时代

远程办公 终端安全 数据安全 零信任

Redis中常见的数据类型及其应用场景

EquatorCoco

数据库 redis

实时多模态 AI 的 N 种新可能丨实时互动和大模型专场@RTE2024回顾

声网

操作系统加码主动防护:数智化有了“安全底座”

Alter

操作系统 openEuler AI 基础设施

人员关系管理系统(源码+文档+部署+讲解)

深圳亥时科技

tcp_v4_connect函数的解析

百度搜索:蓝易云

班级招生平台(源码+文档+部署+讲解)

深圳亥时科技

Symantec Endpoint Protection 14 (SEP14病毒安全防护软件) v14.3.8

理理

更快、更稳、更优,揭秘火山引擎全站加速 DCDN 规模容器化最佳实践

火山引擎边缘云

容器 云原生 边缘计算 全站加速

缓存与主副本数据一致性系统设计方案(上篇)

HAibiiin

系统设计 分布式系统 缓存一致性 构架 主从架构

Flink Forward Asia 2024 上海站|探索实时计算新边界

阿里云大数据AI技术

大数据 flink FFA FFA2024

解锁电商数据新纪元:一键接入1688 API,精准采集商品详情实战指南

代码忍者

API 接口 API 测试 pinduoduo API

全球司库 | 科学管理企业资金结算,建立管理平台至关重要!

用友智能财务

数据资产 财务 企业数智化 全球司库

可视化工具对比:JimuReport VS QuickBI

JEECG低代码

数据可视化 数据大屏 报表工具 仪表盘设计

鸿蒙hvigor构建任务依赖与生命周期简介

龙儿筝

Debian环境下搭建STM32开发环境

百度搜索:蓝易云

Scrum敏捷开发的核心:深入解析Product Backlog

代码忍者

鸿蒙NEXT开发案例:随机数生成

zhongcx

易未央-AI風雲:1.命運的起點

因田木

AI 陰陽五行 烏托邦 易未央 命理

Linux中软链接与硬链接的作用、区别、创建、删除

百度搜索:蓝易云

会员高性价比的远程控制,我选贝锐向日葵

科技热闻

聊天机器人API:腾讯、百度、阿里云接口对比

幂简集成

聊天机器人 API

易未央-AI 風雲:2. 木生火陰陽交錯

因田木

AI 五行算法

优秀开发者应该避免的五个错误_语言 & 开发_Rafael Quintanilha_InfoQ精选文章