原文地址:https://xbc.me/arts/

在阅读极客时间的专栏左耳听风时,发现这个专有名词。按照作者的说法,是为了得到相应的算法、代码、技术和影响力的训练。甚至作者建立相关的读者群,在加入相关的读者群前,对ARTS这个行动进行了一些思考。这篇文章是我思考的结果,仅供参考,并不能代表原作者的意思。

什么是ARTS

所谓的ARTS,也就是Algorithm、Review、Tip、Share,每个英文单词取首字母,就成为了ARTS。具体实现就是,每周至少做一个leetcode的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。

我们来看下原作者的初衷:

  1. ARTS的初衷
  2. Algorithm。主要是为了编程训练和学习。每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard)。进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。关于做Leetcode的的优势,你可以看一下我在coolshell上的文章 Leetcode 编程训练 - - CoolShell
  3. Review:主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。所以,需要你阅读并点评至少一篇英文技术文章,我个人最喜欢去的地方是http://Medium.com(需要梯子)以及各个公司的技术blog,如Netflix的。
  4. Tip:主要是为了总结和归纳你在是常工作中所遇到的知识点。学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。
  5. Share:主要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的技术文章。
  6. 这就是ARTS的全部动机。

为什么要做ARTS

做这个ARTS的训练,真的可以快速提高技术吗?答案是否定。一件事,脱离了时间维度和深度思考,基本上收益很少。这类事情,我也做了不少。很多东西都是3天的热度,过了3天后,完全都抛到脑后了。君不见,在谷歌上搜索”每周 ARTS”,搜索的结果出来可能有10+页。但坚持下来有半年的,很少,几乎没有。根本原因,可能和我之前博客停止写作有5-6年,是一模一样的原因(文章末尾的参考链接,我找到了2个一直在”坚持”做ARTS的战友)。

笑来老师曾经说,如果一件事是需要坚持的话,基本上你是不可能做好的。所谓需要坚持的东西,在打鸡血的一段时间后,顶多就是坚持了一阵子,最终都会一如既往地自然而然地放弃。你得把这件事变成你的刚需。所谓的刚需,就是那些你根本不用坚持就能一直做下去的东西,甚至你不做完它,都睡不着觉。

你得把这件事变成你的刚需。对我来讲,做好这件事,会有多重收益。

  1. 完成每周一个leetcode的算法题,既能让我复习并学习数据结构和算法,又可以让我学习到Go语言(因为我打算用Go语言实现算法。)。Double Kill!这也是我能想到,将学习算法和学习Go语言并联的用例了。
  2. 阅读英文技术文章,可以提升你英文阅读技能,以及学习到更多的新单词。学习新技术+学习英文单词,又一个Double Kill!
  3. 学习技术技巧。可以尝试学习常用的Linux、Redis、MySQL等命令。
  4. 分享技术文章。可以理解当前行业趋势,扩大自己的影响力。你还可以做阅读笔记,思考总结,阅读文章的感想。甚至你可以通过分享,找到与你志同道合的战友。

怎么做ARTS

那如果一件事,很难坚持下来,我们应该要怎么去实现并做好呢?凡事都是有方法论的,甚至刚需也可能需要很多的方法论。我会从适用范围、背景知识、方法论等几个维度,讲述如何完成这件事。

首先,要想做好ARTS的话,你得有决心。尝试在在助理来也,尝试完成一个21天的早起打卡。如果你实现21天不间断的早起打卡,那说明你有把这件事做好的决心。这是一个好的开始。

其次,这件事适合有编程经验,学习过一门计算机语言的人。当你有足够的”背景知识”,才能更好的完成这件事。

第三,这件事肯定是一件长期践行的事情,才会有较好的收益。如果你没有长期”坚持”的信念的话,获得的收益不一定能抵消你的时间成本。

为了更好的完成这件事,为自己量身定做的设计一套方案,不一定适合他人,仅供参考。

算法题(Algorithm)

算法题,可以在中文LeetCode上选择刷题。可以尝试:每完成三道简单题,做一道简单题;每完成三道中等题,学习一道困难题。即 9道简单 --> 3道中等 --> 1道困难

阅读技术文章(Review)

从哪里去看英文技术文章?前端之巅、极客时间、InfoQ等。这些技术媒体,都会有相关的英文版。从前端之巅或者InfoQ的文章都可以找到英文来源地址,甚至InfoQ还会帮你翻译写英文的文章。ReadHub的网页版本,也会有英文相关技术文章。如果没有目标去看的话,关注点会太宽泛,毕竟个人的注意力有限。建议以个人职业发展、兴趣尝试阅读。比如你最近想学习数据结构算法,那么算法与数据结构这个公众号,可能比较适合你。如果你对职业发展有想法,也可以多看看职业发展相关的公众号。还有一个比较好的方式,那就阅读英文技术文档,比如Linux、PHP、MySQL、Nginx,官网上的都是英文的文档。

学习技术技巧(Tip)

可以学习并复习常用的Linux命令、Bash、Redis 命令、MySQL命令等。这些都是我日常工作会用到或者涉及到的命令,也可以记录学习到的工作技巧,还可以关注你感兴趣的代码实现,算法原理,比如我想关注区块链的实现,相关数据结构,共识算法等。

分享文章(Share)

你可以分享阅读过的技术文章,英文中文都可以。个人会多加2个维度,阅读笔记和思考总结,记录阅读作者的核心观点以及自己的思考总结。

社交性学习

可以找到与你一起学习的人,与志同道合的朋友一起践行。这就是社交性的学习。可以在github.com上建立相关版本库,记录践行的过程,实现步骤:

  1. 建立单独的GitHub版本库,记录ARTS实现的过程。甚至可以建立一个简单的ARTS模板
  2. 建立单独的GitHub版本库,记录自己刷题的经历。

参考链接

  1. 极客时间 致左耳听风专栏的20,000名用户
  2. 知乎 极客时间《左耳听风》发起的ARTS挑战怎么参加?
  3. infoQ 左耳朵耗子:软件开发这些年,我学会的道理和教训
  4. 关于 ARTS
  5. MarsForever_ARTS
  6. wzshare/ARTS