1x 开发人员的经验法则
文章翻译自:Rules of thumb for a 1x developer,提取了一些我觉得有用的内容,仅供参考。
0. 前言
作为一名 1x 开发人员,需要大量使用传统智慧。关于软件开发,我没有太多有趣或新颖的话可说。
大体上,我没有足够的时间去长时间离开工作,或者承担更大的副业项目,或者进行广泛的阅读,或者内卷。我只有一点点零散的时间。
我想尝试用以下方式来提高我的软件工程技能:
- 写下我在软件工程领域的一些琐碎想法。
- 把我的想法分享给比我聪明的人,并邀请他们进行严厉的批评。
- 基于第二步的反馈,更新我的想法。
- 尝试制定一种方法来查找和优先处理有用的软件工程信息,或者反思新项目,并将其整合到第一步中。
1. 元法则
1.1 规则是很棒的东西
人类天生就是非理性,前后不一致的,喜欢追随权威模式。也就是说,通常情况下,大多数人在设置目标时会自然而然地考虑如何取悦领导者、模仿周围的人以及遵循某些已有的模式。
在一个复杂的世界中保持理性和一致性会非常困难。因此,“听从领导的指示”或“做同伴们一样的事情”是一种非常方便的捷径。
亚马逊公司以其一套相当普遍的原则而闻名,这些原则在招聘、做出艰难的决定和评估权衡时都会出现。 公司拥有这些原则会变得更好,是因为一般而言,拥有原则总比退回到跟随领导的行为更好。
思考是困难的,做决策也是困难的。拥有一些深思熟虑的规则来指导决策有助于我们变得更好一些。
总而言之,下面的经验法则与亚马逊的原则并不完全相同。 它们大多只是经验法则,代表了当我思考其中一个主题时我脑海中通常会发生的事情。
2. 生产力和学习力
2.1 大部分学到的东西在其直接背景之外都是无用的
在亚马逊,我从事过两种完全不同的产品和行业。我发现,我在一份工作中学到的大部分知识(大约90%),对下一份工作完全没有用。 即使这两份工作属于同一个领域。
那 90%的知识,它们都是关于一个大组织如何运作的具体知识,涉及其他地方或许根本不存在的内部工具和业务概念。
而剩下的10%,是非常重要的10%,比如:如何更好地处理电子邮件,如何应对办公室政治,或是能伴随着你从一个工作到另一个工作的技能。
自私地说,我倾向于这样的想法:如果我今天所做的90%工作在未来的职业生涯中没有帮助,那么我应该要么减少这90% 的工作量,要么不像以前那样那么在意这90%的工作量,要么找到一份愿意牺牲这90%时间的工作,因为这份工作对我来说非常重要,或者它的薪水非常高。
这条规则可能更适合我,因为我已经换了很多职业。对于其他人,他们已经能够将大部分技能从一份工作转移到另一份工作。
3. 编程语言
3.1 Java
Java非常适合大型企业应用程序,很难想象亚马逊等公司会使用其他编程语言。这是因为Java具有最深入的库和社区支持,并且静态类型使得在大公司内部处理大量数据模型变得更加容易。
3.2 Python & Ruby
Python和Ruby非常相似,它们都是脚本语言。当速度比可读性或调试更重要时,你可以使用它们。而Python适用于机器学习/人工智能应用程序。
在使用Python时,您应该使用Type hints来使代码更加清晰易懂。
3.3 Javascript
我对JS的指导方针是:
- 使用
Typescript,它会让你的生活更简单。 - 尽可能将逻辑推到服务器上。如果前端不是非常复杂,我会考虑使用像Phoenix这样的服务器端渲染框架。
- 如果需要前端交互性,请使用像Vue或React这样的框架。
- 不要忽略单元测试。