程序员减压指南

一切都会好起来的

程序员的世界里总是叮叮当当忙个不停。无论你是刚入行的菜鸟,还是资深的专家,你都会觉得手头的事情没完没了。本文接下来就讨论一些如何处理这些事情的想法。

我尽力把这篇文章写得简练易读,希望它是真的能有所启发而不是帮倒忙。本文总共分为四部分:心态,学习,社会压力工具箱。来吧老弟

程序员减压指南 - 图1

Mindset

It all starts in the mind. Feeling overwhelmed is a response to too much going on at once, being over-stimulated and unable to process everything. You need to refocus, and reprioritise.

心态

一切皆源自心态。人们会感到压力山大就是因为手头一下子要处理的事情积压了太多,导致出现了过激反应,从而无法处理任何事情。你需要的是重新调整重心和优先级。

理解问题所在

这是解决任何问题的第一步。你为什么会觉得压力山大呢?你问题的根源在哪里?同时要跟进的事情太多?工作责任太重?还是来自同辈的压力过大或者自我期望过高?

找个地方坐下来,拿出纸笔列出来你手头的待办事项会对此有所帮助。如此以来你可以找出那些最要紧的问题,从而进一步研究如何才能最好地处理它们。

认识到你不能每件事情都依靠自己来完成

不可能每件事情都依靠自己来完成 - 这就是为什么我们会有团队的原因。样样精样样通是不可能的。术业有专攻,从人工智能,运维到层叠样式表,每个工程领域都有自己的专有知识。与之类似的,撰写教程,参与开源项目和开发课余项目都很花费时间。没有什么事是不费时间的。

切记世上没有”绝对正确”的方法

做事方法有好有坏,但是现实生活中却没有“绝对正确“的方法。解决方法并不是一定就是对的或错的,反而更像是最适合的。即使对于编程来说也是如此,甚至尤为突出。

确立你的目标

你到底想达成什么目标?你是想成为世界上最优秀的容器化专家,还是只想在工作中得心应手,同时还可以下班回家陪伴家人?亦或是想找到你的专属细分领域?你不必活在别人的世界里。心系目标可以让你确立界限,专注于自己的野心并且意识到那些事情是雨女无瓜与你无关的

Learning

学习

身为程序员,我们大部分的知识储备都来源于自学 - 但是对于我们中间的许多人来讲,这种学习方式还是相对比较新颖的。最重要的是,没有人要求你记住所有的东西。了解问题的范畴,以及到哪里寻找相关的资源反而更为重要。熟能生巧嘛。

结构化学习

自学之路上最大的障碍之一就是知道到底要学什么 - 从何学起,哪些是重点,以及有多少东西要学。由于没有课程表,所以自己定义结构非常关键。这样可以帮你减轻要“女娲补天”的心理压力,还可以为以后逐条划掉增添动力。做一些探索性的研究可以帮你你更好地掌控它们;试下这些:

  • 程序员成长路线图,类似于 Kamran Ahmed 整理的 路线图。 虽然这个路线图里面还是有相当多的内容,但是至少可以给出一些图形化的结构来帮你建立头绪。不过切记,没有人掌握路线图中列出来的所有知识点。

  • 列一个你所不知道的知识清单,每当你听到不熟悉的东西,更新一下这个清单。你会发现好多东西都是不断重复出现的。

  • 网课和课程大纲 - 即使你不再是新手。不一定非得学这门课,但了解一下课程里面有哪些内容也不错。

  • 教材。看似理所当然,但是实际上它们已经没有以前那么流行了。书本的内容经常可能会过时,但是还是可以给你自己的课程范围起个头。

  • 浏览招聘广告来看下你钟意的雇主们都在寻找哪些技能。这样你可以了解当前哪些技能有市场需求,以及你是否在正确的职业道路上。如果招聘广告中有你没听说的技术,那正好 - 补充到你的清单中,继续。

建立你的核心资源列表

现在的资源实在太多了,但是并不是每一个都有用或者准确。想想现在发布一篇文章门槛有多低就明白了。最有用的文章往往是那些你在最需要它们的时候找到的,还有那些刚好在讨论与你正搜索的相同问题的。除此之外,你还可以查找你的核心资源列表 - 那些你可以一再依赖的网站和专家。以下是一些主要的类型:

  • 文档。即使可读性不那么强,文档还是会一如既往地在你需要的时候为你提供最精确和最新的信息。

  • 参考资料和学习资源。有些网站花费了大量的精力来整理实际项目中的最佳实践,并以最有效的方式将其展示出来。

  • 专家。有些人和博客作者对他们的细分领域了如指掌,还有人会写文章介绍一些最新的和更好的做事方法。这些人并不难找,因为他们的名字总是不时浮现,要么是出现在搜索结果前排,要么就是他们好像写了好多你经常引用的文章。当你刚进入一个全新的领域的时候,许多博客文章会因为写得过于深入,而让你感到困惑。但是假以时日,这些文章会促使你探索新的思路。

一旦有了自己的偏好,你就会发现你几乎再也不去查找其它地方了。不时走出自己的舒适区当然是好事,但是不要在你还在摸索的时候这么做。等你掌握差不多的时候再出去看看。当手头事情太多而不知所措时,你可能会觉得一切都手忙脚乱。但是进入舒适区以后,你会发现好多事情看起来大同小异。

Schedule time for learning

为学习腾出时间

每周都预留出来一些时间来专门用于探索和学习。不一定非得是什么大项目,随便看看清单上的事项有什么可以拿来熟悉一下。一个小时的学习就可以有奇效。

  • Pocket 来暂存文章晚点读,而不是让它们一直留在浏览器标签页上,或者先读半截再说。你可以随便给它们添加标注,以便以后可以专心阅读。
  • 有的时候只是上网搜一下,查找出来定义就已经是巨大的进步了,还能帮你对有些事情有新的感悟。有些东西开始看起来蛮重要,但是实际上到了最后却发现也没啥大不了的。

  • 每次只专注于一件事。不要尝试一次性解决所有问题。花半小时学习某个特定的主题,并且好好理解它。

  • 检查你的核心资源列表。可能你使用的框架又发布了一版更新,或者你会发现一些之前并不知道的新功能。

  • 尝试新事物。不是非得参加什么课程或者在工作中用到了才能领会到一项技术的要点。还可以就是单纯为了好玩。随便试试就行。如果你从来没有用过 NoSQL,克隆一个 MongoDB 或者 Mongoose 种子项目来玩玩,一举三得。

有规律地做事可以让事情变得值得期待。你的通勤从此变成了阅读时间,星期天晚上则变成了你的周日实验之夜。而且完成任务为会提升你的多巴胺水平。

社会压力

外面的世界里,尤其是互联网上,总是充斥着各式各样的噪音。你很容易就会觉得你啥都做不好。其实并不是这样的,你只是需要开拓视野。

好多人都会写出烂代码

正如好多人是蹩脚的作家,三流的歌手,或者数学超烂。拥有着两百万美元资金的初创公司也可能会有烂代码。谷歌的员工可能也会写出烂代码。伟大的公司和程序员亦不能免俗。我们能做的就只能是勤加练习,并且不断学习。

大家只讨论好东西

没有人会愿意提及他们一直熬到凌晨两点去修复一个简单的软件缺陷,或者他们日常工作中遗留代码缠身的事实。他们更愿意讨论自己的业余项目,和试过的又新又酷炫的小玩意。社交网络让人产生大家都在做着他们理想工作的错觉,但是其实许多人都在加班加点赶截止日期,一直到深更半夜才离开公司。

大家各有不同的优先级

有些人一心扑在事业上,而另一些人则可能会有其它不同的优先级或忙于生命中的其它事情。有人离了最新的技术活不了,有人则下定决心要做好自己的副业。还有些人只想在社交网络中扬名立万。不必和那些一有时间就阅读最新博客文章的人攀比。等他们总结完你再看就好了。

大家各有不同的观点

当一个人宣称某个框架或方案是下一个热点的时候,另一个人则可能会宣称它已经过气了。由于视角,经验和用例的差异,人们总会有不同的观点。可能他们都对,也可能他们都不对。当然最可能的是,他们说的都有一定的道理。最终还是要由你自己评估,来形成自己的观点。

文章会有欺骗性

人们喜欢写文章探讨事情的可能性,而不是最常用的做法是什么。好多东西日常中压根用不到。仅仅是因为某个技术很酷炫或者让人印象深刻,并不意味着你就非要掌握它不可。

Job adverts exaggerate

职位广告会有所夸大

职位广告看似列出了无穷无尽的条件要求,但是它们是人事部门参照着完美候选人的情况写出来的。有些列举的条件是必需的,但是其余的往往是他们闭门造车胡思乱想出来的。有些技术是你在工作中可以学到的,有些是公司想要用但是还没有开始的,还有些只活在于它们的五年路线图中。有些则只是占位关键词来吸引有近似技能的候选人:如果你知道 LESS (一种层叠样式表预处理器),那你也可以很快就学会与之类似的 Sass。

确保你的经理们知道你在做什么

有些时候你的经理们并不了解你工作具体做到了什么程度。他们要么是并不了解技术细节,要么就是他们的知识储备可能已经过时了。好多时候他们意识不到这个地方不能简单地“添加一个下拉列表”就好了,而其实是需要添加一个带自动完成功能的选择模块,外加两个新的 API 路由。

工具箱

编程只是工具箱的一部分。有一个好的工具箱会让你工作更加智能化,事半功倍。

在核心技能上花时间

诸如解决问题,批评性思维和测试之类的技能都是程序员的利器。花点时间学习如何用有策略性的和系统性的方式解决问题,可以帮你节省无数钻死胡同的时间。这些技能在生活的方方面面中也大有裨益。

使用合理的项目管理工具

规划好你的项目。管理好你的任务。跟进你的软件漏洞。用 git 做版本控制。这些工具的存在是有原因的 - 它们帮你跟进正在进行中的任何事情。你本来就不应该把所有的东西都存储在你渺小的人类大脑中。

减少重复性工作

为一些你经常做的事情减负,会让生活变得更容易一些。

  • 使用优秀的代码编辑器。自动完成和工具提示定义等功能可以帮助你在编程时不用四处搜索代码库才知道怎么回事。

  • 巧用片段。一个优秀的代码编辑器会允许你设置代码片段的快捷键,但是有的时候把文本放到文件里面存起来以便于以后的复制粘贴也不失为一个良策。如果你发现你自己一直在谷歌搜索同样的东西,那你可以把它放到你的片段文件中并添加注释,这样你就可以轻松找到了。

  • 跟踪推理过程。时不时的,你会发现自己在痛苦地调试一些代码,冥思苦想当初自己为什么要这么设计。反反复复尝试理解同样的事情需要大量的认知开销。为你的代码写文档会帮助你节省时间和精力。

新鲜空气,锻炼和对话

坐在房间里面连续十个小时盯着屏幕可不是什么健康的生活方式。你可能会纠结于想象中的问题,反而失去了对全局的把控。能够跳出自己的思考,和保持身体和大脑的健康这些事情同样重要。可以出门溜达溜达,逗逗狗狗,让你的眼睛休息一会儿。或者跟连 HTML 是什么都不知道的人聊会天。

寻求帮助

技术社区的人们乐于助人。这就是为什么他们会写文章,开发开源项目,以及询问你是否需要他们的支持。索取好的资源和建议,或者寻求工作中需要的支持。他们会很乐意伸以援手的。

希望读到这里你已经看到了至少一个让你感到生活其实可以更可控的主意。但是临别之际,我还有另外一个锦囊要赠予你,那就是:

你可关掉那些该死的网页吧。