Maxiee 的项目管理思考 6 -- 周目标第2周完成

in #cn7 years ago

startup-593327_960_720.jpg

前言

在上一篇文章中, 我针对上班族时间精力有限的状况, 设计了一种名为周目标设定的学习方法, 今天是第 2 周的完成日. 在本周我主要投入到自己的 2 个 SideProject, 均是关于自用的信息系统.

第 2 周的实践验证了周目标设定的有效性, 同时我也有了更多的感悟与积累.

时间更少了

这周比以往更加忙了, 有好几天都是加班超过 11 点才下班, 可供我学习的时间变得很少.

时间少了如何保持学习效率呢? 这让我开始思考时间变少意味着什么:

  1. 慢慢进入状态已经不允许了, 还没投入状态时间就到了
  2. 专注力也会下降, 完成任务的复杂度不如从起拿了
  3. 疲劳, 切换上下文带来的疲劳

如何应对呢? 我想到了两个对策:

  1. 细分
  2. 敏捷

细分

细分是人类处理和理解复杂事物的方法, 大事化小, 小事化了.

我充分地使用了这种方法, 比如, 我需要实现一个算法, 它既要访问数据库, 又要访问文件系统, 还要包含 UI 交互.

假设你手上可用的时间是断断续续的, 每次 30 分钟左右的时间片断, 会有一种心累的感觉.

通过细分, 问题就简化了, 例如我把这个问题化解为:

  1. 点击 UI 元素 A, 访问数据库操作 X
  2. 在 X 的基础上进行数据库操作 Y
  3. 基于 Y 进行文件系统操作
  4. 将结果展示在 UI 上

这样一个大算法问题就被细分成多个变简单的小问题, 每个花费 1 小时左右都能够解决.

最终, 我顺利解决了问题, 并且没有感受到什么压力.

敏捷

由于时间有限, 就要节省时间, 从哪些过程中能节省时间呢?

编程的时间是节省不了, 学习新知识的时间是节省不了的.

但是我发现决策这个过程, 存在很大的水分, 能节省出很多时间来.

大而全

在主导一个系统的设计时, 会很容易自我催眠, 以为自己设计的系统必然超过现有系统, 并且自己系统的闪光点多么厉害, 因此自嗨起来. 并在此基础上设计了一个庞大的架构, 围绕这个架构又设计了无数的功能点. 这就像是一个黑洞, 在开发时吞噬了无数开发时间.

我没有这么多时间, 我采取了一种更加务实的方法, 我始终思考:

我要做一个什么系统, 这个系统有哪些不可缺少的功能?

不论是最先进的系统, 还是最传统的系统, 对基本功能的要求都是一致的, 把基本功能做好准是没错的.

迭代

设计系统是需要作出的选择太多了. 如何能频频找到最优解, 并且得到全局最优解呢? 敏捷开发中的迭代思想给了我很大的指导.

还是拿经典的造车为例, 一辆车的核心要素是有一个车轮一个座位, 这样首先可以做一个独轮车, 车轮是泡沫的, 座椅是木头的. 这辆车虽然质量有问题, 性能有问题, 但是架构没问题, 它是一辆按照正确做法生产的车, 并且能起到车的作用.

一个能跑起来的简陋独轮车, 胜过跑不起来的高级车. 后者就不是科学了, 就成了玄学.

再次基础上, 主要进行两件事:

  • 升级: 泡沫车轮性能太差, 需要更好的橡胶车轮.
  • 重构: 一个车轮太不稳定, 改成两个轮, 两个车轮就需要底盘. 两个车轮还不稳定, 需要四个轮, 四个轮就需要更宽大的底盘, 以及传动轴.

我的 SideProject 就是按照这样的思想一步一步成长起来了.

时间轴

之前我曾经苦恼过频繁切换上下文容易忘掉好多东西, 每次再开始都得 "重头来". 因此我发现了一种时间轴方法, 能改善这种问题.

所谓时间轴方法, 就是按照时间轴的格式, 将自己完成的事件列举出来, 如下就是我这周的一条时间轴:

  • 2018-01-26 16:39:28 认真学习 Django Restful Framework
  • 2018-01-26 16:22:23 判重功能已经实现, 目前一个一个查开销有点大
  • 2018-01-25 14:13:43 搜索功能完成, 判断返回数组长度可知是否存在
  • 2018-01-25 14:11:21 找到原因了, 中文需要编码一下, 后续更新到代码中
  • 2018-01-25 14:00:12 在 URL 中搜索中文会报错 400
  • 2018-01-25 13:42:20 实现搜索功能, ① django-filters 加入 INSTALL_APP ② View 设置 filter_fields
  • 2018-01-25 11:01:32 添加 API 参考这个文档
  • 2018-01-25 10:58:38 成功向数据库中提交了数据
  • 2018-01-25 10:48:30 用 Postman 就提交成功了, 说明是我代码实现有问题
  • 2018-01-24 20:35:20 403 问题解决了, 我暂时把权限关了, 现在是 400 问题
  • 2018-01-24 20:29:06 前端向后端提交数据, 但是显示 403
  • 2018-01-24 12:06:54 干掉了 UUID 后, 成功能够用 POST 提交数据了
  • 2018-01-22 14:57:56 现在创建 site 说 uuid 不对, 看起来是序列化器需要声明一下 uuidfield
  • 2018-01-22 14:50:55 就是外键不对, 现在是通过 id 引用的, 预期是通过 uuid
  • 2018-01-22 14:50:36 现在能 rest 添加数据了
  • 2018-01-22 14:38:08 但是添加站点报错, 说 site id 未指定
  • 2018-01-22 14:37:58 REST API 运行起来了
  • 2018-01-22 12:01:19 添加 uuid 字段
  • 2018-01-22 11:55:45 管理员站点
  • 2018-01-22 11:50:51 模型创建成功
  • 2018-01-22 11:36:37 学习教程
  • 2018-01-22 11:27:41 创建 app info
  • 2018-01-22 11:25:58 Server 跑起来了
  • 2018-01-22 11:23:32 建立 Django 项目

这样, 不论什么时候, 看到时间轴, 自己就立即对事情的来龙去脉有了了解, 也就能够更快进入状态.

除此, 这种做法还会让自己有一种充实感, 一种成就感.

通勤时间

每周都要花费大量时间在通勤上, 因此这周我也继续探索了利用通勤时间的方法.

每天举个 10.6 寸的山寨平板站在拥挤的地铁上, 稍显另类... 后续我打算换一个 iPad mini 可能更舒适一些.

看代码

本周我的第一大壮举是在地铁上用平板看代码. 怎么说呢, 看过了几个项目, 但是感觉都只能涉及到点毛皮, 深入的就不行了.

毕竟静态分析, 不能运行, 要吃透得动静结合才行.

以此看来, 在通勤路上还是适合做一些信息获取类的事情.

读书

相较于读代码, 通勤路上非常适合读书, 很容易保持专注, 由于书本讲得很细, 真得能学到不少东西.

书中有的地方, 我会做一个标记, 等以后坐下来可以进行笔记, 扩充自己的知识储备.

总结

以上就是我本周的项目管理思考, 我完成了周目标第2周, 同时进行了 2 个 SideProject 的开发, 并且都取得了很大的进展, 我很满意.

如果有新的感悟, 我会继续更新.

欢迎通过点赞对我提供支持, 你的支持将是我持续写作的动力.

欢迎浏览 Maxiee 的项目管理思考系列文章: