这 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条至理名言相关推荐

  1. 老程序员的10条中肯建议

    以下十条建议是一个老程序员给出的建议,句句中肯,希望能引起你的思考,而不是笑笑就过去了.觉得在理,不妨随手点赞收藏转发分享,谢谢~ 程序员的二八定律: 程序员的二八定律(这个图是我自己做的) 1.想清 ...

  2. 来自老程序员的10条中肯建议

    以下十条建议是一个老程序员给出的建议,句句中肯,希望能引起你的思考,而不是笑笑就过去了. 觉得在理,不妨随手点赞收藏转发分享,谢谢~ 程序员的二八定律: 1.想清楚,再动手写代码 刚入行的新手,为了展 ...

  3. 比程序员更好的职业_立即成为更好的程序员的20条技巧

    比程序员更好的职业 目录: (Table of contents:) Think Before You Code 编码前先思考 Understand the Business Behind Every ...

  4. python编程初学者的良言警句_程序员的20条金句良言,早点找女朋友,生活作息会更健康...

    新手程序员入坑20条生存指南,首先,欢迎来到程序员的世界.在这个世界上,不是有很多人想创造软件并解决问题.你是一名hacker,属于那些愿意做一些有挑战性的事情的人. "当你不创造东西时,你 ...

  5. 码龄超过20年,依然对生活和编程充满激情,这是三位70后“老”程序员的故事

    大数据文摘出品 作者:周素云.张秋玥 加班996,生病ICU. 这是一句最近搅乱了很多程序员平静生活,也让所有的"社畜"认真反思人生的话题.但是,让程序员们真正感到焦虑的其实并不只 ...

  6. 20年的老程序员对新入行的朋友的一些建议

    从事编程这一行也已经20年了,到今天为止,有关编程方面的知识我也写了六七门课程了,教授课程的时间也已超过了1000小时,下面我所说的全部是我多年来的实践的经验之谈. 编程真的不是一件容易的事. 不管你 ...

  7. 20 年“码龄”的老程序员如何看编程发展?

    如今,学习编程的人分为两类,一类是程序员,另一类是期望成为程序员的人. 编程这个事儿,在大多数人眼中还是一种特定领域的.专门的技能,认为学的人都是需要以此谋生的. 其实,作为一个"码龄&qu ...

  8. 老程序员都去哪儿了?

    摆在老程序员们面前有三条路,一是转行,二是继续钻研成为技术大牛,三是转型为管理人员. 我最近采访了十五位30岁以上的老程序员们,在此我想发表下我的观点. 网络上总有这类观点-- 「如果所有的技术都想着 ...

  9. 老程序员都去哪儿了?国内的大龄程序员都去哪了

    摆在老程序员们面前有三条路,一是转行,二是继续钻研成为技术大牛,三是转型为管理人员. 我最近采访了十五位30岁以上的老程序员们,在此我想发表下我的观点. 网络上总有这类观点-- 「如果所有的技术都想着 ...

最新文章

  1. 结构化综合布线系统中的干线子系统是指(33)。【答案】D
  2. 微信公众平台开发教程(四) 实例入门:机器人(附源码)
  3. python递归函数讲解_Python递归函数实例讲解
  4. springMVC——SSM整合(IDEA 搭建简单 ssm 框架最详细最简单教程)
  5. 小程序 获取当前用户地址及地图显示
  6. Size Balanced Tree
  7. FPGA 常用AXI总线介绍
  8. MUI开发指南(二) webview对象
  9. JS_模拟广告栏跟随效果
  10. 空间数据挖掘常用方法及举例
  11. 一次小黄车的二维码还原过程
  12. 研磨设计模式之《观察者模式observer》
  13. win10无法安装网卡驱动
  14. VAX插件、vs2012
  15. 如何写好一篇技术型文档?
  16. java 支持哪些字体_java有哪些字体
  17. 《编写高质量代码(改善Java程序的151个建议)》读书笔记
  18. 谈谈网络工程师的就业方向与薪资水平
  19. binlog_do_db 与 binlog_ignore_db
  20. 名创优品在香港上市:市值170亿港元 10元店也有大生意

热门文章

  1. 即插即用 | 超越CBAM,全新注意力机制,GAM表现卓著(附Pytorch实现)
  2. 手机版明日之后无限法则服务器,《明日之后》安卓版服务器被挤爆,玩家吐槽网易没钱买服务器,对此你怎么看?...
  3. Maya引力群体动画插件 Attract Magic 下载及教程
  4. 计算机无法转换文件,怎么将heic转换格式 如何打开heic文件
  5. (附源码)计算机毕业设计JavaJava毕设项目爱家家政公司网站
  6. ​分享c#股票交易接口读取通达信历史数据的方法
  7. 滥发货币的美国为何不通胀
  8. TIA博途Wincc中如何组态面板功能键F1-F8?
  9. linux arp命令简介
  10. VMWare Photon OS