一位老程序员38年经验总结:不要有年龄危机,直接去做

选自codefol.io

作者:Noah Gibbs

机器之心编译

有人选择贩卖焦虑,有人选择继续前行。

能把一件事坚持 40 年的人并不多,我们今天要介绍的这位就是其中一员。他叫 Noah Gibbs,从事编程工作快满 40 年了,最近他用博客的形式分享了自己总结的一些经验。

Noah Gibbs

再过两年,也就是 2024 年,我将成为一名拥有 40 年编程经验的工程师。在此期间,我也获得了丰厚的回报。我该从哪里介绍我的经验呢?就从软件开发说起吧。

软件开发还是「年轻」的

就拿编程语言来说,Fortran 可以追溯到 1957 年,同时期出现的还有 LISP 、Algol 等。设想一下,假如从 1957 年开始就有人从事编程工作,到今天也已经有 65 年的经验了。

至于我,自 1998 年以来,我一直是一名全职程序员,时间跨度达 24 年。不过严格说来,我从 1984 年就开始干程序员这一行了,这样算下来已有 38 年从业经验。

至于其他行业,例如文艺界大提琴演奏者马友友(Yo Yo Ma)从 4 岁半就开始拉大提琴,演艺生涯超过 63 年,但他还不是世界上演奏时间最长的音乐大师。根据吉尼斯世界纪录,有位音乐人在过去 80 年里连续发行了多个音乐作品,这还不包括现场表演或其他活动。

因此相比其他领域来说,我们(编程)的领域还很年轻。

年龄不是问题

其实,不管从什么时候开始都不会太晚。大约一年前,45 岁的我开始学习钢琴。如果我能坚持下去,在我 60 岁时,我相信自己会成为一名非常优秀的钢琴家。

我遇到过很多优秀的程序员,他们从 20 岁、30 岁甚至 40 岁才开始。我不明白我们为什么不能从 50 岁或 60 岁开始学习一项新的东西。年龄不是问题。

尝试不同的事情

如果你想从事一段漫长而又无趣的编程生涯,而现在又刚刚开始。不用担心你刚起步,我经常会鼓励别人「只要开始着手写一些软件,任何软件都无所谓,只要去行动就足够了。」在此过程中,你会学习很多不同的东西,学习顺序并不重要,重要的是你学到了什么。

以我个人为例,在我 40 年的职业生涯中,会遇到很多编程要求,如桌面应用、操作系统、Web 程序等等。只要你尝试不同的事情,不必在意先学哪个,后学哪个,边用边学。如果你太拘泥于学习而忽视实践,可能会失败。

学习的东西暂时没用?等等看

假如你担心自己学的东西没用怎么办?其实没用是相对的。比如我,我把多年业余时间投入到一种名为 DGD 的 旧 MUD 编程语言中。这门语言于我而言用处不大,然而学习过程却教会我很多。它教会我后来 Ruby on Rails(一个使用 Ruby 语言写的开源 Web 应用框架) 使用的东西,它教会我关于使用数据库编程的知识,即使它没有使用数据库!

总之,这一学习过程在我后来学到的五六种不同的语言中都很有用。

有趣的是,多年后我凭借 DGD 找到了一份咨询的工作。本来世界上就没有多少这种工作,但我就是其中之一!这比学过许多实用的语言更实用。

我也经常对自己说「现在还早」,我的意思是,我才 46 岁,不是 96 岁老的快走不动了。我至少还有 20 年,也许 50 年的时间用来学习。

不管怎样,最重要的是持续不断地工作。要想成为一名拥有 20 年、40 年或 70 年经验的程序员,需要付出很多努力。学习一些有趣或有用的东西,10 年、20 年或 30 年后回过头来看你收获了什么。

谈到工作,我认为工作是一种很好的学习方式。不过我也喜欢做一些与工作无关的事情。无论与工作有关与否,我都会编写一些代码。我喜欢写一些其他程序员可以使用的东西,这样才有意义。假如说,你不喜欢现在的工作了,你要想办法改变你的观点,让自己适应工作;假如真的无法坚持,你应该采取措施,比如休假或者辞职。

要脚踏实地

做决定很容易,比如你要成为一名计算机程序员,然后制定了一堆计划、无数个要点、分成几大部分来实现这一目标。但是我想说的是,不要把计划看得太认真。

学习编程并不是一项你计划好的任务,当你开始动手时,你就是一个程序员。如果你还没开始,建议你去一个在线代码学习网站编写你的第一个程序,它应该不会超过 20 分钟。

当你积累到一定程度,开始写一些规模较大的软件时,可能会面临程序臃肿等问题,这时你就需要学习一些模块化和封装的知识。想让程序运行得更好,还需要掌握一些数学知识。所有这些都可以在网上找到,如果你想深入学习,还能找到参考书籍和课程。

你也可以培养一些爱好,而不是把所有精力投入到软件编程里。保持继续工作,它会让你变得更好,不要害怕那些看起来不切实际的工作。就像我不知道我要怎么用音乐来帮助我的软件编写。但未来是非常遥远的,没有人可以预测 20 年后会发生什么。

让自己变得更优秀

早期的职业培训(编程学校、博客文章、大学课程、书籍)有点像装配线,会学习到一些非常基础的技能,例如编写函数、调试等,这种学习方式试图确保你能掌握基本编程能力。

如果你想在一众人中展露锋芒,你必须非常擅长某件事,而这件事必须是受欢迎的、有利可图的、缺你不可的那种。如果你打算在软件领域赚到比尔 · 盖茨那样的财富,而你却写了 Haskell(复杂、深奥、广受好评,但没那么赚钱),那么这将是一个巨大的失败,反之亦然。

从基础中学习深层次原则

不要一开始就去学习软件设计的深层原理,假如没有实践经验的话,这个过程会很痛苦。你可以先从构建简单的软件开始,至于用哪种语言也不用纠结,关键是动手实践。然后找出这一过程遇到的错误,查资料、从原理上进行解决。

假如同样的过程循环 20 年,构建、查错、学习理论、纠错,你会收获很多。在这个行业,技术变化相当快,你也可以从其他领域学到很多东西。

不要害怕,直接去做就好了。至于我,四十年的时间不知不觉就过去了。无论如何,只要坚持下去,就算成功了。

原文链接:https://codefol.io/posts/the-forty-year-programmer/

原文地址:https://www.toutiao.com/article/7145040016476701225/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340