10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

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

  • 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:361714
用户头像

发布了 833 篇内容, 共 580.9 次阅读, 收获喜欢 1597 次。

关注

评论

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

怎么用Redis分布式锁才能确保万无一失?,15个经典面试问题及答案

Java 程序员 后端

懵逼!阿里一面就被虐了,幸获内推华为技术四面,kafka高性能原理

Java 程序员 后端

我画了19张图,彻底帮你搞定Redis,mybatisgenerator教程

Java 程序员 后端

我出息了,给 JDK 上报了一个 BUG,mongodb入门到精通

Java 程序员 后端

我在北京已经几年了,Java百度网盘

Java 程序员 后端

总是说spring难学?看完这些spring的注解及其解释,对你来说就是So-easy!

Java 程序员 后端

意犹未尽的一篇Nginx原理详解,面试官看了都忍不住点赞(1)

Java 程序员 后端

成功拿到大厂offer的我熬夜整理了这份Java高频面试题(含答案)

Java 程序员 后端

我上高中的弟弟都能看懂的Docker学习教程,你看看讲的怎么样

Java 程序员 后端

我见过最详细的Redis解析:不懂Redis为什么高性能?如何做高可用

Java 程序员 后端

快醒醒吧!互联网大厂面试必问的JVM底层原理,你还搞不清楚

Java 程序员 后端

怎样成为全栈工程师(Full Stack Developer),sqlproformysql使用教程

Java 程序员 后端

我丢,去面试初级Java开发岗位,被问到泛型,mysql索引原理面试题

Java 程序员 后端

我是全网最硬核的Java中间件领域作者,CSDN最值得关注的博主,大家同意吗

Java 程序员 后端

手把手教你应用三种工厂模式在SpringIOC中创建对象实例【案例详解】

Java 程序员 后端

手撕ArrayList底层,透彻分析源码,mysql索引优化面试题

Java 程序员 后端

怎样成为全栈工程师(Full Stack Developer)(1),已拿offer

Java 程序员 后端

总结历年各大厂面试官传授的面试经验+阿里P8级架构师整理的Java高频核心知识点

Java 程序员 后端

我用思维导图整理好了Java并发基础知识,还学不会就没救了!

Java 程序员 后端

恕我直言,我怀疑你们并不会用 Java 枚举,java分布式架构面试题

Java 程序员 后端

成功入职阿里,薪资翻倍~ 感谢这份顶级版,linux教程入门教程PDF

Java 程序员 后端

我,48岁,上海外企高管,9次Java面试经验总结

Java 程序员 后端

扫盲帖:聊聊微服务与分布式系统,Java校招面试指南

Java 程序员 后端

技术分享成就现在的我:中间件兴趣圈荣获CSDN2020博客之星亚军

Java 程序员 后端

怎么可能?面试会被Spring难住?Spring框架从入门到精通

Java 程序员 后端

意犹未尽的一篇Nginx原理详解,面试官看了都忍不住点赞

Java 程序员 后端

我凭借这1000道java高频真题,顺利拿下京东、饿了么,java高级开发面试总结

Java 程序员 后端

手把手讲解-一个复杂动效的自定义绘制3,最全153道Spring全家桶面试题

Java 程序员 后端

技术干货:单体,SOA,微服务,分布式,集群架构详解,java开发面试简历

Java 程序员 后端

想进阿里、京东?这些多线程并发的技术要点你需要知道,Java程序员怎么优雅迈过30K+这道坎

Java 程序员 后端

成为架构师之前,你一定要懂的-CAP-定理,Java程序员必备书籍

Java 程序员 后端

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