程序员能干到退休吗?写了40年代码的「骨灰级码农」给出了15条建议

news2025/2/1 8:04:42

寒冬、裁员、降薪、996、秃头、最近几年这些词汇不断在各位码农的周围盘旋。
很多程序员对自己目前的状态干到困惑和焦虑,而且这好像是国内外程序们都会遇到的问题。


最近,在Reddit上,一位干了40年程序员的网友发表了对这一问题的看法,还总结了自己从业40年的经验,整理成13条建议,希望能给码农们提供一些建议或帮助。

 




Noah Gibbs,曾在英伟达、AppFolio Inc、DAQRI等公司写代码,2021年5月加入了Shopify。


这是他的个人博客,一直在坚持输出一些技术性的文章与视频,特别是关于Ruby的,还写过一本关于Ruby的书,文章的封面图是粉笔画,很有个性。


Noah Gibbs没有告诉大家要学习什么语言或框架,这些知识和技能是不断变化的,而且没有尽头,比技术更重要的是对工作的一些看法。


原文是英文,以下根据Noah Gibbs的文章与视频翻译整理。



1、软件开发职业还很年轻


计算机语言 Fortran 的历史可以追溯到 1957 年。1958 年,LISP 和 Algol出现,1959 年,COBOL出现,一些更古老的Plankalkül出现在1942年左右。


假设从 1957 年开始就有程序员,也不过65年。Alan Kay,Smalltalk 编程语言的发明者,大约从 1963 年开始——59 岁,他是我发现的从业时间最长的人之一。


马友友今年 66 岁,即时从 4岁半起就开始拉大提琴。他离世界上演奏时间最长的音乐大师还差得很远。相比之下,程序员真的非常年轻。



2、只要喜欢,几岁开始都不晚


大约一年前,也就是45岁时,我才开始学习弹钢琴。这一年我觉得自己一直在进步,我相信如果坚持下去,到60岁时我一定会非常棒。学习编程也是一样,当你已经有了一些其他领域的经验和知识时,你学习编程就会变得很快。


我遇到过很多优秀的程序员,他们都是在20岁、30岁甚至40岁才入行,所以我不知道你为什么不能从50、60岁开始。这一行需要时间和工作,但你不必非得年轻。


假如你觉得自己不能成为行业专家或大师的话,也不必气馁,这个世界上大部分的人都不能成为马友友,或者Alan Kay ,你得接受这一点。



3、多尝试不同类型的编程


建议大家要多写一些软件,各种类型的软件。尝试使用不同类型的编程语言,这样可以开拓你的视野,提升思维能力,每一种语言都可以从中获取一些灵感。40年来,编程语言与方式一直在变化,我们需要去适应它。



4、不要怕回报慢


不要觉得自己正在学习的东西是没用的,因为没用是相对的。


我曾经把多年的业余时间投入到一种叫做DGD的旧的MUD编程语言中。当然不是为了实用价值,因为几乎所有关于它的东西都是奇怪的和不标准的,很少有真正能应用的。


但它教会了我很多,它教会了我Ruby on Rails后来应用的东西,它教会了我如何使用数据库编程,它还教会了我一些在后来学的五六种语言中都能用上的东西。


有趣的是,多年后我在DGD找到了一份咨询工作。这世界上还没有多少DGD的工作,但我有一个!这比我学过的许多“实用”语言更实用。


多学习一些有趣或有用的东西,即使现在看来没有什么用,说不定哪一天就会派上用场,而且让你大吃一惊。



5、找到工作中最感兴趣的部分


最开始写代码可能是生活需要,或者是机缘巧合,但你想要一直干到退休,你就需要找到你的兴趣点,只有这样才能长期坚持下去。对于我来说,写代码让我感到成就感和愉悦感。



6、不要把计划看得太重


很多人经常会列很多计划,往往很多没有完成,其实没必要太在意,因为你不可能通过计算和计划来完成所有的事情。这不是失败,也不是放弃。


你无法预测什么是有价值的,即可能去学习所有的东西。你活得越久,工作得越好,你就越能意识到每件事都能教给你有用的东西。



7、不要混淆工作和事业


不要把工作和事业混为一谈,它们不是一回事。区分它们的最好办法就是,你会不会因为钱放弃。


对于我来说,写代码是一份非常棒的工作,但只是一个还行或者可以更好的事业。对于很对音乐家来说,它们并没有获得很高的报酬,但音乐是他们一身的事业。


8、规范不重要


在刚入门的时候,你往往会得到关于首先学习什么语言或技术的不同建议,但这其实不重要。


没有什么规范或套路是一定要遵守的,规范是用来打破的,最重要的是花时间去学习,去研究和改进。



9、你越优秀,就越和别人不一样


不要按照招聘需求里的要求去学习和改进自己的的能力,这样做只会变成一个工具人。找到自己的真正擅长的东西,比如团队管理、设计营销、写作或者创业,与众不同才是你最有价值的部分。



10、从实践中学习


对于初学者来说,首先要学会用一些实际的语言构建一个可用的软件。不管是哪一种语言,只有犯一些真正的错误,才能在错误中解决问题。然后就可以这样循环:实践,犯错,学习理论,修正错误。


11、学习各种技术和各种非技术技能


如果你想在程序员这一行做上几十年,你不仅要学习各种各样的技术,还要学习各种各样的非技术技能。


举个例子,“学习至少一种函数式编程语言”,就像钢琴家“学习演奏莫扎特的钢琴曲”一样是必须的,但同时,学习一些编程时所涉及的边缘技术,会为你培养额外的洞察力。


12、向其他领域学习


你可以从其他领域学到很多东西。我曾经写了一本关于如何偷学艺术家练习方法的书,正是因为艺术和音乐都是古老的学科,它们已经领先计算机发展几千年了。


所以,如果你遇到了一个问题,你可以考虑一下其他领域的人们会如何处理这个问题。例如,阿图尔·葛文德(Atul Gawande)的《清单宣言(Checklist Manifesto)》中就讲述了飞行员、摩天大楼建造者和医生处理问题的截然不同的方式,这些都是很好的方法。

13、不要重复造轮子


在程序员中有一个说法是“不要重复造轮子”,我们的工作正是想办法让电脑完成所有的重复工作,这样我们就可以只做新的工作。


你可以尝试重新发明轮子、可以故意用“糟糕”的方式编写代码,看看会发生什么。总而言之,你需要真正擅长一些不同寻常的事情。


14、对效率保持谨慎


我们经常会提到效率一词,有时他们会带来巨大的收益。通常他们什么都不给。有时他们对你的伤害多于帮助。
效率是如何改进已经到位且运行良好的策略,如果你期望每年持续 20% 的改进,每月复合,这会让人感觉很糟糕。提高某一部分的效率通常要以降低另外一部分的效率为代价。


15、只管去做


如果你真的想干一辈子程序员,其实最重要就是坚持下去,只管去写,无论如何,只要你愿意,你就可以一直做一个程序员。


很多人觉得国内35岁就要失业,怎么可能干到退休呢。确实要考虑国内国外的情况不一样,但换一个角度想,国内也一些程序员确实干了四五十年了,而且还在干,每个职业都有它的局限性和劣势,我个人最认同的是第五条和第七条,最重要的还是找到自己的兴趣点,坚持下去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104465.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

辛二酰苯胺异羟肟酸/葛根素/黄芩苷β-环糊精(β-CD)环糊精包合物/β环糊精二棕榈脂质体制备

这里给大家分享的科研内容是辛二酰苯胺异羟肟酸/葛根素/黄芩苷β-环糊精(β-CD)环糊精包合物/β环糊精二棕榈脂质体的制备,和小编一起来看! 黄芩苷β-环糊精(β-CD)环糊精包合物脂质体制备方法: 采用傅里叶红外变换光谱法(FTIR)确认了黄芩苷…

工控CTF之协议分析4——MQTT

协议分析 流量分析 主要以工控流量和恶意流量为主,难度较低的题目主要考察Wireshark使用和找规律,难度较高的题目主要考察协议定义和特征 简单只能简单得干篇一律,难可以难得五花八门 常见的工控协议有:Modbus、MMS、IEC60870、…

Appium基础 — Chrome Inspect定位工具

1、Chrome Inspect介绍 Chrome Inspect定位工具是用来抓取app中Webview页面的。 为了项目的需求,为了更好的保证效果和布局跨平台,Android&H5混合开发一般是我们不错的选择。Google浏览器中的Chrome Inspect定位工具,提供了一个移动端W…

(六)docker容器数据卷的理解和使用

目录 一、容器数据卷是什么 二、容器数据卷能干吗 三、宿主vs容器之间映射添加容器卷 四、读写规则映射添加说明 五、卷的继承和共享 一、容器数据卷是什么 Docker将运行的环境打包形成容器运行, Docker容器产生的数据,如果不通过docker commit生成…

【软件测试】快速迭代的敏捷项目?测试怎么做?测试人怎么提升自我价值......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 提到敏捷项目时&…

【嵌入式】Linux开发工具arm-linux-gcc安装及使用

知识架构及层次 — 程序编译及调试 嵌入式交叉编译器安装配置 宿主机 执行编译、链接嵌入式软件的计算机 目标机 运行嵌入式软件的硬件平台 “本地”编译器 用来生成在与编译器本身所在的计算机和操作系统(平台)相同的环境下运行的目标代码&#xff0c…

【2023 海光 笔试题】~ 题目及参考答案

文章目录1. 前言2. 题目 & 答案第1题第2题3. 回忆杀4. 关于存储芯片声明1. 前言 今天分享的是海光的关于IC验证的笔试部分题目!!!名称如标题所示,希望大家正确食用(点赞转发评论) 本次笔试题一共三部分…

l2逐笔接口如何如何查询委托明细?

l2逐笔接口进出行查询逐笔委托明细目前只支持电脑端,需要在登录进页面后在个股分时页面的右边需要双击或回车操作,找到行情资讯单元,再选择Level2单元。并且l2逐笔接口对A股的数据调用就是利用api结构来验证和存储数据,相当于一个…

leetcode.1760 袋子里最少数目的球 - 反向二分(二分答案)

1760. 袋子里最少数目的球 思路: 你的开销是单个袋子里球数目的 最大值 ,你想要 最小化 开销。 题目出现:最大值最小,最小值最大 则是二分题 已知开销值y越大,操作数越小,则问题具有单调性,可以…

微信小程序 | 小程序的事件处理

🖥️ 微信小程序 专栏:小程序的事件处理 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ &#x1f44…

怎么智能配音?推荐几个比较实用的配音方法给你

现在我们的生活变得越来越便捷化,越来越多的新鲜事物出现在我们的眼前,比如配音。随着短视频的火爆,相信屏幕前的你也剪辑过视频吧。给视频剪辑的过程中,为视频中的文字内容进行配音是一个必不可少的剪辑步骤,这样可以…

数字孪生智慧场馆项目应用场景展示

近年来,发展"数字经济"和建设"数字孪生城市"相继被提升为国家发展战略, 如何运用数字孪生技术活化体育场馆运用场景成了场馆智慧化建设道路上需要思考的问题。 数字孪生智慧场馆项目 北京智汇云舟科技有限公司成立于2012年,专注于创新性的“视…

IOT知识记录

文章目录物联网程序设计GPIO 端口配置结构体定义 //代码规范样例NB模组运行流程LORAWAN模组1. 基础知识:2. 运行流程:4G 和WIFIGPRSPDN与APNPDP上下文和PDP地址APN:APN即“接入点名称”物联网 程序设计 程序框架的规划各个模块功能的细分系…

氧饱夹语音芯片,内置功放直推喇叭输出,低成本语音IC,WTN6系列

血氧夹能够实时检测用户当前的血氧饱和度,相比于传统没有嵌入语音芯片的血氧夹,只有一个显示屏,无法直观知道当前血氧是正常还是偏低,需要用户查阅一些资料/问客服如何使用,大大降低了产品的体验; 添加了语…

界面控件DevExpress WPF中文指南 - 主题设计器工作区介绍

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress WPF的Them…

统一自己的mac和linux环境的终端使用(alacritty+tmux代替iterm2)

升级切换了下自己的终端工具tmux配置,终端工具从iterm2改到了alacritty。 为什么切换终端 快。 alacritty使用GPU进行渲染,可以做到其他无法实现的性能优化。小。 iterm2快40m,alacritty只有10m,当然这个只能算小优点&#xff0…

flex换轴,布局,语法,移动端

物理分辨率&#xff1a; 硬件所支持的&#xff0c;屏幕出厂就设定无法修改逻 辑分辨率&#xff1a; 软件可以达到的&#xff0c; 我们开发中写的是逻辑分辨率 视口&#xff08;viewport&#xff09;就是浏览器显示页面内容的屏幕区域。 <meta name"viewport" c…

栈的分类以及应用场景

栈的本质就是一段内存&#xff0c;程序运行时用于保存一些临时数据。栈大体可以分为四种类型空增、空减、满增、满减。ARM处理器一般使用满减栈。 目录 1、栈的分类 2、压栈/出栈的两种实现方式 (1) 方式一&#xff1a;使用后缀DB / IA (2) 方式二&#xff1a;使用后缀FD …

nexus 远程代码执行 (CVE-2020-10199)

目录 一、漏洞信息 二、影响版本 三、环境搭建 四、漏洞复现 五、修复建议 这里用的是docker desktopvulfocus搭建的环境。 一、漏洞信息 名称: nexus 远程代码执行 &#xff08;CVE-2020-10199/10204&#xff09; 描述: Nexus Repository Manager&#xff08;NXRM&a…

K8s 滚动升级与回退

目录前言一、升级二、回滚前言 Rolling Update 即滚动更新&#xff0c;先更新一部分副本&#xff0c;成功后再继续更新更多副本&#xff0c;最终完成所有的副本更新。前面说到动态伸缩容并不会触发上线&#xff0c;仅当 Deployment Pod 模板&#xff08;即 .spec.template&…