You Can Do Better

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

好了,是时候发布这篇文章了。我已经围绕这个话题跳了很久了,告诉你如何提高每小时的收入,如何管理那些不让你成长的愚蠢经理,如何提升你的职业生涯以及如何应对办公室奴役。现在,我将为你提供一份简单、明晰的建议清单:如果你想成为一名更成功的程序员,你应该做些什么。不仅仅是成为更好的算法设计师,尽管这也很重要。也不仅仅是成为一个更有趣的团队合作者,尽管这也很重要。而是成为一名更成功的软件工程师,无论是在经济上还是在社交上。

这里没有特定的顺序,只是我脑子里所有的想法,都放在一个清单里。

制作自己的产品。学习如何编程和实际编程是不同的。学习的最佳方式,也是唯一正确的方式是“通过实践”。最好的实践方式就是创造一些有意义和重要的东西。如果是你自己的产品,那就更好了。如果有人为此付钱,那就更好了。每当我想学习新东西时,我都会设定一个现实的目标,并尝试实现它。几年前,我对学习Python很感兴趣。我没有去参加在线课程或阅读书籍,而是尝试为自己的市场营销目的创建一个小型 Web 应用程序。那时候我懂Java,但我用Python编写了那个应用程序。我的建议是:永远不要以学术方式学习任何东西,始终使用你想学习的技术栈来做一些真实的事情。

切换编程语言。不要固守一种技术栈,无论你有多喜欢它。当然,你不想成为一个“样样精通”的人,因为他们从来没有得到很高的薪水。你想要专注。但是,生活中只有一个专注是不够的。我每隔4到6年就会切换一次编程语言。我从Pascal开始,然后是C++,然后是Java,然后是PHP(是的,你没听错,我是ZCE/ZFCE),然后又是Java,现在是Ruby。

完整的开发周期。为“能在你的笔记本上工作”的代码写代码是一个很大的成就。对于初级程序员来说是如此。资深开发人员知道这只是工作的一部分。是较小的部分。更大的部分是将你的“工作中”的代码变成一个市场可用的产品,这意味着合并和自动测试、编译和多平台打包、分阶段和验收测试、错误报告、指标收集、A/B测试、压力和负载测试、部署到生产环境,甚至向投资者报告。现代软件开发生命周期是一个巨大的混乱大秀。你知道它是如何工作的吗?你不知道?你不关心?那你就不是一名资深开发人员。

开源你的代码。就像我在How Bright Is Your Future?这篇演讲中所说的,未来的软件几乎完全是开源的。公司保留的专有代码的数量每年都在减少。如果你想成功,你必须成为一个开源倡导者。如果你还在担心,或者没有时间,重新考虑一下。为自己和你的办公室伙伴编写代码,与为成千上万个匿名的GitHub混混编写代码是两个完全不同的故事。你需要时间来适应这个狂野的领域。我花了三年多的时间。不要等待,现在开始。

测试每一样东西。说实话,我对软件质量的几乎所有理解,都归功于写单元测试、模拟、固定、集成测试等痛苦的几个小时。我真诚地相信,一名专业的程序员花在创建自动化测试上的时间比写生产代码的时间还要多。所以,如果你想成为一个更好的工程师,我建议你专注于测试。从Steve Freeman和Nat Pryce的著作《Growing Object-Oriented Software, Guided by Tests》开始,并制定一个规则:只要你对某段代码有任何疑问,就必须通过测试来证明它。

静态分析。嗯,关于软件质量的一半知识都归功于单元测试。另一半归功于静态分析器。我从CheckstylePMD学到的比我读过的所有Java书籍都要多。每当我学习一门新的编程语言时,我都会首先配置严格的静态分析器,然后听取它的建议。我建议你也这样做。倾听你的工具,并确保你的代码完全符合它们的质量期望。不要仅仅将它们用作建议提供者,而要制定一个规则:不要提交任何未完全通过所有静态分析器的代码。

在Stack Overflow上丢脸。Robert Sheckley曾经说过:“要问一个问题,你必须已经知道大部分答案。”朋友、在线聊天和办公室厨房的交谈是初级程序员寻求帮助的好地方。这些人无论你的问题有多么愚蠢,都能理解你,这就是他们溺爱你的方式。你在和他们交谈并得到帮助的过程中并没有成长,而是退化。相反,你应该问那些没有人认识你的人,只有在你的问题表达完美的情况下他们才会回答。有许多地方可以这样做,但Stack Overflow是最好的。确保你的每一个问题都首先在Stack Overflow上发布。然后你可以与你的朋友分享链接。但Stack Overflow第一。

获得证书。我有一些证书,我计划获得更多,尽管我不是真正的有薪水的程序员,也不打算被任何关心简历上的徽章的企业雇佣。然而,我想在通过它们时学到更多东西。甚至当我失败时(到目前为止,我已经失败了两次)。证书给你带来了两个东西:1)它们帮助你填补知识空白,2)它们提高了你的自尊心(当然,如果你通过了)。制定一个规则:每年获得一个新的证书。

参加工作面试。“每隔几年换工作在简历上看起来不好。它告诉招聘人员你不能保住一份工作,不能与同事相处,或者你只是不忠诚,无法承诺。这种陈规旧俗正在迅速过时。停留在一家公司超过两年的工人据说薪水要低50%。”根据Vivian Giang的说法,底线是你必须准备好换工作,因为你将不得不这样做,而且很快。经常参加工作面试是最好的准备方式。制定一个规则:每三个月参加一次面试。

换工作。如果你长

关注关键人物。我在Twitter上(我是@yegor256),Facebook上(点击这里可以找到我),Telegram上(我的频道),Instagram上(点击这里关注我),当然还有GitHub上(我是@yegor256)。从我这里能听到什么新鲜事呢?可能不多,但你会了解到我的专业生活中正在发生什么,我将走向何方,我读了什么,我写了什么等等。我关注谁呢?我喜欢的所有书籍的作者,我曾经喜欢阅读的所有博客作者,我喜欢观看的所有演讲者,重要的公众人物和政治家,无论我是否赞同他们。我相信你也应该这样做,以了解潮流动向。

潜伏。定期查看Hacker News/programming Reddit,也许还有Changelog。这基本上是你需要阅读的全部内容。每周几次,只要浏览一下热门内容就好了。这会让你成为一个更好的程序员吗?不太可能。但这肯定会对你的职业和生活有所帮助。你永远不知道接下来会发生什么,下一个机会在哪里。我仍然为多年前没有足够关注Hacker News上比特币的公告感到遗憾。

参加会议和聚会。理想情况下,作为演讲者出席。否则,至少每月一次作为听众参加。你会学到新东西吗?我不这样认为。但你肯定会通过与行业中最积极和有动力的人见面来激励自己,包括演讲者和其他听众。大多数公司都会准备赞助你的门票。每年参加两个大型会议就足够了。其他时间参加本地聚会,你可以在meetup.com上找到它们。

就是这些。希望这个清单对你有所帮助。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 14:05

sixnines availability badge   GitHub stars