summaryrefslogtreecommitdiff
path: root/pm.mdwn
blob: 2bc0ad6066240bffda47a3f1cbb60397459e9944 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[[!meta title="Project management"]]

This page describes the lightweight project management process for
development of Ick. Participation is voluntary.

Iterative development process
=============================================================================

Iterative development seems to be the only thing that makes sense in
order to produce working software that fills what users actually need.
Otherwise, you don't get any feedback until at the end of the
development period, when things should already be mostly finished.
With iterations, you do a little bit of work, show that to relevant
people, get feedback, and incorporate the feedback to future work as
seems most sensible.

There's a ton of methodologies to do iterative development. Scrum is
currently popular. However, Ick needs to be fun, and Scrum seems too
heavy-weight for fun. Instead, this nearly informal process is what
[[people/liw]] wants to use.

* Iterations are a calendar week.

* Start iteration with a short planning meeting, where goals are
  discussed and decided upon, and tasks outlined, and everything's
  written down. The tasks should be specified with a clear scope, and
  with enough detail to estimate that they can be done. Large tasks
  should be split down into small tasks, preferably into tasks less
  than an hour each.

  Only allocate enough tasks that they can all be completed with a
  high likelihood. It's always OK to do more, but it's de-moralising
  to never complete everything.

* End the iteration with a short retrospective meeting, to summarise
  what was done (from the planned list of tasks or otherwise), and
  reflecting on the process to improve it, as necessary.

* Write down decisions, in a meeting note in the intrawiki blog.

* Estimates are done by the person who'll be doing the work. They
  should not be optimistic.

Development workflow
=============================================================================

* Work should be done in feature branches, but merged frequently to
  master. Unfinished features should be disabled, via some sort of
  feature toggle. Merging branches only after a long time means
  there's more pain during merge, and it takes longer until there's
  feedback on the changes in the branch from, say, CI, actual use, or
  code review.

* Work for Heat/Ansible stuff should also be merged frequently, and
  any affected production systems (`infra-*` stacks) should be
  deployed after merge is done. The master branch and what actually
  runs in production should never be far apart.

* Merging should ideally involve review. However, as there's only the
  one actually working on Ick, review would slow things down too much.
  Thus, we'll probably not have review for the time being. (Hint:
  contributing reviews would be a useful thing to do.)