最近,我在一个程序员临终关怀中心做志愿者,你猜是哪。在那里,我被问了一个有趣的问题:“你在弥留之际,一个孩子来到你身边,说‘爷爷,我想学编程。’你在编程中最遗憾的是什么?”我一开始想说,“别烦我,让我安静地去死。”但仔细想想,这真是一个有趣的问题。编程不像其他职业,有很多路径和观点,没有一个绝对正确的方式。但我发现有一些通病,几乎每个开发者都会后悔自己曾经掉进去过。
今天,我们来看看其中的十个遗憾。
遗憾一: “我希望我写的代码更少。”代码其实是负担,不是资产。你写的每一行代码,未来都需要维护,而且可能会破坏整个程序。刚开始学编程时,大家代码写得少,因为不懂。但随着经验增加,代码量上去了,最终大家会意识到“少即是多”。代码行数减少了,生产力却提高了。有一天,你可能会成为所谓的“10倍工程师”,写出的代码行数变成负数。我不怕承认,我对自己写的99%的代码都感到后悔。我记得第一次在JavaScript中实现复杂的设计模式时,觉得自己简直是个天才。然而几年后,我意识到,这一切都可以用一个普通函数解决。这让我意识到,简化代码是值得追求的,但同时也要考虑到可读性、性能等因素。
遗憾二: “我希望我更早学会编程。”年轻时,学习能力更强。随着年龄增长,学习能力会逐渐减弱。这也是为什么很多世界级的音乐家都是从小就开始学习的。你可以在任何年龄学编程——我30多岁时还学会了打三角铁——但早学总是更好。科技行业确实存在年龄歧视,雇主更喜欢年轻、脑子灵活的程序员。全球程序员的平均年龄大约是30岁。所以,如果你想学编程,现在就是最好的时机。
遗憾三: “我希望我完成了更多的项目。”我的项目文件夹里有太多没完成的项目。完成一个软件项目几乎总是比预期要花更长时间。所谓的90/90规则就是:当你觉得完成了90%时,其实你还剩90%要做。作为独立开发者,你可能会分心,放弃项目,然后开始新的项目。我已经这样做了无数次。回想起来,我真的后悔没有完成那些项目。但有时候,认清项目不值得完成,比完成它更重要。
遗憾四: “我希望我获得了计算机科学学位。”上大学并不是学编程的最有效方式。你在工作中或者自己动手做项目中学到的更多。你不需要学位也能找到工作,甚至在大公司也是如此。但大学、社交和实习是获得高薪技术工作的最可靠途径。虽然学位有时看起来没用,但很多工作仍然要求学位。
遗憾五: “我希望我在2010年购买了比特币。”如果你在比特币0.25美元时投资100美元,现在的身价大约是2500万美元。想到这让我很难过,但同时想到有人在那个时候买了比特币,然后扔掉了硬盘,现在在垃圾场里寻找,我又感觉好受了些。
遗憾六: “我希望我学习了更底层的语言,比如C。”大多数程序员今天都从学习高级语言开始,比如Python和JavaScript。你可以在不学底层语言的情况下度过整个职业生涯,但这也引发了一个问题:你算是真正的程序员吗?答案是否定的。幸运的是,只需学习C的基础,就可以让你成为更好的程序员。
遗憾七: “服务器上的JavaScript。”我不后悔在服务器上使用JavaScript。JavaScript可能不是最有效的语言,但它在整个技术栈中使用同一种语言,能带来更快的开发速度。
遗憾八: “刷LeetCode题。”很多开发者梦想进入大公司。为了实现这一目标,你需要通过技术面试。提高算法能力的唯一方法就是练习。我花了无数小时在LeetCode上练习,但每次我的解决方案都是用哈希表暴力破解。回顾过去,我后悔浪费了所有这些时间。
遗憾九: “我希望我早些重视健康。”整天坐在电脑前非常不健康。结合高压和不良饮食,你的心脏可能会在30岁之前爆炸。很多人低估了这个职业的危险性。当你照顾好身体健康时,你的心理健康和敏锐度也会提高。
最后,遗憾十: “我希望我从未学习过编程。”有时感觉我们并没有做什么真实的事情,而是为了一个虚假的老板创造虚拟软件。我羡慕那些每天与海龟共游的潜水教练,或者每天拯救生命的急救人员。这些工作报酬不高,但至少它们是真实的。我担心在我生命的最后时刻,我的孙子会问我一生的成就,而我能想到的最令人印象深刻的壮举可能是,“孩子,早在24年,我曾在修复生产故障时只引入了三个新的bug。”