我是一名程序员而且我很蠢


来自Anton Zhiyanov文章:
我写代码赚钱已经有 15 年了:我尝试过其他角色--产品管理、分析、测试--但都没有坚持下来。这些年来,我发现自己很笨。

我没有被诊断出患有任何特殊疾病,但我的智力非常有限。我发现即使是简单的 Leetcode 问题也很有挑战性。阅读有关基本共识算法的内容会让我头痛欲裂。我无法真正理解代码库中复杂的依赖关系。我学不会 Rust 这样的花哨语言(我试过,但说实话,太难了)。我讨厌微服务和现代前端,因为它们有太多可移动的部分,我无法一一掌握。

那我该怎么办呢?

我使用最简单的主流语言(Go)和最基本的 Python。我编写易于理解和维护的简单代码(尽管有时很冗长)。我避免深度抽象,总是选择组合而不是继承或混合。我只在绝对必要时使用泛型。只要有可能,我更喜欢扁平数据结构。

我尽可能少地引入外部依赖性(理想情况下为零1)。我设计的模块具有清晰的 API(不是罗伯特-马丁定义的 "清晰"),但几乎从不将其提取为微服务。我使用 JSON-over-HTTP API,但从不使用 GraphQL。我花时间学习 SQL,并经常使用它2。我采用基本的弹性模式,如超时、断路器和反向压力。

我尽量少用软件组件。理想情况下,只使用应用程序本身、SQLite 或 PostgreSQL 进行数据存储,以及 Docker 和少量 shell 进行部署。根据需要使用 Nginx/HAProxy。无 API 网关、无分片、无分布式缓存、无消息队列、无 NoSQL/NewSQL/Graph/whatever 数据库、无服务发现、无join、无云原生、无 FAANG 级最佳实践。

我画依赖关系图和顺序图来理解遗留代码。我写注释来提醒未来的自己,为什么某个函数要这么做,或者为什么某个 if 分支是必要的。我编写文档,力求简洁易读。我写例子,写很多例子。有时甚至是交互式3。

我构建的软件似乎还能正常运行。它不会给谷歌工程师留下深刻印象,这是肯定的。但它能很好地为用户和企业服务。

所以,做个傻瓜对我来说也挺好。

网友:
1、这篇文章坦率地探讨了作者自认在理解复杂编程概念方面的局限性,尽管他已有 15 年的经验。作者承认自己在高级算法、依赖性和 Rust 等语言方面有困难,但他们在工作中强调简洁性。他们使用 Go 和 Python 等主流语言,避免深层抽象,尽量减少外部依赖性,从而编写出易于理解和维护的代码。作者还重视清晰的模块设计、基本的弹性模式和详尽的文档。尽管他们的工作简单,但他们开发的软件却能有效满足用户和业务需求,这证明了接受自身的局限也能带来成功。

2、考虑到其主张,本文的标题具有误导性。所描述的所有做法并不愚蠢,它们实际上对于小规模操作来说非常聪明且有意义。到目前为止,作者在其职业生涯中从未需要设计一个服务于非常大的用户群或具有 99.99% SLA 的系统。