acm-header
登录

ACM通信

BLOG@CACM

为什么伟大的程序员会在编程时拉开帷幕


叶戈尔·Bugayenko

大约80年后,《绿野仙踪》仍然是历史上最具标志性的电影之一。在一个特别具有启发性的场景中,勇敢的冒险家们与看似无所不能的绿野仙踪(Wizard of Oz)对峙,绿野仙踪继续对多萝西和她的朋友们发表了一篇夸夸其谈的长篇大论。不过,狗狗托托最终拉开了窗帘,毫不夸张地说,揭示了绿野仙踪只是一个机器里的普通人。

绿野仙踪是个江湖骗子。您还会惊讶地发现,有多少程序员也不明白幕后发生了什么。几年前,我和一家公司的CTO聊天,他让我解释一下,当你在浏览器中输入URL并按回车键时,会发生什么。

你知道会发生什么吗?想一下。

我有了一个扎实的掌握,画了一个小图表,包括域注册器、一些DNS和HTTP服务器、负载平衡器、数据库和其他一些必要的细节。这里的首席技术官是他所在领域的佼佼者,他对我对流程的一般知识印象深刻。

为什么?因为他知道,许多web开发人员和其他所谓的专家对这个过程甚至缺乏基本的理解。大多数人都了解HTTP服务器和其他一些概念,但这只是因为它直接影响了他们。其余的呢?眼不见,心不烦。

多年来,我经常要求我的员工、同事和其他涉众揭开帷幕,解释一个过程或软件是如何运行的。有时,我很惊讶程序员或其他专家真的知道他或她的东西。偶尔,我发现自己在学习新的东西。然而,我的问题经常得到茫然的目光和不成熟的回答。

谁在乎呢?没有这些知识,他们也能活下去,那又有什么关系呢?

我当然不是什么都知道。然而,尽可能多地,我试图发现机器中的幽灵,可以这么说,以及一切是如何运作的。几年前,我正在处理一个复杂的技术问题,试图将一个我从未使用过的软件与另一个我从未见过的软件集成在一起。

一开始,我觉得这很容易。哈!整整干了三天。在这个过程中,我经历了四个情感阶段。

首先,我很热情,投入到工作中。有一些文档,我浏览了一下,但说实话,我没看大部分因为它没有任何意义。但没什么大不了的,对吧?我只要拿到软件,一切就都就位了。

哈!当我进入下一个阶段时,我猜测着,几乎可以肯定的是,让所有的东西都运转起来需要几分钟,也许最多需要几个小时。画出关于代码和逻辑的假设,我开始往墙上扔新代码行,希望有一些东西能坚持下来。

事实证明,我的假设是错误的,缺乏可理解的文档已经从小麻烦变成了大挫折。事实上,挫折注定是我情感旅程的下一阶段。我访问了谷歌、Stack Overflow和其他各种网站,寻找答案,或者至少是一些清晰的信息。

然后,沮丧取代了沮丧。我感觉自己就像一只试图驾驶赛车的黑猩猩。事实证明,仅仅是让一切运转起来几乎是不可能的。是我的错,因为我不够聪明。这是其他开发人员的错误,因为他们没有提供清晰的文档。

也许每个程序员都在某个时刻经历过上述循环。伟大的程序员与平庸的程序员的区别在于他们的反应方式。糟糕的程序员认输了。一个平庸的程序员独自工作,陷入更深的抑郁,但最终使软件工作,即使他或她不完全明白如何。

一个伟大的程序员?他拉开窗帘。他不只是让软件工作,而是阅读文档并在互联网上搜索答案。最终,他明白了软件是如何工作的,其他程序员的基本逻辑,以及如何让所有正确的齿轮转动。他不是简单地拼凑出一个可行的解决方案,而是编码到完美。

仇恨消散,取而代之的是理解和知识。当项目完成时,它不仅仅是另一个软件,它是一个里程碑,一个成就,允许程序员进一步提高他的技能。今天学到的经验教训将在未来的岁月里得到回报。

做一个平庸的程序员有点容易。你不需要成为一个火箭科学家或脑外科医生胡乱拼凑一些代码,并做出功能软件。然而,成为一名优秀的程序员要困难得多。这需要努力和意愿,不仅要使软件“只是工作”,而且要真正理解您在做什么,代码的逻辑,以及产生结果的最佳方法。

至于我自己呢?有时候我只是个平庸的程序员。我承认。但是我通过放慢速度和花时间去真正理解我正在使用的软件来继续提高我的技能。当然,这需要付出努力,但它也避免了与工作有关的抑郁,让我变得更好。

这就是为什么伟大的程序员拉开帷幕,不仅寻找快速的答案,而且寻求更深层次的理解。

叶戈尔·Bugayenko他是软件工程和管理平台Zerocracy的创始人和首席执行官。


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
Baidu
map