在上一篇文章中, 我针对上班族时间精力有限的状况, 设计了一种名为周目标设定的学习方法, 今天是第 2 周的完成日. 在本周我主要投入到自己的 2 个 SideProject, 均是关于自用的信息系统.
第 2 周的实践验证了周目标设定的有效性, 同时我也有了更多的感悟与积累.
这周比以往更加忙了, 有好几天都是加班超过 11 点才下班, 可供我学习的时间变得很少.
时间少了如何保持学习效率呢? 这让我开始思考时间变少意味着什么:
如何应对呢? 我想到了两个对策:
细分是人类处理和理解复杂事物的方法, 大事化小, 小事化了.
我充分地使用了这种方法, 比如, 我需要实现一个算法, 它既要访问数据库, 又要访问文件系统, 还要包含 UI 交互.
假设你手上可用的时间是断断续续的, 每次 30 分钟左右的时间片断, 会有一种心累的感觉.
通过细分, 问题就简化了, 例如我把这个问题化解为:
这样一个大算法问题就被细分成多个变简单的小问题, 每个花费 1 小时左右都能够解决.
最终, 我顺利解决了问题, 并且没有感受到什么压力.
由于时间有限, 就要节省时间, 从哪些过程中能节省时间呢?
编程的时间是节省不了, 学习新知识的时间是节省不了的.
但是我发现决策这个过程, 存在很大的水分, 能节省出很多时间来.
在主导一个系统的设计时, 会很容易自我催眠, 以为自己设计的系统必然超过现有系统, 并且自己系统的闪光点多么厉害, 因此自嗨起来. 并在此基础上设计了一个庞大的架构, 围绕这个架构又设计了无数的功能点. 这就像是一个黑洞, 在开发时吞噬了无数开发时间.
我没有这么多时间, 我采取了一种更加务实的方法, 我始终思考:
我要做一个什么系统, 这个系统有哪些不可缺少的功能?
不论是最先进的系统, 还是最传统的系统, 对基本功能的要求都是一致的, 把基本功能做好准是没错的.
设计系统是需要作出的选择太多了. 如何能频频找到最优解, 并且得到全局最优解呢? 敏捷开发中的迭代思想给了我很大的指导.
还是拿经典的造车为例, 一辆车的核心要素是有一个车轮一个座位, 这样首先可以做一个独轮车, 车轮是泡沫的, 座椅是木头的. 这辆车虽然质量有问题, 性能有问题, 但是架构没问题, 它是一辆按照正确做法生产的车, 并且能起到车的作用.
一个能跑起来的简陋独轮车, 胜过跑不起来的高级车. 后者就不是科学了, 就成了玄学.
再次基础上, 主要进行两件事:
我的 SideProject 就是按照这样的思想一步一步成长起来了.
之前我曾经苦恼过频繁切换上下文容易忘掉好多东西, 每次再开始都得 "重头来". 因此我发现了一种时间轴方法, 能改善这种问题.
所谓时间轴方法, 就是按照时间轴的格式, 将自己完成的事件列举出来, 如下就是我这周的一条时间轴:
这样, 不论什么时候, 看到时间轴, 自己就立即对事情的来龙去脉有了了解, 也就能够更快进入状态.
除此, 这种做法还会让自己有一种充实感, 一种成就感.
每周都要花费大量时间在通勤上, 因此这周我也继续探索了利用通勤时间的方法.
每天举个 10.6 寸的山寨平板站在拥挤的地铁上, 稍显另类... 后续我打算换一个 iPad mini 可能更舒适一些.
本周我的第一大壮举是在地铁上用平板看代码. 怎么说呢, 看过了几个项目, 但是感觉都只能涉及到点毛皮, 深入的就不行了.
毕竟静态分析, 不能运行, 要吃透得动静结合才行.
以此看来, 在通勤路上还是适合做一些信息获取类的事情.
相较于读代码, 通勤路上非常适合读书, 很容易保持专注, 由于书本讲得很细, 真得能学到不少东西.
书中有的地方, 我会做一个标记, 等以后坐下来可以进行笔记, 扩充自己的知识储备.
以上就是我本周的项目管理思考, 我完成了周目标第2周, 同时进行了 2 个 SideProject 的开发, 并且都取得了很大的进展, 我很满意.
如果有新的感悟, 我会继续更新.
欢迎通过点赞对我提供支持, 你的支持将是我持续写作的动力.
欢迎浏览 Maxiee 的项目管理思考系列文章: