近段时间,996成为了技术社区的热门话题。工作压力大、作息不规律,甚至脱发、秃头,是码农经常要面临的问题,甚至已经变成常态。那么面临持续高压的工作,码农应该如何自我减压呢?一位软件工程师给出了自己的建议。
开发者的世界总是忙碌的。无论你是个完全的新手还是经验丰富的专家,总有事情在找你,你仿佛永远都忙不完。下面,作者给出了一些建议来帮助开发者更好地工作。它主要分为四部分:心态、学习、社会压力和工具集四部分。
心态
心态是一切的开始。感觉压力大是因为要同时处理太多任务,受到太多的刺激。你需要重新调整注意力,把任务按照优先级进行排序。
理解问题
理解问题是解决问题的第一步。你为什么会感到压力山大呢?根本原因在哪里?有太多东西需要学、需要跟进吗?工作中的责任太大?来自同龄人、同事的压力太大?对自己期望过高?
坐下来,拿一张纸、一支笔,把你的问题写出来,它能帮助你找到自己最大的问题所在,这样你就能知道自己最需要学习什么。
你不能一个人完成所有任务
每个人都不是全能的——所以我们需要团队。你不可能是所有方面的专家。工程里的每个领域本身都是一个完整的课题,从 AI 到 DevOps,再到 CSS。类似的,写教程、开源代码、编外项目都需要花时间。每件事都需要花时间。
没有所谓「正确」的方法
现实生活中的做事方式有好有坏,但并没有所谓「对」的方式,只有最适合的方式,编程尤其如此。
找到自己的目标
你真正想要达到的目标是什么?你是想成为世界上首屈一指的专家,还是做好自己的工作然后回家陪伴家人?还是想找一份合适的工作?你不必按照别人的标准去生活,知道自己真正想要什么可以帮助你划定自己的界限,专注于自己的目标并筛选出那些与你无关的事物。
学习
作为开发者,大部分知识需要自学-但对于我们中的很多人来说,这是一种相当新的学习方法。这种方法与正规教育不同,最重要的是,你不需要记住所有东西。理解主题范围以及知道哪里可以获得正确信息更为重要。熟能生巧嘛!
建立自己的学习架构
自学的其中一项阻碍是了解自己学习什么-从哪里开始、哪些是重点内容以及需要覆盖哪些知识点。没有人为你设置相关课程,所以重要的是明确自己的学习架构。把所有要学的东西明确列出来会减轻你的认知负担,同时促使你在今后的学习中坚持下去。做一些探索性研究有助于你把握住所有事情,你可以尝试下列方法:开发者学习路线图,像 Kamran Ahmed 的一样。这可以为你提供一些可视化结构,并将所有知识置于上下文背景中。记住,没有人能够完全了解它。
把自己不了解的知识列个清单,并将每次听到的不熟悉的知识添加进去。
看网络课程和课程大纲-即使你不是一位初学者。你不必上这些课程,但依然可以从涵盖的主题中学到一些东西。
教科书。教科书内容也许过时了,但你依然可以对主题范围有所了解。
浏览招聘广告,看看你中意的工作需要什么知识和技能。这样一来,你会了解什么是实际需要的,并确保自己沿着正确的职业道路发展。
创建自己的核心资源
我们可以获得的内容有很多,但并不是所有的都是有用和准确的。要知道发表一篇文章太容易了。只有当你发现自己需要某些文章并且这些文章可以解决自己的问题时,它们才最有价值。除此之外,一个好的方法是找到自己的核心资源——那些你可以反复依赖的关键网站和专家。下面提供几种主要类型:文档。即使文档的可读性不强,但它们通常是最准确和最新的信息。
参考文献和学习资源。这些网站尽可能以最实用和有用的格式展示现实中最佳的实践信息。
专家。这些人和博客从头到尾都知道自己的位置,他们会写一些关于更好地做事方式的文章来帮助你。这些人并不难找,因为他们的名字会反复出现。
一旦你找到了自己最喜欢的资源,你就很少会去看其它的了。当然,偶尔走出去看看其它资源也是很好的,但前提是你把已有的东西都掌握好了。
安排学习时间
每周留点时间去探索和学习。也不一定要学习多大的项目,仅仅熟悉一下清单上的几个项目也行。一个小时的学习就能改变很多哦。用 Pocket 保存文章以供以后阅读,而不是把它们放在书签中,或者工作中途阅读它们。你可以用喜欢的方式标记它们,这样有助于以后集中阅读。
有时候,仅仅查询一些东西并找出其定义就很有用,有助于你联想脑海中记的一些事情。有时候有些看起来很重要的事情其实很简单。
一次集中于一件事。不要尝试一次解决多件事情,可以花半小时研究一个特定的主题,并正确理解它。
查看你的核心资源。可能你使用的一个框架需要更新,或者你发现了一些自己不知道的有用功能。
尝试新事物。不是要你做一门课程或者使用工作中的一些东西来获得其要点,就做一些好玩或者感兴趣的事。比如,如果你没用过 NoSQL 工作,可以克隆 MongoDB/Mongoose 种子项目玩一下。
定期做某件事能让事情变得令人期待。通勤时间可以用来阅读,周天晚上可以做实验。另外,你还能从成就中获得多巴胺的提升。
社会压力
外界总是充实着各种噪音,尤其是网上,这很容易让你感觉自己做什么都是错的。其实你没有错,你只是需要更多角度。
许多人写的代码很蹩脚
正如世界上有很多蹩脚的作家、歌手,就连谷歌也有人会写出糟糕的代码。我们能做的就是持续练习,不断学习。
人们只会展示自己做得好的地方
没有人会告诉你自己修复一个简单的小 bug 修到夜里 2 点,也没有人会告诉你他们的日常工作都是在处理一些遗留代码。他们展示的都是自己的编外项目以及自己近期的得意之作。社交媒体让人觉得每个人似乎都在做自己梦想的工作,但其实许多人只是在不眠不休地赶上 deadline,直到深夜才离开办公室。
优先级划分因人而异
一些人将开发视为自己的主业,有些人有其他的优先事项。有些人为最新技术而生,有些人为自己的副业拼命,还有些人只是想在社交媒体上出名。你不必花时间去追赶那些把每一分钟的空闲时间都用在阅读最新博客上的人。让他们帮你做总结就可以了。
想法因人而异
一边有个人站出来宣称某个框架或方法将大有可为,另一边却有人宣称该框架或方法已死。人们对同一个事物总是抱有不同的看法,因为他们的视角、经历、用法都不相同。也许他们都是对的,也许他们都不对。最有可能的情况是,他们都有部分意见是对的。如何评估这些意见取决于你自己。你要有自己的看法。
文章都是骗人的
人们总喜欢写一些关于可能性,而不是惯例的文章。多数文章你在日常工作中都用不到。看起来很酷、很吸引眼球并不代表有用,也不表示你需要掌握。
招聘广告夸大其词
招聘广告上的要求似乎无穷无尽,但这些通常都是为理想的候选人写的。上面有些技能要求是你需要满足的,但剩下的只是吹毛求疵。有些东西你会在工作中学到,而有些东西他们虽然想用但没有付诸实践,有些是五年规划的一部分。还有一些只是关键词堆砌,用一套大概的技能来吸引候选人:如果你了解 LESS,你就能轻松地学会 Sass。
确保项目经理被通知到位
有时候项目经理不知道你在做的事情难度如何。可能他们不是技术人员,也可能他们的技能过时了。比如,解决某个问题并不是「添加一个下拉列表」就可以做到的,实际上,这是一个具有自动完成功能的定制选择组件,它需要两个新的 API 路径。
工具集
编码只是其中的一部分,有一套好用的工具将帮助你更好地工作以及管理工作负载。
把时间花在核心技能上
像解决问题、批判性思考和测试这样的技能对开发人员来说非常重要。花点时间学习如何有条不紊、系统地解决问题可以帮你节约很多时间。而且它对生活的各个方面都有帮助。
使用适当的项目管理工具
规划你的项目,管理任务,追踪 bug。使用 git 进行版本控制。这些工具的存在就是为了帮助你追踪所有正在进行的东西。不要把所有的东西都记在脑子里,那样太累。
最大限度减少重复工作
有些事情需要你花费很多精力去做,而有些事情你可以删减一下让它变得更简单。好用的代码编辑器。像自动完成和工具提示定义这样的功能可以帮助你集中精力编写代码,而不必总查看代码库。
使用代码片段。好用的代码编辑器可以让你用快捷方式设置代码片段,但有时候把代码片段放置在文件中以便复制粘贴也很好。比如你发现自己总是搜索一样的东西,你可以把它放在代码片段文件中并添加注释,这样你下次要用的时候就能轻松地找到它了。
记录缘由。通常你会发现自己总在通过一些代码来弄清楚自己为什么这样设计。这样子重复地去尝试和理解同样的东西实在太费脑子了。所以,好好记录代码将有助于你节省时间和精力。
呼吸新鲜空气、去锻炼、去交谈
直直地坐在屏幕前盯着电脑看 10 个小时是不健康的。你可能会被想象中的问题搞得焦头烂额,从而忽略大局。摆脱这种状态,保持大脑和身体健康很重要。去外面呼吸,遛遛狗什么的。让你的眼睛放松一下。和那些不懂什么是 HTML 的人聊聊天。
寻求帮助
你社区的人会支持你的。所以他们会写文章帮助大家,构建开源项目,并询问你想要什么。针对你的工作负载,寻找好的资源、建议或支持。通常他们都会乐意帮忙。
希望这些建议中至少有一条能让你感觉生活没那么艰难。但我还有一个建议:
何不关上电脑?
添加Java高级架构交流群 378461078
关注微信公众号“托尼的技术成长之路”