深刻的理解依然存在价值吗?
前言
此文为转载+个人翻译,原文链接:https://ericsink.com/entries/depth.html
Eric Sink 讨论了深刻理解在这个“狂飙”疾驰的 AI 时代,是否依然存在价值。
深刻的理解依然存在价值吗?
今天早晨 GitHub 发布了一项重大声明:介绍一下 GitHub Copilot:您的 AI 结对编程助手。所有人都在讨论它。并且有个充分理由——它看起来真的很酷。
但是我的个人感觉是有些复杂的。我钦佩这种成就,渴望尝试,但也为这明显的趋势而烦恼。
我打算写篇关于这个问题的博文。一开始,我希望下面的段落能够仅仅关注问题而非批判。我希望能够在不批评他人的情况下表达自己的感受和观点。我希望写的东西不仅仅是另一个“快离开我的草坪”的咆哮。 让我们看看我是否能成功。
简而言之:在我看来,人工智能辅助软件开发才刚刚起步,很可能会成为一件大事。 而且,对我来说,这就像是朝着我们领域的浅薄理解又迈出了一步
嗯。 最后一句话看起来有点刺耳。 我想知道我是否已经越过了我不想越过的线。
让我试着换一种说法。
在我将近 40 载的编程生涯中,我始终坚持最有价值的事情是了解事物的工作原理。在软件开发中,没有什么事情比看得更深来得更加有效的了。借用 Joel Spolsky 的术语,我声称几乎所有的抽象,比你想象的更容易泄露,因此看穿它们很有价值。
- 知道如何分配和释放内存是一回事。更好的是了解内存分配器的工作原理。 那种深度给了我做决定所需的东西。
- 编写 SQL 语句相当容易。 但是在幕后发生了很多事情。 如果我了解索引和表扫描以及锁升级,整个体验就会好得多。
- 网络代码? 甚至不需要我动手。
我完全相信深刻的理解很重要。
但我越来越觉得自己在逆流而上。我们行业中的大多数人似乎更关心“如何做”而不是“它是如何工作的”。
当然,这有充分的理由。 人们有工作。 雇主的期望通常是关于完成工作。
所以我并不是说知道怎么做不重要。相反,我要说的是,在我理解了事物的运作方式之后,了解如何做某事通常是微不足道的。下次我需要弄清楚“怎么做”时,它会进行得更快。
但我和这个世界似乎对此意见不一。我觉得我每次都陷入这场冲突。
- 许多编程文档都是围绕执行某项工作所要遵循的步骤构建的,但这几乎不是我想要的。
- 在问答网站上,似乎每个有趣的问题都会得到人们的回答,说“你不应该那样做”,这似乎没有帮助。
- 在多年看到人们说“不要编写自己的加密”之后,我接受了它,但现在我对所有类型的 X 都看到了“不要编写自己的 X”。我的意思是,如果我们想要 X 世界,总得有人来写吧?
- 上周我试图确认 CIL castclass 指令返回它所提供的相同对象引用(当它没有抛出时)。 以前问这个问题的人大多被告知某种形式的“你不应该需要知道那个”。 但这个星球上肯定有人需要知道吗?
- 大多数面临软件问题的人会在解除阻塞后立即继续前进,而不会停下来了解给定解决方案为何有效。
我觉得我淹没在一片人海中,他们说:“我做完了(无论原理是什么),问题接着就消失了”。
我与其他软件开发人员的大多数在线互动都让我感到与众不同和孤独。
但我仍然“完全相信”。 我已经将我的职业生涯押在深度的重要性上,我将继续这样做。而且,当有机会指导年轻人时,我会引导他们走同样的路。
然而,随着行业趋势似乎与我背道而驰,我不得不怀疑我自己的经验将如何很好地映射到一个截然不同的未来。 当我建议(例如)他们了解 async/await 的真实情况时,我是否给新手不好的建议?
有时我担心我的姿势是一种看门人的形式。 我不想成为一个坚持每个人的道路都需要照搬我的道路的人。 如果你在没有学习二进制补码算法和 B 树之类的东西的情况下拥有愉快而成功的软件生涯,我为你感到高兴。 但我是否相信,从广义上讲,你的职业生涯会随着你学得更多而更上一层楼? 是的。
简而言之,我在这里看到了两种基本的可能性。 要么我是正确的,技术深度仍然很重要,即使很少有人重视它,要么我是一只恐龙,大自然选择了我的物种灭绝。
所以… GitHub Copilot 看起来很有趣。 但这一天很快就会到来,我将看到有人用“你为什么要问这个?只需使用 AI 结对程序员”来回答编码问题。 我可能会发脾气。