成为程序员之后你明白了什么?

如果问你成为程序员以来,你明白了哪些道理,你的回答会是什么呢?

知乎上面有个提问,问题是成为程序员后你都明白什么?获取的几十万的浏览量。

首赞的一个回答是引用了阮一峰老师的一个博文,是翻译美国最大的论坛 Reddit 之前的一个热帖,是一个喝醉了的十年工作经验的程序员写下来的,堪称是程序员的酒后真言。

  1. 职业发展的最好方法是换公司。

  2. 技术栈不重要。技术领域有大约 10-20 条核心原则,重要的是这些原则,技术栈只是落实它们的方法。你如果不熟悉某个技术栈,不需要过度担心。

  3. 工作和人际关系是两回事。有一些公司,我交到了好朋友,但是工作得并不开心;另一些公司,我没有与任何同事建立友谊,但是工作得很开心。
  4. 我总是对经理实话实说。怕什么?他开除我?我会在两周内找到一份新工作。
  5. 如果一家公司的工程师超过 100 人,它的期权可能在未来十年内变得很有价值。对于工程师人数很少的公司,期权一般都是毫无价值。
  6. 好的代码是初级工程师可以理解的代码。伟大的代码可以被第一年的 CS 专业的新生理解。
  7. 作为一名工程师,最被低估的技能是记录。说真的,如果有人可以教我怎么写文档,我会付钱,也许是 1000 美元。
  8. 网上的口水战,几乎都无关紧要,别去参与。
  9. 如果我发现自己是公司里面最厉害的工程师,那就该离开了。
  10. 我们应该雇佣更多的实习生,他们很棒。那些精力充沛的小家伙用他们的想法乱搞。如果他们公开质疑或批评某事,那就更好了。我喜欢实习生。
  11. 技术栈很重要。如果你使用 PythonC++ 语言,就会忍不住想做一些非常不同的事情。因为某些工具确实擅长某些工作。
  12. 如果你不确定自己想做什么东西,请使用 Java。这是一种糟糕的编程语言,但几乎无所不能。
  13. 对于初学者来说,最赚钱的编程语言是 SQL,干翻所有其他语言。你只了解 SQL 而不会做其他事情,照样赚钱。人力资源专家的年薪?也许5万美元。懂 SQL 的人力资源专家?9万美元。
  14. 测试很重要,但 TDD (测试驱动的开发)几乎变成了一个邪教。
  15. 政府单位很轻松,但并不像人们说的那样好。对于职业生涯早期到中期的工程师,12 万美元的年薪 + 各种福利 + 养老金听起来不错,但是你将被禁锢在深奥的专用工具里面,离开政府单位以后,这些知识就没用了。我非常尊重政府工作人员,但说真的,这些地方的工程师,年龄中位数在 50 岁以上是有原因的。
  16. 大多数头衔都无关紧要,随便什么公司都可以有首席工程师。
  17. 手腕和背部的健康问题可不是开玩笑的,好的设备值得花钱。
  18. 当一个软件工程师,最好的事情是什么?你可以结识很多想法相同的人,大家互相交流,不一定有相同的兴趣,但是对方会用跟你相同的方式思考问题,这很酷。
  19. 有些技术太流行,我不得不用它。我心里就会很讨厌这种技术,但会把它推荐给客户,比如我恨 Jenkins,但把它推荐给新客户,我不觉得做错了。
  20. 成为一名优秀的工程师意味着了解最佳实践,成为高级工程师意味着知道何时打破最佳实践。
  21. 发生事故时,如果周围的人试图将责任归咎于外部错误或底层服务中断,那么是时候离开这家公司,继续前进了。
  22. 我遇到的最好的领导,同意我的一部分观点,同时耐心跟我解释,为什么不同意我的另一部分观点。我正在努力成为像他们一样的人。
  23. 算法和数据结构确实重要,但不应该无限夸大,尤其是面试的时候。我没见过药剂师面试时,还要测试有机化学的细节。这个行业的面试过程有时候很糟糕。
  24. 做自己喜欢的事情并不重要,不要让我做讨厌的事情更重要。
  25. 越接近产品,就越接近推动收入增长。无论工作的技术性如何,只要它接近产品,我都感到越有价值。
  26. 即使我平时用 Windows 工作,Linux 也很重要。为什么?因为服务器是 Linux 系统,你最终在 Linux 系统上工作。
  27. 人死了以后,你想让代码成为你的遗产吗?如果是那样,就花很多时间在代码上面吧,因为那是你的遗产。但是,如果你像我一样,更看重与家人、朋友和生活中其他人相处的时光,而不是写的代码,那就别对它太在意。
  28. 我挣的钱还不错,对此心存感激,但还是需要省钱。

虽然说国外老哥说的不能代表所有的人,但是在很大程度上还是有共性的,除了上面提到的一些内容,阿粉觉得下面的三条内容也是很有启发的。

  1. 选择比努力更重要。努力很重要,选择更重要。人生就是一个不断选择的过程,每一个当下的选择都是前面一个个选择积累下来的结果,选择一个好的专业学校很重要;选择一个好的公司很重要,选择一个好的方向也很重要。要知道一个好的平台可以帮我们走很多捷径。
  2. 技术是为了业务服务的。见过很多程序员在做需求或者业务的时候只考虑技术层面的东西,并不会主动去了解业务,很多时候这是种不成熟的表现,我们要明白所有的技术都是为了业务服务的,抛开业务场景讨论技术都是不成熟的,技术的发展和升级最终的结果都是业务价值的体现。任何业务需求如果没有产生价值,背后的技术再厉害,再牛逼也没有用,不会有人歌颂,不会有人记住。
  3. 当没有能力改变环境的时候,要么忍,要么滚。在职场中遇到不公或者觉得自己怀才不遇,一身本领无用武之地的时候,我们要从自身找原因,不要抱怨环境而是不断的努力提升自己的能力,通过自己的能力去改变自身的环境,从而实现自己的抱负,在没有能力的时候要么忍,要么滚。
Java Geek Tech wechat
欢迎订阅 Java 极客技术,这里分享关于 Java 的一切。