战五渣程序员的五项必备技能

2023-10-07 19:59

本文主要是介绍战五渣程序员的五项必备技能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文翻译自 Ravi Shankar Rajan 的 5 Toxic Habits That Will Make You a Bad Developer.,请对照原文阅读。

你无法改变自己的未来,但你可以改变自己的习惯,而你的习惯肯定也会改变你的未来。

“习惯的束缚太轻了,以至于它们变得沉重而无法被打破。”
— 沃伦·巴菲特

当我们因为自己的不良习惯感到不适时,就会四处寻找解决方案。我们会去翻书或求助于他人,期望能知道如何去摆脱它。然而实际情况是,打破任何不良习惯仅取决于“镜子里的人(the man in the mirror)”。你期望变得更好,做一些不同的事情。一旦你掌握了改变的范式,摆脱不良习惯就变得很容易。

如同生活一样,编程也有好习惯和坏习惯。能否成为一个优秀的程序员,取决于你能否有效地控制编码中的不良习惯。你反复做的事情会影响你的行为,你所相信的事物以及对整个世界的看法。简而言之,养成好习惯还是坏习惯,都取决于思维。

如果你意识不到自己的所做所为正在破坏你的工作,那么坏习惯就很难消除。你仍然自我感觉良好,并且会继续陷入效率低下和代码质量差的泥潭。

作为一个自学成才的开发人员,我对于不良习惯带来的后果可谓经验丰富。但是现在我知道自己犯了什么样的错误,并学会了避免将来犯下同样的错误。我仍在学习,并且日新月异。

这里有一些有害的习惯,这些习惯会使你成为一个糟糕的开发人员。

没有计划的编码

“我总是发现计划是无用的,但是计划却又是必不可少的。”
— 艾森豪威尔将军

不幸的是,许多开发人员(包括我自己)都常常会想:“我可以轻而易举地做到这一点”,而最终结果却很差。我们没有认真思考就开始工作,最后到项目截止时间时,还有一堆的需求没完成,而代码也是乱七八糟的。

而如果在编码之前能花些时间来分析需求,将需求分解为可管理的模块,并与同事和业务分析师进行一些头脑风暴,然后依此提出一个渐进式计划,则可以帮助我们创建高质量的代码。利用纸笔,或白板,甚至是和小黄鸭交谈,然后提出一个可跟踪的有序的计划。

请记住,你无法计划所有事情。解决问题的第一个计划可能是完全错误的,不过没关系。重要的是,当你完成初稿时,你能清楚地知道差距在哪里,以及需要在怎样来填补这些差距。计划很重要,但计划也会不经意间发生变化。

对代码审查心怀戒备

“我们大多数人的问题在于,我们宁愿被赞美毁灭,也不愿受到批评的拯救。”
— 诺曼·皮尔(Norman Peale)

批评可能令人无法接受,但却是必要的。它与肉体上的疼痛一样,能让人们关注到自身的不健康状态。你可能自认为是世界上最好的开发人员,但你的代码的表现却不尽然。你越早意识到这个事实,就能越快成为一个优秀的程序员。

你需要谦虚地对待在代码审查过程中检测到的错误或缺陷,并确保后续不会再犯同类的错误。糟糕的开发人员对此却无动于衷,最终只会害人害已。

优秀的开发人员愿意将自己的代码拿出来公开讨论,并不断改进。他们不会被自己的牛逼的解决方案蒙蔽,愿意接受自己的无知,并且不断地学习新事物。

表现得无所不知

不了解所有事情,有时候是件好事
— 尼尔·盖曼(Neil Gaiman)

糟糕的开发人员不承认自己无知的原因有很多。害怕被嘲笑,自我膨胀,害怕受到谴责等。但不管是什么原因,最终他们在知识获取和声誉上都会是失败者。行为经济学畅销书《狂热经济学》的作者斯蒂芬·J·杜布纳和史蒂文·D·莱维特提出这样的观点:最难说有三个字不是 “I love you”,而是 “I don’t know”。

需要记住,说 “I don’t know” 是完全可以的。这比掩盖你缺乏某些知识/技能要好得多。这里的关键是要知道如何解决问题 – 可以通过询问他人或进一步调查研究。

与其执着于应该无所不知的乌托邦式梦想,不如将世界视为学习的基础。你应该随时随地接受新的,不同的或变化的观点,并根据变化的情况调整解决问题的能力。

以代码行数来衡量进度

“通过代码行数来衡量编程进度就像通过重量来衡量飞机制造进度。”
— 比尔·盖茨

“我可以在一个通宵工作中编写10,000行代码”。

“你看到那个项目了吗?那都是我的。我为此写了30,000行代码”

“我有自己的编码风格。无论别人做什么,我都会按照自己的方式进行编码”

听起来很熟悉吧?这就是所谓的程序员自我。用自己的方式做事并重写现有代码可能会满足你的自我,但肯定不能满足项目的需求。

作为开发人员,你的工作应该是编写尽可能少的代码来满足需求。当得到一个新的功能需求时,应该首先问自己:“有人做过吗?我可以重复使用它吗?”借用现成的解决方案没有什么可耻的,因为任何软件的创建通常都是团队合作的结果。应该始终希望整个团队坚如磬石,而不只是个体的拼凑。

为自己省去一些麻烦。不要重复自己。不要在程序中重复相同或几乎相同的代码。而是将代码放入一个可以处理多种情况的类或函数中。如果有人已经为你做到了,那就无耻地去使用它。

推卸责任

优秀的人善于自省,自卑的人责备他人
— 唐·舒拉(Don Shula)

软件开发是一项团队运动。Agreed

软件开发是集体协作。Agreed

因此,我不对我的代码负责。Not OK

在开发人员中有些自大和傲慢的态度也不是什么秘密。因此,承认犯了错误并确认生产问题是由你编写的代码引起的,这需要非常谦虚和无私的态度。将问题归咎于他人很容易。但查找过去的代码并找出导致错误的原因对解决问题会更有效率。

大家都会重视那些对自己的代码负责并确保以后不会犯同样错误的开发人员。软件不可能永远是完美的。瑕疵将永远存在。关键是要控制缺陷,并追求卓越。

从现在开始,你应该努力使自己和他人的代码尽可能地可读。记住,如果你不敞开心扉来承认自己的错误,那实际上也得不到成长。

正如沃尔特·惠特曼所说的一样:

Be curious, not judgmental.

Android学习PDF+架构视频+面试文档+源码笔记


感谢大家能耐着性子看完

在这里小编也分享一份自己收录整理的Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

如果你有需要的话,可以点赞+评论关注我,然后加我VX:15388039515 我发给你
(或关注微信公众号“Android开发之家”回复【资料】免费领取)

这篇关于战五渣程序员的五项必备技能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160109

相关文章

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

提升PrestaShop外贸电商网站安全的几款行业必备工具

提升PrestaShop外贸电商网站安全的几款行业必备工具 PrestaShop发展历程 PrestaShop是一款优秀且强大的外贸开源电商软件,我们开始使用PrestaShop始于2009年,那时PrestaShop还是0.9版本:界面清新,性能强悍,扩展友好等特性,既没有Magento的笨重,也没有ZenCart的古老,更没有OpenCart的脆弱,因此PrestaShop如雨后春笋,迅速

zblog自定义关键词和描述,zblog做seo优化必备插件

zblog自定义关键词和描述,zblog做seo优化必备插件     首先说下用到的一款插件:CustomMeta自定义数据字段 ,我们这里用到的版本是1.1,1.1+版增加了列表页标签支持!     插件介绍:文章,分类等添加自定义数据字段。1.1+版适用于 Z-Blog 2.0 B2以上版本。     在zblog2.0beta1里面,这个插件是集成到了程序里面,beta2里面默认没有了

CTFHub技能树-Git泄漏-Index

目录 一、Git索引(Index)的基本概念 二、解题过程 主旨:使用git泄漏恢复源代码 方法一:使用GitHack手动恢复 方法二:直接使用Git_Extract获取网站源代码拿去flag   当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的Gi

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

作为刚从事Java开发的小白,需要掌握哪些技能

作为一个刚踏入Java开发世界的小白,面对各种技术和工具,你可能会觉得有点不知所措。但是别担心,我会给你一个简单清晰的路线图,让你可以有条不紊地掌握基本技能,逐步成长为一名Java开发者。 1. 扎实的Java基础 Java的基础是你迈向高级开发的重要基石,建议从以下几个方面着手: 语法和基础概念:比如变量、条件语句、循环、方法、数组、面向对象编程(OOP)等等。这些基础如同建房子的地基,越

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

Python基础—Python 中pip的8个必备命令

在Python开发中,pip是一个非常强大的包管理工具,用于安装和管理Python包。下面我将介绍8个pip的必备命令,并通过代码示例来讲解它们。 1. 安装包 pip install package_name 这个命令用于安装指定的Python包。例如,要安装requests库,你可以运行: pip install requests 2. 升级包 pip install --up

高效办公必备!图片转PDF功能,让工作更轻松

在数字化时代,将图片转换为PDF格式是一项非常实用的技能;无论是在工作、学习还是生活中,我们都可能遇到需要将图片转化为PDF格式的情况;今天通过这篇文章给大家分享四款好用的图片转pdf 的工具: 第一款:福昕转换器 这款专用于解决pdf与各种格式之间进行转换、合并以及音视频转文字等等各种需求的办公工具,其操作的界面非常简洁并直观,对新手伙伴非常友好;其次可以支持高达50个文件同时转换的意见批量