我是个冒名顶替者

2025-05-24

我是个冒名顶替者

我之所以想写这篇文章,是因为我经常被那些(在我看来)傲慢自大的“技术宅”和“狂热粉丝”们搞得焦头烂额,他们总是对着同事,或者在互联网上发表各种观点,仿佛自己就是编程真理的仲裁者。然而……却在这里,不停地写博客,滔滔不绝地发表我的观点。最终,我可能给人一种自以为是的印象

偶尔有人来找我寻求建议时,我就会深有感触。他们寻求我的意见——好像我真的能提供任何“答案”似的。这些人中有些人是朋友或同事。但自从我开始做 Dev.to 这个小项目以来,实际上已经有几个人通过电子邮件联系我了。事先没有任何介绍。虽然我感到受宠若惊,但我也不禁想:“你们根本不知道我到底有多少不懂的地方。”

当我听到别人谈论“冒名顶替综合症”时,我也会深有感触。我很难真正表达出我有多么讨厌这个概念。

我的意思是,当然,我理解我们有时都会有疑虑。但想到有人认为自己不够“有价值”,不够“博学”,不够“经验”,真的让我很困扰。我之所以困扰,是因为在我的职业生涯的大部分时间里,我都在藐视这些标准。

我完全是自学成才。我没有计算机科学学位(或者任何学士学位)。有时候,我不得不,嗯……美化一下我的简历。我经常学到一些多年来没人愿意付钱给我的技能。很多我经常嘲笑的“粉丝”看到我,或者我的代码,或者我的“风格”,就对我不屑一顾

尽管如此,仍然有人认为我已经“到达”了——而他们是“冒名顶替者”。所以我要打破这种局面。就在此时此地。

我会详细地阐述那些在我的职业生涯中让我受益匪浅的东西。我会解释那些至今仍让我困惑的东西。我会尝试承认很多像我一样的科技博主可能根本不想承认的不足之处。

我希望你能意识到,如果像这样拥有25年职业经验的人,仍然有这些“缺点”,那么你可能并没有你担心的那么“冒名顶替”。所以……开始吧。


替代文本

正则表达式语法

正则表达式是程序员工具箱中最古老、最强大的工具之一。你绝对需要理解正则表达式的概念,并且了解它们在哪些用例中表现出色。

但是语法...???

嗯,听着...

正则表达式的可读性比象形文字还要差。有时候,我发现自己总是在写正则表达式。然后我就变身成了正则表达式人(它甚至还带了一件斗篷)。

但是……我可能会有 12-18 个月不写任何比简单[0-9]匹配更复杂的东西。当我经历这样的时期,然后我不得不重新深入研究则表达式的世界?好吧……我开始谷歌搜索。

每隔几年,我就会重新学习各种正则表达式的语法。我有些朋友能记住所有这些复杂的细节。我不是那种人,而且我承认这一点。


替代文本

“大学生活”

我理解大 O 符号的概念。但说实话,我一点儿也不在乎它的细节。因为我基本上从来不用它。从来没用过。

听着,我明白任何“高级”开发人员都需要理解其算法的内在复杂性。我完全理解这一点:

for (let i = 0; i < someLimit; i++) {
  for (let j = 0; j < someOtherLimit; j++) {
    // do some nested logic
  }
}
Enter fullscreen mode Exit fullscreen mode

由于循环的嵌套(也就是指数型)特性,已经开始感觉“有问题”了。但如果你想让我站在白板前,把详细的大O符号写在一长串算法上呢?嗯……好吧,祝你好运。我会在角落里写函数式代码,而你则在苦苦思索理论。

类似地,似乎每个计算机科学专业的学生一踏入职场,就对二叉树搜索了如指掌。这……太棒了?我的意思是,是啊……二叉树搜索确实“很流行”。有时,它们绝对是“工作中必备的工具”。但在我这二十五年的职业生涯中,我只深入研究过二叉树搜索……就一次。下次需要用到它们的时候,我会去谷歌搜索一下。


替代文本

母语功能

这是我最常访问的 URL 之一:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

我可能每天都会访问这个页面好几次。并不是说我“不懂”Array.prototype函数,只是直到今天,我仍然觉得很难Array.prototype一下子就想到“正确的”函数。所以我经常发现自己手里拿着一个数组,知道需要以某种方式对其进行转换,然后像浏览高级餐厅的菜单一样浏览这个页面。

我也经常重构我的代码。不是几个月、几周甚至几天后才重构。我经常会用普通的 来写一些东西,.forEach()因为坦白说,我的大脑就是这样运作的。然后,当我的逻辑正常工作时,我会退一步看看它,然后想:“是啊……这真的应该用.reduce()。” 然后我会花几分钟把它重构成“最优”的原型函数。

这种趋势并不局限于 JavaScript。多年来,我一直在编写大量的 PHP 代码(技术术语)。而 PHP 大约有……3,842 个原生函数。它们都有不同的语法、不同的行为、不同的模式以及不同的预期参数。而且我完全可以凭记忆编写出每一个原生函数。(只要你说的“凭记忆”是指“通过谷歌搜索那些东西”)。

我从来没对那些能把一门语言背得滚瓜烂熟的人印象深刻。你真厉害。你就是一本字典。但这不代表你是个问题解决者


替代文本

定时练习

当然,(几乎)只有在求职面试时才会遇到限时练习。我的大脑对这类人为设置的障碍有着某种根深蒂固的原始抵触情绪。当你给我一个愚蠢的小演示任务时,我几乎确信自己能完成。但当你给我一个15分钟的计时器,在我面前倒计时时,它却触发了我内心的某种崩溃。

有趣的是,在现实时间紧迫的情况下,我的工作效率却相当高。偶尔,我还能“当仁不让”地处理一个每分钟给公司造成数万美元损失的现场生产问题。在这种情况下……我总能出色地完成任务。我的手指在键盘上飞快地移动,高管们都惊叹不已。

但当你给我装上那个愚蠢的计时器时?我不知道……我的大脑有点——反抗。然后就停止运转了。因为我知道整个练习都太假了



替代文本

命名不匹配

在我的职业生涯中,我曾多次努力理解那些同事们都认为已经掌握的概念。后来,在与这些学术概念斗争了好几年之后,我终于意识到,其实我已经掌握了这些概念!只是我还没“理解”他们使用的术语而已。

一个很好的例子就是依赖注入。我不知道为什么,但不知为何,这个术语对我来说太……难懂了。在我看来,它的意思和 IDE 里实际的意思完全不一样。

所以多年来,我的同事们总是用傲慢的语气谈论依赖注入。而我只是点点头,微笑,然后给他们一个会意的眼神:“哦,是的!依赖注入!我就是依赖注入的!”然后我会回去把依赖注入的定义读上一百遍——拼命地想把import它记在脑子里。

讽刺的是,我其实早就在做依赖注入了,而且已经做了好几年了,只是自己没意识到而已。别人管它叫“依赖注入”,我管它叫……“代码”。或许这就是为什么我这么难理解这个概念?

另一个例子是闭包。几个月前,我甚至在回复一位读者时写道,我很少甚至从来不用闭包。但这种说法是错误的。大错特错。因为事实很简单,作为一名 React 开发者,我几乎每天都会写闭包。但对“闭包”的定义与我编写的所有代码并不兼容。然后我意识到:“等等……我他妈一直在写闭包。”


替代文本

开发运维

我常常觉得自己孤身一人。因为我有很多程序员类型的朋友,他们似乎真的喜欢钻研编程相关的所有辅助工作。他们喜欢配置路由器/服务器/构建管道等等。他们对硬件很感兴趣。他们非常乐于处理 Linux 内核和 Docker 容器。

我极其……精通我真正想做的事情。我写代码。我喜欢写代码。不是说我没能力设置你的邮件服务器,而是我完全不想这么做。事实上,如果这不是一个半小时左右就能搞定的快捷方式,那么把所有东西都连接起来最终会让我烦透了

我只想写我的代码。告诉我我的环境在哪里。给我所需的代码仓库访问权限。然后就别管我了。



替代文本

Git

我见过很多开发者,他们挥舞着自己高超的 Git 技能,就像挥舞着一根大棒一样。他们把各种命令行关键字和标志都用得乱七八糟,毫不掩饰地暗示说:“我是个真正的开发者,因为我掌握了所有可能的 Git 命令行操作。”

我爱 Git。我不知道如果不熟练使用 Git,是否真的能成为一名“现代”开发者。我可以愉快地坐在命令行前创建新分支、提交、推送、合并等等。但 Git 是个复杂的工具。当我需要尝试一些“常规”的日常代码管理之外的东西时,我就会回到我自己的备忘单上。

我研究这个 Git 速查表大概有五年了。它里面有一些辅助示例,讲解了所有“二级”操作,而这些操作我通常几个月才会用一次。我知道……这可能意味着我作为开发者的水平“低劣”。我他妈不在乎。


替代文本

命令行/终端

说到命令行,很多开发者似乎对 GUI 的概念感到反感。我不是那种人。并不是说我操作终端能力差,而是我从未觉得我作为开发者的价值取决于我对所有可能grep选项的了解程度。

我的git用得相当好。npm 用起来也像个高手。我非常擅长使用 PowerShell,但 Bash 略逊一筹。不过,也有一些限制。我从未因为无法凭记忆背诵复杂的命令行指令(包括管道符、标志符和开关)而感到难过。你可以掌握所有可能的命令行实用程序。而且你还能得到一块免费的 Cookie。我会花时间掌握……代码


替代文本

冰山一角

这份清单根本算不上详尽。如果我再花几个小时思考,就能轻松找出十几个让我恼火的问题。(或者说,现在仍然让我恼火的问题。)

我的目的并非列举我作为一名程序员的所有缺点。我的目的是要说明,科技界没有一个人不具备这些缺点。

你经常阅读的科技博主不会像变魔术一样把每一行代码都写出来。他们也会遇到问题。就像我们其他人一样。

我不在乎他们是否已经编程50年了。总有一些东西偶尔会让他们觉得自己像个“冒名顶替者”。这恰恰就是为什么我们谁都不应该真正觉得自己像个“冒名顶替者”的最好证明。

这个职业领域里的东西比任何一个人所能学到的都要多这不是这个职业领域的“错”。这正是这个职业领域如此精彩原因。

文章来源:https://dev.to/bytebodger/im-an-impostor-5f7f
PREV
被 Facebook 拒绝
NEXT
如何作为一名自学成才的程序员获得第一份工作