`
bugtags
  • 浏览: 29552 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

老程序员应该记住的 5 件事

 
阅读更多

如果你甘于现状,并且已经在计划着怎么用退休金了,那么你不是这个帖子的主角。当然还是要恭喜你,已经快熬出头了。但是,如果你同我一样,尽管发现自己在变老,但却依然无法抵挡编码和构建东西的欲望,那么请继续往下看。

我曾是一个系统软件工程师,但在我快40岁的时候,我被创业撞了一下腰。我认为创建自己的公司是一件很酷的事情。我建立了风险投资,在一些非常小的饥饿创业公司得到了一些花哨的头衔。我很自信我会成为一个好的CEO,一个不算坏的管理者,而且即便我不再编码,我也可以聘请一些优秀的程序员和管理人员——以求高品质和创新。

我顺从自己的内心,并尽了最大的努力去奋斗。然后,我54岁了,年纪大了,开始有点力不从心。记忆力也下降了。我已经没法像以前那样学习得既快又多了。

Alt text

我的这些负面的想法因为我所看到的种种新生生物而一点一滴地强大起来。这么多的新技术,像潮水一般汹涌而来。我讨厌node.js,我认为Web开发框架是可怕的,并且对一些我认为神圣不可侵犯却堕落成为陈词滥调的敏捷和极限编程等名词表示哀悼。我渴望曾经那些大家规范行为,认真仔细编码和测试的美好时光。

然后有一天晚上,当我正在看一部毫无新意的老电影《星际迷航》时,里面的James T. Kirk感叹,他感觉自己正在衰老,就像蜡烛一点一点在燃烧。Spock毫不犹豫地以他惯有的自信和逻辑风格说:

请恕我直言,如果你接受晋升的话,绝对是一个错误。指挥飞船是你首选的最好命运:其他的你根本就发挥不出作用。——Spock
我是不是也做了同样错误的选择?转去管理层(去做一些勉强擅长的事情),而不是坚持做我真正擅长的事情,是否是一个错误呢?

但是,幸运的是,我很快就意识到,这个问题的答案是“yes”。我忘了成为一个软件工程师是我首选的最好命运,这些年来,我的编码能力并没有任何进步。第一家基于我写的一个软件而成功的公司,至今为止仍在使用大部分代码。

因此,在历经一年时间的彻底反省之后,我开始学习新的语言,开始迎风破浪地向前冲。我真的很幸运,到57的时候,我甚至还为一家小型的本地创业公司设计和创建了迄今为止我写的最好的软件之一。

如果你和我同病相怜,都一样正在逐渐走向老程序员的“死胡同”,那么欢迎阅读我总结提炼出的一些建议,希望能对你有用。

第一件事:不忘初衷

随着年纪一点一点地变大,我们会渐渐厌倦处理事情。我们会厌倦于花大量时间去做一些收效甚微的事情。我们会厌倦于看到一遍又一遍地犯同样的错误。我们开始感叹“逝者如斯夫 不舍昼夜”。而面对那些快要退休的朋友,我们开始羡慕他们,羡慕他们安全,可靠,有时略显无聊的工作,羡慕他们快要拿到退休金,可以过舒坦的日子了。

从头开始创业,用20年时间去经历另一种不一样的人生,听上去很荒唐,而且老实说,我的妻子到现在还在絮絮叨叨这一点。

但是,当我再次回到这一领域的时候,感觉就像又是第一次写软件,一种小别胜新婚的兴奋之情油然而生。日新月异的技术。如此多有待解决的问题。层出不穷的新发明和再创造。软件成为了一个全新的领域,到处都是新的思路和机遇。

对于我们这个群体中的许多人来说,处于最前沿是最令人兴奋的工作。它像磁铁一样的吸引着我们。而且,我们可以做到!我们这些老程序员拥有更丰富的经验,经历过更多的失败,更多的成功,对于计算机如何工作比业内大多数人士了解得更为透彻。

当然仅仅这些还不够,为了保持相关性,你还得付出一番努力。你需要去学习,去学习新的语言,如Swift,Python和Go。是的,这可能需要几年的时间!并且可能会让你犯以前从来没有犯过的错误。你会停滞不前,你需要知道哪些工具包是相关的。你会看到年轻的程序员将你甩在身后,但不是因为他们更聪明或更敏捷,而是因为他们没有任何顾忌地一门心思往前冲。这正是你需要做的。就像你刚开始进入这个领域一样一往无前。

不要忘记你的初衷,如果你真的想做一些贡献,那么请捆住内心担心年纪变大和畏惧流言蜚语的魔鬼。不要禁锢自己的思想,生活不会你的老去而结束,只要你想飞翔,那么每时每刻都是一个新的开始。

第二件事:不要畏惧混乱

有一句老话叫,“事情变的越多,不变的也越多(the more things change, the more they stay the same)”。事实上,很多东西发生的变化比我们预期的要更小。我们以为现在的程序员能够完全理解编程过程。但其实不是。我们以为当年bug和错误频出的日子已经不复存在了。但它们依然横行肆虐。我们预计花在实验和改张易弦上面的时间会变少。但其实亦不然。

但从另一个角度看,今天的事情与以往却又是全然不同的。

我刚开始是在惠普科学计算器上编程,我唯一见过的程序员还是在电视上面,他们穿着实验工作服,彼时Unix还只是6岁大的稚儿,内核只由两万行代码组成。即使到了80年代中期,软件开发依然是一项独立的活动。家用电脑,虽然功能上已经满足真正的编程,但却并不提供一般人要想高效学会编码所需的工具集和知识。

我不知道在我涉及这一行的1980年有多少程序员存在,但真的不多。因为直到1988年,美国劳动统计局才开始计算这个数值。那时,美国大约有10万个专业的程序员。其中,高级程序员不超过7000人。

而今天,最新的IDC调查估计,全世界大约有1800万个开发人员,而且近一半还是非专业人士。Linux内核GitHub代码库包含980万行代码,有近6000个贡献者。而且,Linux内核还只是github的1千万个代码库中的一个。光是谷歌的企业代码库就有超过20亿行代码。
每时每刻都有很多代码问世。

很多很多。

如今的软件更像是一种极限运动。任何人都可以加入进来。你最好能够习惯这种现状,因为编码已经成为了一种新兴的首要素养。当这个星球上的每所学校让10岁的小孩子都开始学习编程的时候,我们已经无法计算将会有多少开发人员进入到这个行业中。

我们这些,说好听点是有经验的程序员,需要的是接受当今社会这种一窝蜂学编程的现状。就像跑步,很多很多人跑步,但大多数人都是业余的,只有少部分晋升为专业的,而真正够资格参加奥运会的只有凤毛麟角。要想取得成功,那么你需要摒弃你大脑中有关软件的已经先入为主的观念,接受这种混乱的状态。

因为这种混乱的现状,所以软件世界不可谓不鱼龙混杂。人们已经再创造出了我们多年前就知道如何去做的事情。他们正在创造貌似多余的库。他们正在创造新的技术。可能不一定更好,但会比以前的办法更容易。

这是软件增长和发明的黄金时代,工具变得唾手可得。

为了不被这个行业踢出局,你需要重振旗鼓,和其他人竞争,哪怕他们比我们年轻30岁。我们这些老程序员也应该感谢年轻一代的程序员,是他们将我们的智慧,经验和知识添加到这些新的代码库和团队中,从而减少了混乱,并提升了新方向成功的机会。

因此,不要畏惧你看到新的流行词,也不要害怕明显的模仿发明,要学会透过现象看本质。学习强者的态度,学习他们的经验和学习方式。

第三件事:不要留下芝麻丢了西瓜

我最喜欢的编程格言是,“改进软件更多的是通过删除代码而不是添加代码”。这应该成为每个程序员的至理名言。你需要学习的东西,比你想象得还要多。任何可能会妨碍你学习的事情——无论是你应该遗弃的旧程序,还是老观念——都会阻止你进步。

作为一个资深的程序员,我们的工具包包含了许多可靠的技术,这是我们技能的基础。这可以一种祝福,也是一种诅咒。

通常情况下,比起导入一个预先写好的包,我可以更快地编写好一个解析例程。在我编写之前,我通常需要确保包是“正确的”(即:我的做事方式)。我逐渐意识到,我的这种直觉本能过时了。我得尝试导入开源包。如果发现我的这种方式是“不正确的”,那么我应该找出优秀的,可重用的代码,而不是再创造。

在大多数情况下,经验是创新的敌人。进步的真正唯一办法是怀疑一切。只有当你尝试了新的途径,并测试过它知道是更好还是更坏之后,你才能决定采用什么样的做事方式。这就像一个过滤器一样,只接收通过亲身体验的方法思路,过滤掉了只通过检查审核就得出的思维方法。

通常情况下,这种方式很耗费时间,所以你要抵住回到旧习惯的诱惑。毕竟最后的收获是你自己的,所以一定要坚持这种方法道路。就像我说的第一件事,不要忘记你的初衷。随着时间的积累,慢慢的,你会习惯于发现自己的工具箱多了一个很棒的新工具系列,就去逐个检查这些技术是否是有价值的,是否是值得保留的。

如何做好这些抉择也是最重要的技能之一,并且直觉起了关键的作用。幸运的是,你有几十年的经验,比大多数人的直觉更敏锐。只是不要让你的偏见影响到你正确的思考。

第四件事:犹未老矣

假设你今年二十岁,刚从大学毕业的第二年,你发现你不仅热爱写软件,而且也擅长于此。而你周围的人,你的同龄人也在朝自己的方向努力着。有的通过创建应用程序或探索在线产品理念,启动了一家小得不能再小的软件公司。有些甚至更早就开始创业。John Meyer在他19岁的时候,他的app公司TapMedia就已经在苹果App Store上近40个的app了!

灰心,丧气了?担心自己老了?现在开始,犹未老矣。

什么是20岁的人有的,而你没有的?没错,他们拥有着:一往无前的冲劲以及无穷无尽的热情。但是,你所拥有的比这些更重要:经验,知识,以及经历过的失败能让你避开更多的障碍。

如果一个20岁刚毕业的黄毛小子到他们25岁的时候才能成功创建公司,那么你肯定用不了这么多时间!因为你不需要经历那么多的失败和挫折。更何况,你掌握的技能繁多,如健全的管理和正确的期望,这些真正成熟的技能能让你做得更好。

不管你多大年纪,只要能下定决心朝着目标执行,那么用不了几年你就能取得下一个软件的成功。不要在踌躇和犹豫中浪费生命。每个人都会老去,没有人能阻止岁月的流逝。那么,为什么不能在变老的同时有所建树呢?相信自己。

成就并不是年轻人的专利。Arthur Rubenstein,世界上最伟大的钢琴家之一,80年来凭借其出色的演奏赢得了听众广泛的认可。Julia Child,著名厨师,是在她年届40的时候才开始学习烹饪的。Roget,尽管在他年轻的时候发明了对数计算尺,但是谁都没有想到,他在73岁的时候,居然创作了《Roget’s Thesaurus》!

所以,不要再认为创建公司以及编写新软件只有年轻人才可以,你也能行。尽管如此,但随着你的年纪增大,有一些事情是你不能忽视的。这就是下面我要说的……

第五件事:健康是革命的本钱

还记得以前为了尽快发布下一个版本通宵达旦工作,却依然感觉精力充沛的日子吗?戴上耳机,沉浸在代码的海洋中。房间中只有屏幕发出的暖光,和旁边满是可乐罐的垃圾桶,以及乱七八糟的比萨饼盒子相映成趣。

那样的日子已经一去不复返了。当你一把年纪的时候,如果你要搞新项目,那么你就不能再采取这样的做事方式。因为你的身体条件已经不允许了。你现在的身体更像是一个生意上的合作伙伴,合作的好就能协助你工作,合作的不好,就会拖你的后腿。

别不承认。你敢说,你现在的肌肉不会偶尔疼痛吗?你现在没有大腹便便吗?想必医生经常会告诫你要减肥,要多锻炼了吧。验光师甚至开始建议你佩戴“远近双用眼镜”了吧。……

总之,你需要改变生活和工作的方式。可以通过锻炼和改变一些生活方式的来克服这方面的生理问题。健康的身体能让你在应对挑战的时候也不会力不从心,能够让你老骥伏枥,志在千里,从容地应对风险和责任。

改变不会自行发生,它需要你的管理和约束。但是这往往却是我们再次启程的拦路虎。因为我们身边有着太多的责任。家庭,孩子,以及需要承担的家庭财政义务。大多数人会随着年纪的增长越来越重视这些。而冒风险以及再次学习技术往往会让人觉得是不负责任的。
将自己接下来的人生继续定义为程序员,可能意味着你永远不要想退休了。因为一不留神随时随地就会遇到新事物。正是这种不可抗拒的学习心态推动着你的职业生涯的进步。

希望我上面提到的这五件事能够成为你的精神食粮。并且我还要再次提醒你,无论什么时候开始,都不算太晚。不管你是什么背景,总有可以继续完成的重要工作。如果你是一个商业程序员,那么整个商业世界还处在软件中断的阵痛中。如果你是一个网页设计师,那么我想说的是,web 8.0还没有大放光彩。

当然如果你是一个iOS程序员,那么建议你写一个优秀的电子邮件app,不知道你行不?

译文链接:码农网
英文原文:Five Things Old Programmers Should Remember
翻译作者:码农网 – 小峰

分享到:
评论

相关推荐

    程序员每天该做的事

    以下是对程序员每日、每周、每月以及每年应该做的事情的详细解析: **每日任务** 1. **写工作日志**:通过记录每天完成的任务和遇到的问题,有助于回顾和学习,避免重复犯错。 2. **规划明日工作**:列出明日待办...

    作为程序员要取得非凡成就需要记住的15件事

    根据给定的信息,我们可以总结出以下15个关键知识点,这些知识点对于程序员在职业生涯中取得非凡成就至关重要: ### 1. 建立强大的个人品牌 建立强大的个人品牌非常重要,这意味着你需要通过各种方式(如社交媒体、...

    程序员应该掌握和了解的

    一个程序员应该具备的基础知识和概念 1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住...

    每程序员应该知道的事

    ### 每个程序员都应该知道的事 #### 一、每日必做事项 1. **总结一天的任务完成情况:** - 最佳的方式是撰写工作日志,详细记录当天完成的工作内容以及遇到的问题。这种习惯有助于积累经验,为以后遇到相似问题...

    worldwindjava源码-97-Things-Every-Programmer-Should-Know:总结程序员应该知道的97件事

    件事 +10 作者:Kevlin Henney Takuto Wada,Dai Natsume 1. 技术债务 有技术债务是有意的,技术债务是由于粗心造成的。两者应该区分。这种技术债的存在应该永远记住并尽快偿还。 2. 如果您充分学习了函数式编程的...

    一个程序员每天该干的事

    ### 一个程序员每天该干的事 #### 一、工作日志与反思 - **撰写工作日志**:记录当天的任务完成情况以及遇到的问题。通过这种方式,不仅有助于回顾过去的工作,还可以帮助总结经验教训,为未来的工作提供参考。 - *...

    Java程序员面试宝典5.pdf

    在Java程序员面试宝典5.pdf中,包含了大量关于Java编程的知识点,涵盖了JavaSE基础、Java语法、多态、异常处理、常用API以及数据类型等多个方面,以下是对这些内容的详细知识点解读。 ### JavaSE基础知识点 1. **...

    程序员接私活攻略

    然而,对于许多程序员来说,如何有效地接私活并不是一件容易的事情。这篇攻略将分享作者近十年的SOHO(居家办公)经验,帮助程序员们更好地理解和操作外包项目。 首先,寻找项目来源是关键。传统的途径是通过人脉...

    程序员那点儿事儿

    成为一名出色的程序员并非易事,但通过不懈努力和持续学习,每个人都有机会实现这一目标。关键在于保持对技术的热情,勇于面对挑战,不断拓展自己的知识边界。记住,编程不仅是一项技术,更是一种艺术,享受其中的...

    程序员休息手册注意自己的身体

    【程序员休息手册】关注身体健康,保持高效工作状态 在快节奏的IT行业中,程序员们往往长时间沉浸在编程和问题解决中,忽视了对身体的保养。然而,健康的身体是保证工作效率和创造力的基础。以下是一些针对程序员的...

    一个优秀的程序员的十个习惯

    成为优秀的程序员不仅在于编写高质量的代码,更重要的是养成一系列有益的习惯,这些习惯能够提升个人技能,促进团队协作,以及保持对技术的...记住,优秀程序员的标志不只是编写代码,更是如何高效、灵活和合作地工作。

    Java程序员+上班那点事儿 doc

    ### Java程序员+上班那点事儿 #### 一、引言 本书旨在帮助即将步入程序员行业的朋友们更好地理解这个职业,包括行业现状、所需技能以及如何在职场中脱颖而出。通过深入剖析求职过程中遇到的问题及其解决方法,本书...

    程序员简历模板.pdf

    在制作程序员或测试开发工程师的简历时,关键在于突出你的技术实力、实践经验及个人成就。以下是一份详细的制作指南: 1. **个人信息**:包括姓名、年龄、性别、联系方式(电话和邮箱)。确保这些信息准确无误,...

    程序员简历模板下载

    在IT行业中,简历是每个程序员展示自己技能、经验和项目经历的重要工具。对于许多初次求职或不熟悉简历制作的程序员来说,找到一个合适的简历模板可以大大...记住,简历是你的营销工具,它应该充分展示你的价值和潜力。

    程序员每天要做的事.doc

    作为一名程序员,日常的工作不仅仅是编写代码,更包含了自我提升、团队协作和职业规划等多个方面。以下是一些关于程序员每日、每周、每月以及每年应做的重要事项的详细解释: **每日任务:** 1. **总结工作日志**...

    程序员1000套简历模板大全

    在IT行业中,简历是程序员展示自身技能和经验的重要工具,对于求职者来说,一份精心设计的简历能够大大提升获得面试机会的概率。"程序员1000套简历模板大全"提供了丰富的资源,帮助程序员们根据自己的专业领域和风格...

    30套精选程序员个人简历模板.rar

    最后,尽管这些模板提供了很好的起点,但每个程序员都应该根据自己的经历进行个性化调整,使其真正反映出自己的独特价值。记住,一份好的简历不仅仅是模板,更重要的是内容的质量和真实性。 总之,"30套精选程序员...

    c语言高级程序员编程指南

    《C语言高级程序员编程指南》是一本专为已经掌握C语言基础并希望深入学习和提升的程序员准备的书籍。本书旨在帮助读者理解C语言的精髓,掌握更高级的编程技巧,提升程序设计的能力和效率。 在C语言的世界里,高级...

    张辉-布道师-《程序员的credit 》

    在众多程序员中脱颖而出的关键是拥有独特的个人特点,这些特点能够让人记住你,并且与他人区分开来。例如,拥有创造性的解决方案、攻克技术难题的能力等。通过分享个人的见解、研究成果或新知识,程序员可以向团队...

Global site tag (gtag.js) - Google Analytics