你已经对着电脑n个小时了。不知道该写什么代码,或者一种摔键盘的冲动正在你的胸中酝酿。

咖啡一杯接着一杯。不敢再喝了,因为搞不好要有副作用了,心跳加速,身体不由自主地颤抖,出冷汗,但还是无法产出任何代码。

所有重新发现编程趣味的努力都徒劳无功,因为你的最后一点能量都用来驱逐大脑中正在攻城略地的话:

“我写不出代码了!”

编程的本质是棘手

即使是最优秀的程序员也会遭遇无法解决的软件工程问题。碰到这样的问题,并不一定意味着你缺乏技能或知识。

编程不是一项容易的工作,我们可以通过采取非正统的方法来保持你想要的生产力水平,并确保提交高质量的代码。

如果我在一个问题上花了几个小时,却仍然找不到解决方案的话,最后我会觉得这是浪费了时间。我不是胡言乱语——我只是觉得“没有人能够百死不悔”。

没有愤怒和悲伤。因为我已经尝试过所有方向,只是都走不通而已。失去希望,于是开始想辞职不干。我觉得自己应该换工作,去做做调酒师或其他,至少研究和测试在啤酒中加点什么不会耗去我数个小时的时间。

这些都是我在不敲代码时的想法。我开始怀疑生活,怀疑编码,怀疑人生。

有成效不?好吧,我从来没听任何专家说过“辞职和萎靡不振”可以造就伟大的代码,所以可能并没有成效。

这就提出了一个问题:我们该如何避免这种没有成效的状态?

重新发现问题,重新发现你的生产力

可能你已经行进在这条路上了。那么此时你只要继续就可以了,我可能没有什么新的东西可以告诉你的。

如果你是新手,那么可能你还不知道如何重新发现生产力。

下面我要分享的内容将有助于你在编程时以一种健康的方式保持生产力,不至于筋疲力竭。主要包括:

  • 测试不同的解决方案,直到感觉重复
  • 在线寻找开源解决方案
  • 向更有经验的程序员询问
  • 如果一切都失败,那就潇洒放手

1 – 测试不同的解决方案,直到感觉重复

在你研究或询问其他开发人员(=浪费他们的时间)之前,你应该尝试使用你现有的知识和思维来制定每一个可能的解决方案。

显而易见的是,太多的程序员是从询问他人开始的,自己甚至都不曾静下心来分析问题本身。不要成为这样的讨厌鬼,尽可能不要浪费别人的时间。

先投身于工作,然后再寻求帮助。

2 – 在线查找开源代码

当你投入于工作,却没有什么成果的时候,那么下一步你可以尝试开源代码。许多编程人员构建软件,是出于创造解决方案并在线发布以供大家使用的乐趣。有些人发布的代码曾被它们的程序员使用于商业项目。

GitHub是寻找开源代码的两个主要地方之一。另一个是StackOverflow。

这些网站的解决方案是采用可重用代码的形式,方便你在项目中实现。

谨记,使用其他人开发的代码总是有风险的。它可能会以你意想不到的方式改变程序的行为。备份原始代码,这是常识。

3 – 向更有经验的程序员询问

你有没有碰到过这样的情况,向其他人求助却发现你甚至不知道自己在问什么?

在询问任何人之前,你得准备好一些你无法通过网络信息搜索解答的问题。

明确的问题,才能有明确的解决方案。如果是你自己都描述得云里雾里的问题——那么你只会得到一个云里雾里的回答(并且可能会惹恼他人)。

如果你周围没有任何开发者可以询问,那么也可以在线查找。你可以在StackOverflow或MSDN社交论坛上询问,或查找特别针对于你所用技术的Slack频道。

4 – 如果一切都失败,那就潇洒放手

不要一心钻在死胡同里,实在不行,那就去干点别的事——睡觉,吃东西,等等。

你觉得这是在逃避工作?那就错了。

我要告诉你的是,当你最轻松的时候,往往正是解决办法灵机一现的时候,这不是我胡编乱造的,而是有科学的证明。此时你的大脑工作在“发散思维”的模式下,而不是在“集中注意力”的模式下——你可以在这篇文章中了解之间的差异。

总的来说,这个理念就是要你忘记手头的问题,让你的意识心灵沉浸到其他的事情中。此时,你的潜意识则开始连接要点,朝着顿悟的方向前行。

我们可以做些什么以便于帮助大脑在发散思维的模式下工作呢?放轻松就好了:

  • 散步(古代哲学家非常习惯于在走路时演讲,因为他们意识到走路有助于思考)
  • 清理办公室或住所(完成后给自己一个奖励)
  • 与朋友约会,和杯咖啡,聊聊八卦(如果你过于关注问题的话,那么建议和不能提供帮助的非编码人员交谈)

总结

我在编程和生活两者之间保持了一种健康的平衡。

无论你是为了兴趣爱好、钱还是改变世界的宏图伟业而选择编程——编程都不应该是你唯一痴迷的东西,否则你会走火入魔。

最后再说一句,如果你绞尽脑汁,却仍然无法解决问题,那么不妨先放一放。通过潜意识的运作,搞不好突破性的想法就会灵光乍现。