当前位置: 首页 > 科技观察

当程序员40年是一种怎样的体验?他给出了13条建议

时间:2023-03-20 18:06:54 科技观察

本文经AI新媒体量子比特(公众号ID:QbitAI)授权转载,转载请联系出处。当了40年的程序员是一种怎样的体验?一位从1984年开始做程序员的老人出来“展示自己的经历”。他总结了自己近40年的从业经验,整理出13条建议,希望能给想长期做程序员的新手们提供一些帮助。文章一出,就在reddit和推特上引发了讨论,不少程序员也纷纷在帖子下发表评论。有网友表示:不能再赞同了!一起来看看,看看他分享了哪些干货。近40年码农的经验分享。这位老人就是诺亚·吉布斯。他曾在Nvidia、AppFolioInc、DAQRI等公司工作。他目前在Shopify工作。作为资深软件开发人员,一直活跃在开发第一线。但与他想象的不同,这次他并没有介绍要学习什么语言或框架,而是指出了一些他认为比技术更重要的东西。(以下是作者NoahGibbs的叙述)1.任何年龄开始都不晚大约一年前,我45岁的时候,开始学弹钢琴。我觉得我今年一直在进步,而且我确信如果我坚持下去,到60岁时我会相当不错。学习编程也是如此,当你已经有了一些其他领域的背景,你可以很快学会编程。相信我,如果你50岁开始做程序员,10年后,你60岁的时候,肯定比我18岁的水平要好很多。我见过很多20、30甚至40岁都没有开始的优秀程序员,所以我不知道为什么你不能在50、60岁开始。这一行需要时间和工作,但你不必年轻。2.尝试不同类型的编程。如果你是刚起步,想长期从事编程行业,我的建议是:多写软件。你写什么样的软件并不重要。在我40年的程序员生涯中,许多趋势来来去去。可以说让自己尝试不同类型的编程很重要。这可以让你的头脑不至于冻结,事实证明,几乎任何一种规则都可以教给你一些东西。如果您过于执着于一项任务,您很可能会失败。3.不要害怕回报慢。不要认为你学的东西没有用,因为无用只是相对的。我曾经将多年的业余时间投入到一种名为DGD的古老MUD编程语言中。它当然没有实用价值,因为几乎所有关于它的东西都是奇怪的和非标准的,而且很少有真正适用的。但是它教会了我很多,它教会了我后来在RubyonRails中应用的东西,它教会了我如何用数据库编程,它教会了我在我后来学习的5或6种语言中可以使用的东西。有趣的是,多年后我在DGD找到了一份咨询工作。世界上还没有很多DGD工作,但我有一个!这比我学过的很多“实用”的语言都要实用。正如我经常对自己说的:“现在还早。”你可以学到更多有趣或有用的东西,即使它可能在十年、二十年或三十年内没有回报。不要总是选择18个月后会更好的东西,因为你看不到未来会发生什么。4.找一份对你有吸引力的工作。你开始编码是因为它有一些吸引你的地方。你要做的就是试着弄清楚那是什么。这个答案每个人都不一样。对我来说,我喜欢写代码给我带来的成就感和智慧。只有在工作中找到足够多的吸引点,才能长久地坚持下去。如果你感觉不到任何吸引力,你可能需要休假或重新找到你喜欢的东西,因为这样的工作只会让你筋疲力尽。5.这不是短跑或马拉松,这是日记。如果你是新手,很可能在你下定决心“我要成为一名程序员”之后,会列出一个详细的计划。该计划可能包含8个大点,56等等。我不会告诉你不要太兴奋,但我会说:不要把这个计划看得太严重。因为你不能通过计算和计划来做每一件事。在某些时候,你不会“放弃你打算做的事情”,你只是“过你的生活”。这不是失败,也不是放弃。你无法预测什么是有价值的,所以你应该学习一切。我的经验是:你活得越久,工作得越好,你就越能意识到每件事(每个人)都可以教给你一些东西。你不是在跑短跑或马拉松。相反,这就像写日记。十年后,你会看着这本日记说,“哇,我做了一件很酷的事”或“嗯,我是一个非常有趣的人”,但我认为你不会在里面写“我非常擅长Java”。6.不要把工作和事业混为一谈。不要将工作与职业混淆。它们不是同一件事。对我来说,编写软件是一份很棒的工作,但是一份还可以或者可以做得更好的职业。在接受别人的建议时,也要注意对方是否提到了工作建议或职业建议。如果你混淆了两者,这个建议就没有多大意义。7.学习的顺序无关紧要当你刚开始的时候,你经常会得到关于先学什么语言或技术的不同建议,但这并不重要。不按老规矩走自己的路,不代表你没有打好基础,不代表你很糟糕。因为如果某件事真的很重要,你迟早会发现并重新学习它。8、你越好,你就越不一样。早期的程序员职业培训(例如博客文章、大学课程、书籍)就像一条流水线,试图在各个方面培养你的基本能力。而且新手很容易误以为一个总工程师需要补很多技能,而且每个技能等级都必须很高,其实不然。你可以通过编写一段相当简单的代码并详细描述它来赢得尊重,就像PatrickMcKenzie在《Bingo Card Creator》中所做的那样,或者通过编写一些真正有利可图的东西来赢得尊重。除了基本能力外,这些路径几乎没有共同之处。这就是为什么在求职时问这样的问题是愚蠢的:“我是一名拥有15年经验的软件工程师,一般薪水是多少?”15年这么长的时间,你应该形成与众不同的优势。你曾经写过一本书吗?曾经从事过一个赚钱的大项目吗?曾经组建过一个有趣的开源项目吗?15年来你在做什么?当然,这不仅仅是工资的问题。你可以问:“我是一个有15年经验的软件工程师,这意味着我有能力领导这个项目,对吧?”答案当然是“可能”。下一个问题是“那你15年来一直在做什么?”9.边做边学如果你不学习理论,那么你几乎肯定会做错。对于初学者来说,它从学习用某种实际语言构建一个可用的软件开始。不管是什么语言,只有犯一些真正的错误,才能在错误中解决问题。然后你可以这样循环:练习,犯错,学习理论,改正错误。当然,这并不意味着如果你先学习理论,你就会永远更糟,只是需要一段时间才能正确使用你所学的知识。10、你用什么技术很重要如果你想做个几十年的程序员,那么不仅要学习各种技术,还要学习各种非技术技能。例如,“至少学习一门函数式编程语言”对于一个钢琴家来说就像“学习演奏莫扎特的钢琴曲”一样必要,但同时,学习编程中涉及的一些边缘技术会为你培养额外的技能。洞察力。11、向其他领域学习我们的行业年轻意味着什么?这意味着我们仍在研究基础知识。你可以从其他领域学到很多东西。我曾经写过一本关于如何窃取艺术家实践的书,正是因为艺术和音乐是比计算机早数千年的古老学科。所以,如果你有问题,你可以想想其他领域的人会怎么处理。例如,AtulGawande的?关于飞行员、摩天大楼建造者和医生处理问题的不同方式是一个很好的例子。12.不要重新发明轮子。众所周知,如果艺术家反复画静物,音乐家反复练习一段音乐,就会越来越熟练,但程序员不一样。程序员之间有句俗语叫“不要重新发明轮子”,我们的工作就是想办法让计算机做所有重复的工作,让我们只能做新的工作。您可以尝试重新发明轮子,可以故意以“糟糕”的方式编写代码,然后看看会发生什么。总而言之,你需要真正擅长一些不寻常的事情。13.去做吧。我一直在推荐非技术建议,而不是充满技术极客的论坛,这些技术极客具有最近程序员偏执的热情。如果您编写程序,那么您就是程序员、软件工程师或任何您想称呼的人。只要坚持写作,无论多少年,你都可以一直是程序员。无论如何,如果你坚持下去,你就会有资格,这才是最重要的。怎么样,看完之后是不是对程序员这个行业有了新的认识呢?除了文字版,作者还在YouTube上上传了视频版,链接放在评论里。有兴趣的朋友可以自己去扒~文章链接:https://codefol.io/posts/the-forty-year-programmer/#disqus_thread视频链接:https://www.youtube.com/watch?v=UPkJGU7Itb0