第一个项目
Designing a project is deceptively simple, yet few people do it 设计一个项目看似简单,但仍然很少有人做
我自己“常立志”,但确实没有能够认真的去设计自己的“项目”,很难做到“立长志”。
给自己设定一个项目的并不复杂,步骤如下:
- Define a clear goal
- Select learning materials and approach to reach goal
- Estimate time required to achieve goal
- Set deadlines and milestones
- Break down work into a week-by-week process
- Review and update project file (ongoing)
学习目标
学习目标可以分为三种:
- Completing formal classes (with target grades)
- Learning a skill to particular level of ability (more objective = better)
- Learning an area of knowledge (clear curriculum = better)
我的学习目标是开发完成 filemgmt,是第二类的目标,似乎是比较困难的一种。这个项目要做到的就是管理单位的外来资料和内部图书,管理员可以便捷的录入信息,同时可以将条目导出到其他的平台;用户可以方便的浏览并且借阅;需要一个简单的推荐引擎;利用网络爬虫,获取图片和评论;界面干净、整齐,用户操作友好。
目前来看,没有特别有针对性的学习资料。之前学习过全栈营的课程,看过 Rails in Action,在这个基础上,实现后续的功能,调试程序的时候主要靠 Google 和 StackOverflow。同时希望能够看 the Well-grounded Rubyist,发布的时候参考 Docker for Rails Developer
学习资料
一方面平常琐碎的事情比较多,另一方面我也有迷失在学习资料中(get lost in the sea of choices)的感觉。
The vast majority of people fail to learn something not because they chose the incorrect material, but because they didn’t devote themselves to the actual project.
个人感觉,其实跟着一本书学习,并且照着书录入、调试代码,比起做一个实际的应用来说要简单一些。所以能否让自己真正投入到这个项目,就成为能否实现学习目标的关键。
时间预估
因为这个学习项目并没有固定的课程表,所以有两种预估时间的方法可以采用——自顶向下 Top-down 和自下而上 Bottom-up。
Top-down: Decide on a final deadline, make it fit by adding/eliminating/modifying Bottom-up: Calculate the time required in each sub-task to estimate total
在这里,我采用的是自顶向下的方式,把项目的期限设定为 2018 年年底。
最后期限和里程碑
课程里面强调了 soft deadlines —— 自己设定的期限,并且要把这个自己设定的最后期限和真正的最后期限同等对待。
每周计划
根据最后期限和里程碑来制定每周的工作安排。
回顾和更新
我认为最有价值的部分其实是回顾和更新
No plan survives contact with the enemy — Helmuth von Moltke 作战很难按计划进行(没有计划能够在接触敌人之后不被修改)
Plans aren’t as useful as planing 计划本身并不比制定计划的过程更有用
Planing is very useful, but having a plan itself is not that useful, because there are going to be a lot of changes.
还记得自己每年都制定的几乎相同的新年愿望么?
上学的时候,总是会背一堆书回家,然后开学的时候再把几乎没有打开的书原样搬回学校。
每周拿出 20 分钟的时间来回顾自己的计划,其实用一个番茄,25 分钟也许更好。
Ask yourself:
- Am I on track to complete the project?
- Where are my estimates inaccurate?
- Where are the risks and uncertainties?
回顾之后,也许需要更新计划。即使是推迟最终期限,也好过放弃学习计划。
在预估时间的时候,不妨把需要花费的时间稍微多估计一些,这样可以给自己一些灵活性。