理解并克服程序员的障碍

2025-06-07

理解并克服程序员的障碍

这篇文章最初发表在CoderHood上,标题为“理解并克服编码障碍”。CoderHood 是一个致力于软件工程人性化维度的博客。


Coder's Block 是什么?

程序员的瓶颈期是指开发人员难以编写出优质代码,甚至根本写不出任何代码的时期。在瓶颈期,他们的想法无法实现,项目的总体目标也似乎遥不可及。

编写代码是一项创造性的活动,需要左右脑的协同工作。所有这些活动有时都会遇到瓶颈,也就是缺乏创造力;这在写作中是一个众所周知的问题(称为“写作障碍”),但它对编程同样如此。

根据我的经验,程序员的学习障碍主要由五个根本原因之一造成。我将逐一分析,并为你提供识别和克服学习障碍的策略。

原因 1:你不是 100% 清楚自己想要实现的目标是什么

编程是一项创造性的活动,但它必须专注于实现某个目标或解决某个问题。当目标或问题不明确时,很难开始。

要确定你遇到的问题是否是这个,请思考一下你想要达到的目标。特别是,你能回答两个基本问题吗?

两个基本问题

  1. 您想要实现什么目标?
  2. 你为什么要努力实现它?

有时你可能会想回答“我正在努力完成我的项目”或“我的目标是保住我的工作”,但我指的可不是这类目标。别把自己放在一边。你需要考虑的是项目本身。它的目的是什么?如果你把自己排除在外,这个项目还有什么重要性?

如果您无法回答这些问题,请尝试以下操作:

关掉你的电脑

在你理解你想要实现的目标之前,不要尝试开始编写代码。关掉你的代码编辑器,关掉电脑。这会分散你的注意力,而且毫无帮助。相反,拿起纸笔,开始思考目标。现在,不要担心如何实现它,只需专注于你想要做什么以及为什么需要这样做。先不要担心“如何实现”。

纸笔的自由

纸笔能让你自由地思考和记录,摆脱软件工具烦人的束缚和限制。别盯着白纸,把所有你对问题的理解都写下来。描述目标,以及你为什么要努力实现它。

如果你想的话,可以画画,并把想到的一切都记下来。记录下来的过程能激发你的创造力。纸笔能同时刺激左右脑,从而激发你的创造力。

站起来和别人说话

当你用纸笔思考一番后,站起来找人倾诉。理想情况下,你交谈的对象应该是熟悉这个项目的人,但这并非必要。你可以找一位朋友或家人,解释一下你需要描述一下你正在尝试做的事情,并希望听听他们的想法。简单的表达通常足以让你的思维朝着正确的方向发展。

如果你没有人倾诉,可以向你的宠物或 毛绒玩具解释这个问题。跟谁说话,或者他们是否理解你,都无关紧要。重要的是,你要大声描述你的目标。不断地谈论它,直到它在你的脑海中更加清晰。

重复

重新拿起纸笔,再仔细思考一下目标。回顾你的笔记,看看你是否能回答上面提到的两个基本问题。如果回答不出来,再找人谈谈。重复这个过程,直到你觉得能够自信地描述目标是什么,以及为什么你需要实现它。

花时间思考目标可能看起来像是在浪费时间,而且感觉不会朝着解决方案的方向前进。但是,放弃这种想法吧;这是一种谬论。如果“什么”和“为什么”都不清楚,你就无法编写代码来实现“如何”。

原因2:你不断改变解决问题的想法

如果“什么”和“为什么”很清楚,那么你可能会被困在“如何做”上,因为你不断地寻找解决方案不够好的原因;这是一个常见的问题,我称之为“自我怀疑循环”。

自我怀疑循环

这种情况发生在你想到的每个解决方案都存在问题,你无法接受任何解决方案。结果,你的思维陷入了循环,没有任何进展。

当你开始实施一个解决方案时,如果发现其中存在问题,就改变方向,结果却发现更多问题,情况会变得尤其糟糕。你不断地改变路径,直到回到最初的解决方案,然后又开始循环。感觉简直要疯了。

休息一下

打破这种循环的最好方法是暂时停止思考这个问题。站起来,散散步,找个人聊聊天,吃点东西,喝杯咖啡,做点别的事,或者睡一觉。休息一会儿后,重新回到这个问题上,列出所有能想到的解决方案,列出每个方案的利弊,看看能否最终确定一个。

从不同角度看待目标

如果你再次陷入恶性循环,请重新思考目标,并确保你理解它。尝试从不同的角度看待它。尝试重新定义它并重新审视它。问问自己,如果必须手动解决,你会如何解决这个问题,看看是否有帮助。从实际的角度思考,并结合具体的例子,以避免过度抽象或过度工程化。

不要让完美成为优秀的敌人

一个问题完全有可能没有完美的解决方案。选择一条道路,即使是一条不完美的道路,通常也意味着做出决定并坚持下去,并在问题出现时进行处理。

不要让“完美”成为“优秀”的敌人。完美并不存在,大多数解决方案都是一种妥协。这很正常,也很正常。

原因 3:你面前的工作量似乎令人望而生畏,你不知道从哪里开始

当你纵观整个项目时,你可能会觉得看不到尽头。被目标的艰巨性所困扰是程序员瓶颈的典型原因。

将大目标拆分为子目标

要解决这个问题,请将 软件开发人员的五项基本问题解决技能 付诸实践。首先,将总体目标分解成几个小目标。按照它们浮现在脑海中的顺序写下来。列出清单后,确保它们定义清晰。

列出清单后,请按照你认为需要完成的顺序对子目标进行排序。如果某个目标太大,就将其拆分成更小的目标。

致力于第一个子目标

一旦你的问题被分解成多个小部分,就先解决第一个部分并完成它。全身心地投入其中,不要被整体目标分散注意力。

记住要 并行思考、抽象但避免过度抽象,考虑重新使用现有的解决方案并从数据流的角度思考。

如有必要,进行校准并进行更多子目标拆分

每次专注于一个子目标,就能让编码过程顺利进行,你也不会感到不知所措。用实现第一个子目标所花的时间作为衡量标准,来校准其他子目标的规模。

每个子目标的工作量不应超过一周;如果任何一个子目标耗时更长,你可能需要将其拆分成更小的目标。避免设定较大的子目标,因为它们很容易像大目标一样,导致程序员停滞不前。

原因四:你对目标不感兴趣

我们讨论了了解需要实现的目标以及为什么要这样做对于取得进展至关重要。然而,即使你对这些问题有了答案,你也可能仍然不确定这个项目是否值得你投入时间。这可能是因为工作繁琐,或者因为目标是解决一个你觉得没有吸引力或不重要的问题。对项目缺乏热情是程序员遇到瓶颈的最常见原因之一。

你能做什么呢?

利用项目来学习新知识

也许这个项目并不有趣或令人兴奋,但也许有一些方法可以将其转化为学习机会。例如,你可以选择使用一些以前从未使用过的新库或框架。或者,你可以尝试运用你想学习的技术或设计模式。构建同一个软件的方法数不胜数,学习新的东西可以让即使是枯燥的项目也变得精彩纷呈。

找到你的工作对客户至关重要的原因

有时,更好地理解客户的需求可以让一个枯燥的项目变得更有趣。抓住机会与一些对你正在做的工作感兴趣的客户交流,了解这项工作对他们的重要性。如果你没有机会与客户交流,那就与你组织中面向客户的人员交流,了解你的工作为何如此重要。

抓住机会解决项目过程中的技术债务

有没有办法在完成项目工作的同时解决一些技术债务?如果你需要完成的工作需要与现有系统集成,或许可以借此机会解决一些长期存在的老问题。想办法在现有工作中加入一些你想做的工作。

原因五:生活中或工作环境中的某些事情困扰着你,你无法集中精力工作

创造性工作需要专注;纷乱的思绪可能是导致你程序员思维受阻的原因。有什么事情困扰着你吗?你的个人问题是否影响了你的注意力?又或者,工作环境是否制造了不健康的压力,阻碍了你的工作?

有几件事你可以做来克服这种编码障碍:

列出困扰你的事情

有时你会因为担心忘记一些重要的事情而无法集中注意力。把脑子里想的事情列个清单,争取在更合适的时间再处理。写下这些干扰因素,有时足以让你摆脱程序员的思维瓶颈。

解决阻碍你的问题

在某些情况下,你可能需要休息一下,优先解决困扰你的问题。如果问题与个人有关,那就休息几天来处理。如果可能的话,解决困扰你的问题,或许是解决你编程瓶颈的最佳方法。

如果问题与工作有关,请花些时间处理。与你的老板、同事、人力资源部门或任何可能帮助你的人沟通。让问题拖延下去会让程序员很难突破瓶颈。

求助

如果你无法快速解决困扰你的问题,请寻求帮助。让担忧或焦虑挥之不去会让人精疲力竭,并且对你的效率和健康都有害。最好不要让这种情绪持续太久。寻求专业人士或亲朋好友的帮助并没有错。

结论

编程障碍是个麻烦事,你可以克服。这就像你的车陷在泥里一样。本能地踩油门只会让情况更糟。你需要更聪明一些。

第一步是意识到自己正在经历编程障碍。第二步是尝试理解其原因。第三步是选择最佳策略来克服它。


如果您喜欢这篇文章,请保持联系!

文章来源:https://dev.to/lpasqualis/understanding-and-overcoming-coders-block-5m6
PREV
你知道 JavaScript 这些奇怪的部分吗?
NEXT
软件工程师的个人品牌发展