Every Thing Is A Project

2019年3月14日,后知后觉的我终于加入到了耗子叔的ARTS打卡小组里了。作为第一批买专栏的人,到了第三期打卡才加入进去,充分说明我的专栏参与度不够呀。

这篇分享我决定多说几句废话,分享一下自己的内心想法,但也做好了标题,不想看废话的可以直接了解关键内容即可。

什么是ARTS

  1. Algorithm: 每周至少做一个leetcode的算法题
  2. Review: 阅读并点评至少一篇英文技术文章
  3. Tip: 学习至少一个技术技巧
  4. Share: 分享一篇有观点和思考的技术文章

其实看完这4个目标的时候,我的内心还是有点打鼓的,不知道自己能不能坚持下来,但是我知道绝对不能放弃这次机会,其实做出改变只在一念之间。

下定决心(此处为废话)

接着上面的话说吧,有人可能会想:又在吹牛逼,搞玄学,什么一念之间,哪有那么容易。

说实话这个ARTS这个计划要坚持也确实不容易,如果是学生时代还好,我现在工作了,成家了,客观上可自由支配的时间确实少了。

但是,自由时间少,但是不代表没有;而且自我反思一下,时间真的很少么?
有时候大把时间握在手中,却整天也没做啥正经事情,不是玩手机就是看电视,或者做着事情的时候分心。

根本上还是对生活缺乏规划,或者说缺乏时间规划。

我是如何意识到自己缺乏规划的呢,其实以前也读过时间管理之类的书,但是也没那个兴趣去执行,一直生活的很佛系。

说来也巧,就在参加ARTS计划之前,我在极客时间的《软件工程之美》专栏刚好学完了Everything is a project这节课,真是犹如醍醐灌顶,开窍了。

我并不是想鼓吹这个专栏好或是自己悟性好。
第一,我还不够资格去评价人家的作品;其次,悟性好?确实不存在的。

我个人的认知是这样的:日积月累的学习,然后时机成熟,赶巧了,才突然发生了本质的改变。

因为我的经验是这样的:光意识到自己的规划有问题是不够的,意识其实偶尔会冒出来的,但是很快又会消失,完全没有执行的动力。缺少外力拉一把。

而我上面提到的那节课就是我的关键助力:再次唤醒了我的意识,并且提供了方法。下面我就进入正题。

工程方法

有目的、有计划、有步骤地解决问题的方法就是工程方法。

宝玉老师举了他参加一个活动的例子,活动要求:5到6个人为一组,设计给老年人使用的手机,限时30分钟。完成后,每组选一个人上台花5分钟展示作品。

他第一反应就是把它当做一个项目,快速拟定了计划:

  1. 0~10分钟(分析):头脑风暴,收集想法。
  2. 11~15分钟(设计):根据头脑风暴结果,确定最终设计。
  3. 16~25分钟(开发):将想法画在纸上。
  4. 26~30分钟(发布):完善结果,准备展示。

最后他们组拿到了第一,不仅准备充分而且手机功能设计的完整。而其他很多组甚至还没来得及把想法完整地画下来。

工程方法通常分为6个阶段:

  1. 想法:想法阶段通常是想要解决问题。最开始问题通常是模糊的,所以需要清洗定义好问题,研究其可行性,检查是否有可行的解决方案。
  2. 概念:概念阶段就是用图纸、草图、模型等方式,提出一些概念性的解决方案。这些方案可能有多个,最终会确定一个解决方案。
  3. 计划:计划阶段是关于如何实施的计划,通常会包含人员、任务、任务持续时间、任务的依赖关系,以及完成项目所需要的预算。
  4. 设计:设计阶段就是要针对产品需求,将解决方案进一步细化,设计整体架构和划分功能模块,作为分工合作和开发实施的一个依据和参考。
  5. 开发:开发阶段就是根据设计方案,将解决方案构建实施。开发阶段通常是一个迭代的过程,这个阶段通常会有构建、测试、调试和重新设计的迭代。
  6. 发布:将最终结构包括文档发布。

我目前对软件工程也没有什么深入的理解,所以摘录了专栏里的一些内容给大家参考。

关于工程思维在生活中的应用,宝玉老师还举了他的两个孩子啊在MineCraft里还原公寓的经历。这个例子直接让我意识到了,生活的方方面面都需要计划的,特别在自己的关键事情上,一定要有分析有计划。

如何完成ARTS

我的思路

ARTS计划看起来已经比较具体了,明确的每周4个目标。但对于我如何完成这4个目标来说,还远远不够。

我的总体思路就是:

  • 大目标细化到小目标
  • 时间从周细化到天,到每天的时间段
  • 英文文章的选择: 我选深入理解计算机系统的英文版,这书买来放家里快2年了吧。。。
  • 技术Tip的选择: 我先回想一下平时工作中遇到的一些小问题是怎么解决的,后面再摸索吧,目前没有特别具体的想法。
  • 找到分享的技术文章的主题来源: 从我学完的极客时间专栏里,找一些自己理解的还不错的东西写成博客分享一下。
  • 每周结束之后review自己的计划,及时调整

具体方案

  • 周一,20点到22点,完成LeetCode算法题,并写博客分享思路
  • 周二, 20点到22点,完成英文文章的阅读并完成点评
  • 周三, 学习一个技术技巧,并完成博客分享
  • 周四周五写一篇技术文章
  • 周六:8点到8点半,review一下本周的执行情况。
  • 周六,周日(optional):空余时间提前进行下周的任务,以防加班和其他事情耽误进度。

PS: 我的方案会根据实际执行情况及时调整,我不善于写文章,每次写博客都会耗费大量的时间。

结束语

写这篇文章是希望通过分享自己的经历和新GET到的思维方式,能够对他人有所启发,一起努力坚持到ARTS的最后一天。

另外,everything is a project; 我们能做的不只是ARTS。

加载评论框需要科学上网