Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >成为优秀程序员的10个技巧

成为优秀程序员的10个技巧

作者头像
我就静静地看
修改于 2018-09-12 07:25:19
修改于 2018-09-12 07:25:19
63400
代码可运行
举报
文章被收录于专栏:技术翻译技术翻译
运行总次数:0
代码可运行

我最近在接受采访时被问如何成为优秀程序员。这是一个有趣的问题,我认为如果我们应该遵循一些准则 - 我相信 - 无论我们的天赋如何,我们都可以成为伟大的程序员。事实上,这些准则不但适用于程序员,而且适用于所有专业人士。

1.学会如何问问题:

这些类型的程序员提出问题时的情况:

  • 完美主义者:特别是在询问一些开源工具的问题时,他们可能已经通过代码调试并找到了问题的真正原因。但即便没有,完美主义者会写一个问题的介绍,重现的步骤,甚至是一个建议的解决方法。事实上,完美主义者没有问题,只有答案。
  • 懒人:这是代码。哪里出错了?大家帮帮忙吧。
  • 经理:对于这种类型,时间就是金钱。问题必须简短。因为必须保持问题简短,大多数情况下,很多重要的细节都会缺失,这只让程序员咨询他细节的详情。然后,经理(自然感到失望,因为答复的不是答案,而是一个新问题)将再次发送一条短信,并要求更加好的答案。这可以来回走了很长一段时间。最后,可能需要1-2周才能真正得到答案。
  • 只会抱怨的人:这类人不会提问,他们只会抱怨,直到问题消失。

到目前为止,应该清楚的是,一个准备充分的问题(简洁,但有足够的细节)将产生更好的答案。

2.学会如何避免提出问题

事实上,大多数情况下,最好避免提问。我们可以自己搞清楚。当然,并非总是如此。许多事情,根本无法得知,通过询问领域专家,你会找到最快捷,最有效的成功之路。但通常,尝试自己学习有一些好处:

  • 学习它是“艰难的方式”,这是更好的记忆的方式 -,我们会更好记住我们学到的东西。
  • 为自己学习一些东西更有意义。
  • 通过推迟提问(至少一段时间),可以收集更多相关信息,这些信息可以提供给可能能够回答你问题的人。想想“完美主义者”。花更多的时间先寻找细节,然后回答问题。
  • 通过学习后再提出问题,你会更好地提出问题。而这需要更多的时间。

3.不要在质量上妥协

Reddit最近发表了一篇非常有趣的文章,是关于破窗效应的。文章的意思是永远不要在质量上妥协。永远不要变成懒人。这是文章的引用:

“当我们采取某些捷径来在最短的时间内交付一些东西时,我们的代码会反映出我们的粗心大意,我们的开发人员(来自同一个团队或者未来的团队)会想:我们生产的代码质量差一点马虎一点没关系。一点一点地,我们的应用程序将开始不可阻挡地恶化。“

事实上,这不是为了完美。有时,破窗效应可能会被推迟。但通常情况下,允许窗户被打破并保持断裂,我们会产生一种没有人重视的感觉。不是我们的程序员,不是我们的客户,不是我们的用户,不是我们的项目经理。这是一种态度,因此是专业的核心。本杰明富兰克林怎么说呢:

“在低价的甜蜜被遗忘之后,质量低劣的苦味仍然存在。”

这对所有事情都是如此。

4.程序应该是确定性的。

在理想的世界中,软件中的一切都是“确定性的”。我们都是功能性程序员,编写无副作用的纯函数。像String.contains()。无论你执行以下操作多少次:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
assertTrue(“ABCDE.contains(“BC” ));

预期的结果总是相同的。所有状态将对此计算完全没有影响。这是确定性的

我们也可以在自己的程序中这样做,而不仅仅是在标准库中。我们可以尝试尽可能多地编写无副作用的确定性模块。这并不是我们选择何种技术的问题。确定性编程可以用任何语言完成 - 即使功能语言有更多工具可以通过更复杂的类型系统防止意外的副作用。但我展示的例子是一个Java示例。面向对象允许确定性。像PL / SQL这样的过程语言允许确定性。如果要在索引中使用函数,则要求函数是确定性的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE INDEX upper_first_name ON customer(upper(first_name));
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- Deterministic function here: -----------^^^^^^^^^^^^^^^^^^

所以,这是一个规范问题。

5.不要畏惧出现意外问题

墨菲定律是我们程序员应该始终关注的东西。作为软件工程师,我们知道它程序会出现意外或者会出错。因为我们的世界本来就不是确定的,所以我们正在做的业务要求也不是。我们会不可避免地进入非决定论的世界(“现实世界”),那里的东西会出问题。所以,不要畏惧。训练你内心的悲观主义来预见各种各样的事情就行。

6.永远不要迷信权威。

很多程序员喜欢将自己视为数学家,只有最纯粹的思想才能存在,而且他们必然是正确的。

但那是错的。我们的专业是建立在数学上的,但除非你进入类别理论或关系代数的世界,不然我们就处于现实世界商业要求的实用世界。坦率地说,这非常不完美。让我们看看一些最流行的编程语言:

  • C
  • Java的
  • SQL

你是否真的认为这些语言真的只是偏向数学?如果是这样,让我们​​讨论分段错误,Java泛型或SQL三值逻辑。这些语言是实用主义者构建的平台。所有这些都有一些非常酷的理论背景,但最终,他们必须完成这项工作。

建立在语言之上的所有东西都是如此:库,框架,  设计模式,甚至架构。没有什么是对的或错的。一切都是为某些环境设计的工具。在其上下文中考虑该工具。永远不要将该工具视为一个独立的存在理由。我们不是为了艺术而艺术。

所以,不要怀疑:

  • XML
  • JSON
  • 功能编程
  • 面向对象的编程
  • 设计模式
  • 微服务
  • 三层架构
  • DDD
  • TDD

鉴于某种情况,所有这些都是很好的工具,但它们并不总是成立。通过保持好奇心,你将成为一个更好的程序员,并知道何时使用这些工具中的哪一个。

7.去实践

你怎么能成为一名优秀的程序员?通过实践。伟大的软件不是一天写成的,受欢迎的人不是我们这个时代唯一的英雄。我遇到了许多没有人知道的优秀程序员,因为他们过着私人生活,解决小公司的问题。

但优秀的程序员都有一个共同点:他们会去实践。他们会练习。他们每天工作以变得越来越好。

想要在SQL上变得更好?做吧!尝试每天编写一个带有一些新功能的SQL语句。使用窗口功能。分组集。递归。分区外连接。MODEL和/或MATCH_RECOGNIZE子句。它不必每次都使用,但这种做法是值得的。

8.专注于一个方向

可能有极少数“优秀”的完整堆栈开发人员。但相比之下,大多数完整的堆栈开发人员都是比较平庸的。当然,一个小团队可能只需要其中的一小部分,他们可以涵盖很多业务逻辑,以快速启动一个新软件。但是一切都会非常草率。也许这对于最小的可行产品阶段来说已经足够好了,但从长远来看,会有更复杂的问题,全栈开发人员没有时间进行正确分析(或预见!)。

你应该关注一个方向,并且做好它。

9.保持兴趣和好奇心

虽然你应该主要关注一个方向,但你不应该完全忘记其他方向。你不可能深刻理解全部的SQL,扩展,低级性能,CSS,面向对象,需求工程,架构等等(见提示#8)。这是不可能的。但你至少应该理解每一个的本质。你应该了解SQL何时是正确的选择(何时不是)。低级别性能调整很重要(如果不重要)。CSS原则上如何工作。面向对象,FP等的优势。

你应该花一些时间玩一下这些(以及更多)概念和技术,以更好地理解它们为什么重要。知道何时应用它们,然后找一个专家来实际执行工作。

通过使用新的范例和技术,你会开始思考完全不同的思维方式,并且很有可能,你将能够以这种或那种方式在日常工作中使用它。

10.保持简单

爱因斯坦说:

“一切都应尽可能简单,即使他们并不简单。”

没有人能够处理巨大的复杂度。不单单是软件方面,还包括生活的任何其他方面。复杂度是好程序的杀手,因此简单性对好程序帮助很大。这很容易明白。但难以实施。简单是需要花费大量时间和实践才能识别和生成的东西。

最简单的规则之一是使用只有少量参数的方法/函数。我们来看看。String.contains()方法是合格的。我们可以编写"abcde".contains("bcd")并且无需阅读任何文档,每个人都会立即了解这是什么以及为什么。该方法只做一件事。没有复杂的上下文/设置/其他参数可以传递给方法。没有“特殊情况”,也没有任何警告。

同样,在库中生成简单性比在业务逻辑中实现简单要容易得多。我们能实现吗?也许可以。通过练习。通过重构。但就像优秀的软件一样,简单性不是一天就建成的。

原文标题《10 Tips on How to Be a Great Programmer》,

作者: Lukas Eder

译者:我就静静地看

不代表云加社区观点,更多详情请查看原文链接

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
成为伟大程序员的 10 个要点
最近我在接受采访时被问到我关于成为一名伟大程序员的见解。这是一个有趣的问题,我认为我们都可以是伟大的程序员,无论我们的天赋如何,如果我们遵循一些规则的话——我相信——这应该是常识。实际上,这些规则并不只适用于编程领域,也适合任何专业。
哲洛不闹
2018/09/14
4480
成为伟大程序员的 10 个要点
优秀程序员的10个习惯
在这个世界上,有数百万的人热衷于软件开发。 他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。 经过一段时间后,这些人也许能够成为一个优秀的编码人员。 他们会非常熟悉如何用计算机语言来完成自己的工作。 但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意。 如果你能让下面十个条目成为你的习惯,那么你才能真正算得上是优秀程序员。 1 学无止境 就算是你有了10年以上的程序员经历,你也得要使劲
wangxl
2018/03/09
8710
优秀程序员的十个习惯
作者:haoel blog.csdn.net/haoel/article/details/4013883 在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需要注意,如果你能让下面十个条目成为你的习惯,
程序工场
2018/07/03
3690
糟糕程序员和优秀程序员的区别?
企鹅号小编
2018/01/04
8380
糟糕程序员和优秀程序员的区别?
左耳朵耗子:这十个习惯,是我认为优秀程序员必须具备的!
在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。
陶朱公Boy
2023/09/11
3680
左耳朵耗子:这十个习惯,是我认为优秀程序员必须具备的!
对优秀程序员的思考
对优秀程序员的思考 人生总有目标和追求 不管是谁,活着总是有方向和追求的,差别可能是有些人“高尚”一些,有些人“低俗”一些,有些人对自己的方向没有那么坚定、今天定了明天可能就变了。 无论是短期或长期、
用户1289394
2018/02/28
6920
对优秀程序员的思考
成为优秀程序员(和人类)的101个技巧
作为一个编码者,意味着你需要搜索你问题的答案。通过有效地使用谷歌,你将节省很多开发时间。
Jimmy_is_jimmy
2023/05/24
2260
成为优秀程序员(和人类)的101个技巧
糟糕程序员和优秀程序员的区别?
软件蚕食一切,未来属于程序员。所以人人都想当程序员。但是并不是每个人都能当好程序员。在你做出决定前还是先看看自己能不能当好程序员吧。
蜻蜓队长
2018/09/29
5030
糟糕程序员和优秀程序员的区别?
成为优秀程序员的10个有效方法
一个优秀的程序员就是那种即使是过单行道都要往两边看的人。 ——Doug Linder 作为一个在IT行业的软件程序员,每天促使我去上班的动力就是对编程的乐趣和激情。但是为了激发乐趣并获得永恒的快感,我们需要学习和遵守一些基础知识以成为一名优秀的程序员。 当然我总结的这些东西没有那么神,你说你要想学了之后就一定可以成为优秀程序员,那是不可能的。这只是从我的经验角度出发提供的一些捷径。对于优秀程序员的定义,此处可以理解为能开发出超棒的IT解决方案并且能促进行业整体发展的程序员。 1.掌握基础知识 不管任何行业和
Crossin先生
2018/04/16
6430
十个让你成为优秀程序员的有效方法
作为一个IT行业的软件程序员,每天驱使我们日复一日的辛勤工作的,是来自我们对编程的兴趣和激情。但是要让编程变得始终有趣,我们必须学会坚持某些成为优秀程序员的基本原则。
用户4962466
2019/10/10
3940
如何成为一名优秀的 Java 程序员
许多Java开发人员问我:"如何成为一个更好的程序员?" ,"我如何提高自己的编程技能?" 或者 "我擅长Java开发,但不擅长解决问题的技巧"等,这是大多数程序员的现状。 在这行有很多编程语言专家
开发者技术前线
2020/11/23
6080
如何成为一名优秀的 Java 程序员
程序员如何保持优秀
5.有准备,有愿望,有能力在任何时候深入到多种技术中。你必须知道表象下的底层技术原理。在“各个技术层面的理解深度”和“编程能力”有着密切的联系。
IT云清
2022/05/07
2680
如何成为优秀程序员?
同事和粉丝们很多人都让我莫名的认为我是一名非常资深厉害的程序员。我觉得可以分享一下,自己多年如一日的编程“思维”。
JavaEdge
2024/05/25
1170
成为更优秀程序员的关键:更多的阅读
成为更优秀程序员的关键:更多的阅读 虽然我一直以来都很享受于读书,但我总是很难挤出时间来阅读。而当真的空闲了,我通常会去阅读小说、自传,或一些怪癖但有趣的东西。我的Kindle电子书阅读器上到目前为止都是一些我最喜欢的技术。我仍然觉得不可思议的是,通过一个小小的设备我就能随身携带一个图书馆,只要电池能够续航一段时间(例如一个月)。 但是我在技术上的阅读真的很缺乏。当然,我也读过经典名著,例如《Clean Code》,但仅此而已。我一直是一个“有什么问题就谷歌”的人。技术书籍太枯燥乏味了!所以通常我会避开阅读
用户1289394
2018/02/27
5000
成为更优秀程序员的关键:更多的阅读
未来还需要程序员嘛?
很多人认为计算机变得如此智能,所以在不久的未来将不再需要程序员。另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题。甚至不少程序员对他们是做什么的都没有清晰的概念。在这篇文章中,笔者想
程序员互动联盟
2018/03/14
7630
未来还需要程序员嘛?
优秀程序员的 18 大法则
优秀程序员的 18 大法则 经过多年的积累,我发现,下面这些基本的指导法则,可以帮助我成为一个更加高效的程序员。 程序设计法则,与设计和工程的原理密切相关。下面这些编程法则帮助我让我获益匪浅,所以我想
用户1289394
2018/02/27
6800
优秀程序员的 18 大法则
8个方法让你成为更优秀的程序员
8个方法让你成为更优秀的程序员 现在是时候认真考虑提高你的编程技能了! 这是给自己设定的一个简单的职业生涯提升目标,但是“成为一个高薪程序员”不是一个简单的目标。一方面,“我要变得更优秀”意味着你知道
用户1289394
2018/02/27
5440
8个方法让你成为更优秀的程序员
程序员励志名言
程序员励志名言    1、作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。   2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。   3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。   4、程序不是年轻的专利,但是,他属于年轻。   5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。   6、一个好汉三个帮,程序员同样如此。   7、一个100行的代码调试都可能会让程
汤高
2018/01/11
1.4K0
如何成为优秀的程序员 如何成为优秀的程序员
无论你是多么优秀的程序员,无论你从事何种职业,基础都是最重要的,任何高深的理论,任何看似复杂的任务,都是通过基础一点点解决的,一个人只有将基础打牢,他才能更上一层楼。
程序那些事儿
2023/03/07
3080
如何成为优秀的程序员
如何成为优秀的程序员
30KiOS程序员的简述:如何成为高级开发人员
本篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员,编程人员和程序员(或者你可能刚刚开始,但希望你能看到你的路径)。本文适合那些有着简单愿望的人:你想成为一名高级开发人员,并希望在你的领域中脱颖而出。在阅读完这篇文章后,您将获得一组具有最佳资源列表的路径,供您升级并成为高级开发人员。
原来是泽镜啊
2018/07/16
6520
相关推荐
成为伟大程序员的 10 个要点
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验