您的位置:主页 > 公司动态 > 公司新闻 > 公司新闻

做40年程序员是一种什么体验?

干了40年程序员,是一种什么体验?

一位从1984年就最先当程序员的老哥出来“现身说法”了。

他总结了自己从业近40年的履历,搜集成13条建议,希望能给想耐久做程序员的新手们提供一些辅助。

文章一宣布,就在reddit、推特上引发讨论,许多程序员也纷纷跟帖附议,有网友就示意:不能赞成更多!

赶快来看看,他都分享了哪些干货吧。

来自近40年码农的履历分享

这位老哥叫Noah Gibbs,曾供职于英伟达、AppFolio Inc、DAQRI等多家公司,现在就职于Shopify。

作为一名资深的软件开发者,他一直活跃在开发一线。

但与想象中差异,这次他并没有先容要学习什么语言或框架,而是指出了一些他以为比手艺更主要的事。

(以下是作者Noah Gibbs的口吻叙述)

1、几岁最先都不晚

约莫一年前,也就是45岁时,我才最先学习弹钢琴。这一年我以为自己一直在提高,我信托若是坚持下去,到60岁时我一定会异常棒。

学习编程也是一样,当你已经有了一些其他领域的靠山时,你学习编程就会变得很快。

信托我,若是你从50岁最先做程序员,10年后,也就是你60岁时,一定会比我18岁的水平好得多。

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

2、多实验差异类型的编程

若是你刚刚入行,而且想耐久从事编程行业,我的建议是:要多写一些软件,任何软件、写什么都无所谓。

在我干程序员的40年里,许多潮水来往复去。可以说,让自己多实验差其余类型的编程很主要。

这可以使你头脑不会变僵硬,而且事实证实,险些任何一种规则都能教会你一些器械。

若是你太拘泥于某一项单独的义务,就很可能会失败。

3、不要怕回报慢

不要以为自己正在学习的器械是无用的,由于无用只是相对的。

我曾经把多年的业余时间投入到一种叫做DGD的旧MUD编程语言中。这固然不是为了适用价值,由于险些所有关于它的器械都是新鲜的和不尺度的,很少有真正能应用的。

但它教会了我许多,它教会了我Ruby on Rails厥后应用的器械,它教会了我若何使用数据库编程,它还教会了我一些在厥后学的5、6种语言中都能用上的器械。

有趣的是,多年后我在DGD找到了一份咨询事情。这天下上还没有若干DGD的事情,但我有一个!这比我学过的许多“适用”语言更适用。

就像我经常对自己说的:“现在还早。”你可以多学习一些有趣或有用的器械,纵然可能十年、二十或三十年后才有回报。

不要总是选择18个月后就会变好的器械,由于你无法预见未来会发生什么。

4、找到事情对你的吸引点

你最先写代码一定是由于它的某些方面吸引了你,你要做的是试着弄清晰那是什么。

这个谜底每一小我私人都纷歧样,对于我来说,我喜欢写代码给我带来的成就感和伶俐的感受。

只有在事情中找到足够吸引你的点,才气耐久坚持下去。

若是你感受不到任何被吸引的点,那你可能需要休个假,或重新寻找你喜欢的器械,由于这样的事情只会让你精疲力竭。

5、这不是短跑或马拉松,这是写日志

若是你是个新手,很可能在下定刻意“我要成为一名程序员”后,列出一个详细的设计,设计中可能包罗8个大点、56个小点等等。

我不会告诉你不要这么激动,但我要说:不要把这个设计太认真。由于你不能能通过盘算和设计来完成所有的事情。

在某些时刻,你并没有“脱离你设定的义务”,你只是“过着自己的生涯”。这不是失败,也不是放弃。

你无法展望什么是有价值的,以是你应该学习所有的器械。我的履历就是:你活得越久,事情得越好,你就越能意识到每件事(每小我私人)都能教给你有用的器械。

你不是在跑短跑或马拉松。相反,这就像是在写日志。

十年后,你会翻看这今天志,然后说,“哇,我做了一些很酷的事情”或者“嗯,我是个很有趣的人”,但我想你应该不会在日志上写“我异常善于Java”。

6、不要混淆事情和职业

不要把事情和职业混为一谈,它们不是一回事。

对于我来说,编写软件是一项异常棒的事情,但只是一个还行或者可以更好的职业。

在接受别人的建议时,也要注重对方提到的是关于事情的建议,照样关于这份职业的建议,若是你把两者混淆,这个建议就没有多大意义了。

7、学习顺序并不主要

在刚入门的时刻,你往往会获得关于首先学习什么语言或手艺的差异建议,但这实在不主要。

若是你没有按老礼貌走,而是开创了自己的蹊径,那并不意味着你没有做好基础事情,也不意味着你就很糟糕。

由于若是某件事真的很主要,你早晚都市发现,并重新去学它。

8、你越优异,就越和别人纷歧样

早期的程序员职业培训(例如博客文章、大学课程、书籍)就像流水线,试图培育你在每一个方面的基本能力。

而且新手很容易误以为,一个首席工程师需要点满许多手艺、每个手艺水平也必须很高,但事实并非云云。

你可以通过编写一段相当简朴的代码并详细地形貌它,就像Patrick McKenzie在《Bingo Card Creator》中做的那样,也可以通过写一些真正有利可图的器械来获得尊重。

除了基本的能力之外,这些蹊径险些没有任何配合之处。

这也是为什么当你求职时问这样的问题是很蠢的:“我是一名有15年岁情履历的软件工程师,通常的薪水是若干?”

15年是云云之久,以至于你应该形成了与其他人差其余优势之处。你写过书吗?从事过赚钱的大型项目吗?整合过一个有趣的开源项目吗?这15年你做了什么?

固然,这也不仅仅是人为的问题。你可以问:“我是一个有15年履历的软件工程师,这意味着我有能力向导这个项目,对吗?”谜底固然是“可能”。接下来的问题是“那在15年里你做了什么?”

9、从实践中学习

我不会建议人们一最先就去学习软件设计的深层原理,这是由于若是你试图把它们看成纯理论来学习,那么险些一定会做错。

对于初学者来说,首先要学会用一些现实的语言构建一个可用的软件。不管是哪一种语言,只有犯一些真正的错误,才气在错误中解决问题。

然后就可以这样循环:实践,犯错,学习理论,修正错误。

固然,这也并不意味着若是你先学习了理论,你就会永远变差,只不外是需要一段时间才气准确使用你所学的知识。

10、使用什么手艺很主要

若是你想在程序员这一行做上几十年,那么你不仅要学习林林总总的手艺,还要学习林林总总的非手艺手艺。

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

11、向其他领域学习

若是我们的行业还很年轻,这意味着什么?这意味着我们还在研究基本原理。

你可以从其他领域学到许多器械。我曾经写了一本关于若何偷学艺术家演习方式的书,正是由于艺术和音乐都是古老的学科,它们已经*盘算机生长几千年了。

以是,若是你遇到了一个问题,你可以思量一下其他领域的人们会若那边理这个问题。

例如,阿图尔·葛文德(Atul Gawande)的《清单宣言(Checklist Manifesto)》中就讲述了航行员、摩天大楼制作者和医生处置问题的截然差其余方式,这些都是很好的方式。

12、不要重复造轮子

众所周知,若是美术家重复画一个静物、音乐家频频练一首曲子,他们都市越来越熟练,但程序员纷歧样。

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

你可以实验重新发现轮子、可以有意用“糟糕”的方式编写代码,看看会发生什么。总而言之,你需要真正善于一些差异寻常的事情。

13、只管去做

我一直在向人人推荐非手艺领域的建议,而不是那些充斥着手艺宅们的论坛,那些论坛里充斥着最近才转行为程序员的人那种偏执的热情。

若是你写程序,你就是程序员,或者软件工程师,或者随便你怎么称谓它。

只要你坚持写下去,你就可以一直做一个程序员,不管若干年。无论若何,若是你坚持下去,你就有资格,这才是最主要的。

怎么样,看完以后,你对程序员行业有没有新的认知?