北美求职:入行40年是什么感受?程序员大佬总结出的经验宝典,必看!
北美求职:入行40年是什么感受?程序员大佬总结出的经验宝典,必看!
篱笆资讯
北美求职:入行40年是什么感受?程序员大佬总结出的经验宝典,必看!
Noah Gibbs是一名长期的专业软件开发人员,到2024年,他的程序员生涯就要满40年了。近日,他发表了一篇长文来分享自己的编程之路,无关编码技巧,无关如何赚钱(尽管他赚到了很多),那么他会分享些什么呢?笔者以第一人称的视角,对原文进行了编译整理,以飨读者。

到2024年,我就将成为一名有40年经验的程序员。这与开发软件赚最多的钱,或者创办一家软件公司不同。我确实赚了很多钱,但这并不是这一切的意义所在。

我认为你可能想长期做一个软件开发人员,就像有些人长期做音乐家、艺术家或者屋顶工人一样。如果不是,你可以在你的浏览器中点击 “返回”。这很酷,无伤大雅。但如果你想成为一个二十年、四十年或者更长时间的程序员,那就听我继续讲下去吧!

我不会告诉你要学什么语言或框架。如果你擅长基础知识,你可以学习任何你想要的东西。在那之前,你可以什么都做不好,反正我就是这么做的。

相反,我想讨论刚开始时对我没有意义,而现在成为我天空中启明星的那些事,这意味着它不是关于具体的技术。因为技术日新月异,语言来来往往,它们不可能成为你的天空。下面,让我们开始第一个话题:

软件开发很年轻

计算机语言Fortran的历史可以追溯到1957年。还有其他一些语言也差不多是在同一时期出现的(LISP和Algol:1958年,COBOL语言:1959年)和一些奇怪的年老竞争者(Konrad Zuse的Plankalkül,1942年左右。)

假设从1957年开始就有程序员了,那一共有65年历史。我从1998年(24年经验)开始成为一名全职程序员,从1984年(38年经验)开始做一名程序员,可以说非常有经验了。此外,Smalltalk编程语言的发明者Alan Kay,从1963年左右开始成为程序员(59年经验),他是我发现的活跃时间最长的人之一。

相比之下,天才大提琴家马友友今年66岁,他从4岁半开始就一直在拉大提琴,但他远不是世界上演奏时间最长的音乐大师。《吉尼斯世界纪录大全》记载,Kasper “Stranger”Malone连续80年都有专业的音乐作品发布。因此,一个真正有经验的音乐家的工作时间,甚至比我们整个学科存在的时间还要长15年。所以,我们的领域还很年轻。

年龄不是问题

所以,如果我从8岁开始,马友友从4岁半开始,对你来说太晚了吗?并不。

大约一年前,45岁的我开始认真弹钢琴。我认为自己真的在进步,如果我能够坚持下去,当我60岁的时候,我就会变得非常出色。现在,我已经可以像样地演奏一些歌曲了,所以,当你已经有一些背景和观点时,你会更快地变好。更何况,你已经练习掌握了几十年或者更长时间的技能。

假设你50岁了,你可能还有30年左右的大好时光成为一名软件开发人员。如果你从50岁开始,你在10年后的60岁可能会比我在10年后的18岁要好得多。

我遇到过的优秀程序员很多都是从20岁、30岁甚至40岁开始工作,你没有什么理由不能从50或60岁开始。虽然这需要时间和努力,但并不意味着你要从小开始。

不过,这也意味着你的编程可能不会那么厉害。就像我弹钢琴不会像马友友拉大提琴那样好,我在编程方面不会像Alan Kay那样出色,尽管我很小就开始编程。实际上,几乎所有其他拉大提琴的人都比不上马友友,但这并没有阻止他们投入到大提琴事业中。就像我喜欢弹钢琴,即使我从来没有进入到世界前十名。

我仍然喜欢编写软件,但我成为下一个Alan Kay的几率基本为零,因为他在我这个年龄已经写出了Smalltalk。如果你从事软件工作,“不做Alan Kay也没关系 ”的想法是必要的。

顺序不是决定性的

如果你刚刚开始编程生涯并且想长期做下去,我经常说“只要写一些软件,任何软件都可以”。你需要学习很多不同的东西,以什么顺序学习它们并不是什么大问题。

40年来,很多趋势来来去去。桌面应用、移动应用、操作系统和系统、网络编程,我都学习过。当然,你所学的列表会有所不同,但它将涵盖多种编程。只要你尝试不同的东西,你做它们的顺序并不重要。

当然,“尝试不同的东西”是关键。你在四个不同的领域各花十年的时间,会比你花40年的时间写网络套接字服务器要好得多。并不是说40年的深度没有价值。深度绝对有价值,所以你也不应该在四十个不同的领域各做一年。

但你要注意别太刻板。事实证明,几乎任何学科都可以教给你一些东西。如果你不知变通学不来,那你就失去了机会。

尝试不同类型的编程,用任何顺序都可以,但同时你应该在某些方面下功夫并变得更好。

现在还为时过早

很多人会觉得自己学的东西没用,但我认为,没用是相对的。

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

它教会了我Ruby on Rails后来使用的东西,它还教会了我有关数据库编程的知识,尽管它没有使用数据库!我从中学到的这些东西,在我后来学习的五六种编程语言中都起了很大的作用。

有趣的是,许多年后我得到了一份DGD的咨询工作。要知道,世界上没有多少DGD工作,但我有一个!这比我学过的很多 "实用 "语言更实用。

我经常对自己说 "现在还早"。虽然我已经46岁了,但我还没到96岁,我至少还有20年甚至50年的时间。所以,如果我做一些奇怪的事,但它教给我有趣的东西,那真的很好。如果我做一些实际的事,让我在短期内度过难关,那也是好事。

但重要的是:一定要继续工作。作为一个程序员,要想做到二十年、四十年或者七十年,需要大量的工作。如果两件工作难以取舍,可能它们都很好,任何一件都会是一个好的选择。否则只能说明它们都很糟糕,你应该找一些有价值的东西来代替。

现在还早,学习一些有趣或有用的东西,给予它时间来收获好处。但你需要期待的是十年、二十年或三十年后的回报,不要总是选择十八个月后最好的东西,因为你真的看不到未来会发生什么。

确保工作是好的

你开始编写软件一定是因为它吸引到了你。它的某些部分是好的,否则你也不会费心费力了。

试着弄清楚那是什么。你喜欢什么?是什么吸引了你?它有什么好的地方?这对每个人来说都是不一样的。

我喜欢有成就感和聪明的感觉。这不是我工作中最好的做法,但我在家里经常这样做。我不需要每个人都看到它,我可以只靠自己的聪明才智做好工作。我也喜欢做一些和自己工作不同的事情,即使我在两个地方都写代码。我还喜欢写一些其他程序员可以使用和欣赏的东西。

你的理由也许和我不一样,但我想说的是,工作很好,如果它不好你也做不下去。如果它不再好,那就是紧急情况:你需要休假,或重新找到你喜欢的东西等。因为如果你的工作不再让你感觉良好,你会很快精疲力竭。

工作是好的,如果不是,那就改变工作。这些都不一定意味着这份工作是好的,或者换工作,但是你需要在你的工作中获得足够的好处让自己继续下去。不管怎样,坚持下去是一种要求,所以这可能也会影响你的工作。

这是该程序员大佬宝贵经验的上半部分,由于篇幅原因,下期我们会继续讲述他的经验故事,大家记得持续关注~
coffee 直连行业大牛导师,1v1模拟面试与求职指导
mentors
airplay 实战与求职精品课程
数据科学
软件工程
人工智能
金融商科
产品经理
产品设计
bookmark 2000+名企面试真题
amazon google tiktok microsoft meta