老程序员的20条至理名言

2024-01-29 10:48
文章标签 程序员 20 至理名言

本文主要是介绍老程序员的20条至理名言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这 20 条建议主要来自以下这些人的经验总结:

那些几乎总是在小的、精益的团队中工作的人,因为他们能用很少的资源做更多的事情;

那些重视工作软件开发而不是特定工具的人;

那些一直都在开展新的项目,而且还要兼顾维护一些其他系统的人;

那些将工程师的生产力当作第一要务,置于其他工作之上的人。

Justin Etheredge 表示,自己在过去 20 年的经历塑造了他对软件的看法,并产生了一些信念,他试图将这些信念缩减为一个可管理的列表,希望这些建议能给别人带来价值。

Justin Etheredge 的 20 条经验分享

  1. 我还是什么都不懂

我们中的大多数人可能都会频繁听到类似这样的话,「你怎么会不知道什么是 BGP?你从没听说过 Rust?」我们中的许多人喜欢软件的原因是因为我们是终身学习者,在软件领域,无论你朝哪个方向发展,都有广阔的知识视野向各个方向传播,并且发展方向每天都在扩展。这意味着你可以在职业生涯中度过几十年,但与在看似相似的角色上也花了几十年的人相比,软件领域的人仍然存在巨大的知识差距。你越早意识到这一点,你就可以越早摆脱冒名顶替综合症,而是乐于向他人学习和教导他人。

  1. 软件最困难的部分是构建正确的内容

大多数软件工程师不相信这一点的原因是因为他们认为这贬低了自己的工作。然而相反的是,恰恰是这一点突出了软件工程师工作环境的复杂性和非理性,这进一步加剧了软件工程师的挑战。你可以设计出在技术上最令人惊叹的东西,然而糟糕的是,最后没人愿意使用它。这种事情无时无刻不在发生。设计软件主要是一种倾听需求的活动,通常我们必须兼任软件工程师、聆听者和人类学家的身份。专注于这个设计过程,无论是通过专门的 UX 团队成员还是通过简单的自我教育,都将带来巨大的回报。

  1. 最好的软件工程师需要像设计师一样思考

伟大的软件工程师会深入思考他们所写代码的用户体验。例如外部 API、编程 API、用户界面、协议还是其他接口, 优秀的软件工程师会考虑谁将使用他们的研究、为什么使用它、如何使用以及对这些用户来说什么是重要的。牢记用户需求才是良好用户体验的核心。

  1. 最好的代码是没有代码,或者是不需要维护的代码

编程人员需要会编程。大多数人都会在自己擅长的方面犯错,这是人的本性。很多软件工程师经常在编写代码方面犯错,尤其是当非技术解决方案不明显时。无需人员维护的代码也是如此。当很多算法已经存在时,工程团队很容易想要开辟新的方法,这是一个平衡的行为。

有很多理由让你重新发明轮子,但需要注意的是「非原创」并不在其中。

  1. 软件是达到目的的一种手段

软件工程师的主要工作是交付价值, 但很少有软件开发人员了解这一点,甚至有更少的软件开发人员将其内在化。真正内在化会导致解决问题的不同方式,以及查看工具的不同方式。如果你真的相信软件是服从于结果的,你就会准备好真正找到适合工作的工具,而这可能根本不是软件。

  1. 为自己设定截止日期

有些人倾向于深入问题并开始编写代码,而有些人只想研究理论,没有着手代码,进而让自己陷入困难的漩涡。在这些情况下,为自己设定一个截止日期,然后开始探索解决方案。当你开始解决问题时,你会很快学到更多,这将引导你迭代到更好的解决方案。

  1. 如果你不能很好地把握可能发生的一切,你就不能设计一个好的系统

与开发者生态系统进展保持一致是一项巨大的工作,了解生态系统中哪些是至关重要的,如果你不了解给定生态系统中哪些是可能的,哪些是可用的,那么除了能发现最简单的问题之外,你不可能为所有问题设计一个合理的解决方案。总而言之,你要警惕那些很长时间没有编写任何代码设计系统的人。

  1. 每个系统都会很糟糕,你需要克服

Bjarne Stroustrup 有一句名言:只有两种语言,即人们抱怨的语言和没人使用的语言。这一名言可以扩展到大型系统。如果没有正确的软件架构,你永远无法偿还所有的技术债务,你永远无法设计出完美的界面。尽量少担心系统的优雅和完美, 相反,要努力持续改进你的系统,并创建一个团队喜欢在其中工作的适宜系统,并可持续地提供价值。

  1. 多问为什么

抓住任何机会进行询问。例如「有新的团队成员加入吗?注意他们在哪里出现混淆以及他们问的什么问题。有一个没有意义的新功能请求?」等等这些看似不起眼的问题。确保自己了解目标以及推动此功能需求的因素。如果你没有得到明确的答案,请继续问为什么,直到明白为止。

  1. 程序员大神都是传说

寻找工作效率能达到 10 倍的程序员是不可取的。那些所谓的一个人可以在 1 天内完成另一个程序员(有能力、努力工作、同样有经验的)在 2 周内完成的想法是愚蠢的。假如程序员抛出 10 倍数量的代码,那么你需要 10 倍数量的精力修复它。一个人成为 10 倍程序员的唯一方法是将他们与 0.1 倍程序员进行比较。一个浪费时间、不寻求反馈、不测试代码、不考虑边缘情况等的人…… 我们应该更关注的是让 0.1 倍的程序员远离我们的团队,而不是寻找神话般的 10 倍程序员。

  1. 工程师需要更多的建议

最让人担心的是没有人对高级工程师构建的软件提出意见,相反的,他们宁愿希望有人提出强烈的反对意见,也不愿别人根本没有意见。如果你正在使用某个工具,你需要更多的体验才能知道这个工具的优势和劣势,对于劣势,你可能需要探索其他语言、库和范式才能解决。除了积极寻找别人是如何使用不同的工具和技术完成任务之外,没有什么方法能更快地提升你的技能。

  1. 你根本不懂什么是创新

人们经常谈论创新,但他们通常寻找的是廉价的胜利。如果你真的在创新,并改变了人们做事的方式,那么你应该期待负面的反馈。如果你相信你正在做的事情,并知道它真的会改善一些事物,那么你需要准备好迎接一场长期的战斗。

  1. 数据是系统中最重要的部分

对于许多程序员来说,数据是系统中最重要的部分。在这样的系统中,发生在黄金路径之外的任何操作都会产生脏数据。将来处理这些脏数据可能会变成一场噩梦。请记住,数据可能会比代码库存在时间更长。花精力保持数据的有序和清洁,从长远来看,你会得到很好的回报。

  1. 寻找技术「鲨鱼」

一直存在的旧技术可看作「鲨鱼」,而不是「恐龙」。这些旧技术很好地解决了问题,以至于在不断快速变化的技术世界中幸存下来。但是请不要随意替换这些技术,只有在有充分理由的情况下才替换它们。这些技术不会花哨,也不会令人兴奋,但它们会在很多情况下完成工作。

  1. 不要误以为谦卑就是无知

很多软件工程师不会发表意见,除非被要求才会提出意见。不要以为别人不发表自己的观点就没有什么可补充的。有时候,最聒噪的人恰恰是我们最不想听的人。和你周围的人交谈,寻求他们的反馈和建议。你会庆幸你这么做了。

  1. 软件工程师应该定期记录研究

软件工程师应该定期写博客、写日记、写文档,多做那些保持书面沟通技巧的事情。写作可以帮助软件工程师思考问题,并帮助自己与团队更有效地沟通。良好的书面沟通是任何软件工程师都需要掌握的最重要的技能之一。

  1. 让过程尽可能的精简

如今,每个人都想变得敏捷,但敏捷是通过构建小块的东西,然后学习、迭代完成的。如果有人想把更多的东西塞进去,这是不可取的。在工作中,你很少听到科技公司或大型开源项目吹嘘他们的 Scrum 流程有多棒?在工作中保持精益求精。

  1. 软件工程师需要有主人翁的感觉

如果你让某人远离他们的工作成果,他们就不会那么关心自己的工作。这就是为什么跨职能团队工作得如此出色,以及为什么 DevOps 变得如此流行的主要原因。这不仅仅是关于交接和低效率,而是关于从头到尾拥有整个过程,并直接负责交付价值。让一群充满激情的人完全拥有设计、构建和交付软件(或任何真正的东西)的所有权,令人惊奇的事情就会发生。

  1. 面试对于说明一个团队成员的优秀程度几乎没有价值

面试的意义在于了解他 / 她是谁,以及他们对于特定专业领域的兴趣程度。而面试「原本该有」的意义,试图了解他们是否能够成为一个优秀团队成员的努力都是徒劳的。相信我,一个人的聪明或博学程度和他是否能够在团队中做到贡献没有太大关系。没有人会在面试中告诉你,他们会不可靠、随便骂人、自负或从不准时出席会议。

有人可能会声称他们可以在面试中看出端倪「如果他们在第一次面试中询问休息时间,那就要小心了。」但这些都是胡说八道。如果你使用这样的信号作为评判标准,你只是在猜测并拒绝优秀的候选人。

  1. 小即是美

有很多力量会促使你预先构建更大的系统。要求更多的预算,无法决定削减哪项功能,希望提供系统的「最佳版本」,所有这一切都在推动我们构建过多,但你应该为反对这种趋势而战。构建一个系统地时候,你会学习到很多东西, 这会和你当初的设想大为不同。但对于很多人来说,以最好为目标是很难的。

老程序员的这些建议或许可以为你带来一些帮助。在成为一名开发者之后,你是否也有踩过的坑,或者总结出来的经验?

原文链接:
https://www.simplethread.com/20-things-ive-learned-in-my-20-years-as-a-software-engineer/

这篇关于老程序员的20条至理名言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

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

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

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

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

【语句】如何将列表拼接成字符串并截取20个字符后面的

base_info = "".join(tree.xpath('/html/head/script[4]/text()'))[20:] 以下是对这个语句的详细讲解: tree.xpath('/html/head/script[4]/text()')部分: tree:通常是一个已经构建好的 HTML 文档树对象,它是通过相关的 HTML 解析库(比如 lxml)对 HTML 文档进行解

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

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

GitHub:代码是程序员沟通最直接的手段

如果不是 Andreessen horowitz 的投资,估计 GitHub 很难被福布斯、CNN、纽约时报等传统媒体注意到。普通大众之前不了解这个工具,是因为它距离记者的世界太远了——GitHub 是一个程序员所使用的托管项目的服务。 但在一些程序员眼里,它不仅是托管项目的地方,还是“开源”项目的大本营,而且是提高程序员“技术水平”和“技术品味”的地方,更是一个程序员社交的地方。

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所

黑马程序员---空中网面试题

空中网4k/5k月薪挑选大四实习生的线程题     两年前,我们一个大四的学员去应聘空中网的实习生职位,空中网只给他出了三道线程题,拿回家做两天后再去给经理讲解,如果前两题做好了给4k月薪,第三道题也做出来的话就给5k的月薪。这样的实习薪水和招聘要求,不需要有工作经验的限制,纯粹是技术功底的比拼和考核,而不像许多其他公司非要招两年工作经验的人,逼得那些刚毕业和未毕业的大学生不得不去撒谎,不得不去做