Changes between Version 33 and Version 34 of ProjectManagementIdeas


Ignore:
Timestamp:
Apr 30, 2009, 2:22:13 PM (15 years ago)
Author:
Chris Nelson
Comment:

Shuffle some text, add resource utilization chart example

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v33 v34  
    1010 * When will my project be done? (That is, what is the forecasted completion date.)
    1111 * Am I on schedule?  (That is, is the percent complete for the overall project where it should be at this time.)
    12  * What tasks are on the critical path?  (That is, what tasks must be finished on time to not affect project completion.)
     12 * What tasks are on the critical path?  (That is, what tasks have a positive or negative effect on the overall schedule if they are early or late.)
    1313 * How are my resources being utilized?
    14  * How will a change (e.g., in scope or constraints) affect project completion or resource utilization?
    15 
    16 To answer these questions, it must know about:
     14
     15To answer these questions, the system must know about:
    1716
    1817 * Tasks to be done
     
    2221 * Deadlines for task or project completion
    2322
     23Some of this information is part of the Trac core, some is provided by existing plugins, and some must be added to support project management.  None of this information is antithetical to Trac's design and implementation.
     24
    2425== Task Properties ==
    2526
    2627Answering the questions listed above requires recording certain properties of a task.
    2728
    28  Work:: The amount of work needed to complete the task.  This is ''not'', necessarily, the time it will take to complete the task (duration).  The task may be unassigned (and will take forever to complete) or has a resource assigned only part-time (so it will take longer to complete than the amount of work indicates).
    29 
    30  Assigned resource:: The individual who will work  on this task.
     29 Work:: The amount of work needed to complete the task.  This is ''not'', necessarily, the time it will take to complete the task (duration).  The task may be unassigned (and will take forever to complete), may have a resource assigned only part-time (so it will take longer to complete than the amount of work indicates), or have multiple resources assigned (so it may take less time to complete than the amount of work indicates).
     30
     31 Assigned resources:: The individuals who will work  on this task.
    3132
    3233 % Effort:: The amount of the resource's time that will be spent on this task.  If the resource is working on a 2-day task 50% of the time, we expect it to take 4 days.
     
    7071The basic answer to "When will my project be done?" is generally provided by a [http://en.wikipedia.org/wiki/Gantt_chart Gantt chart] which shows tasks, their dependencies, their duration (scaled by resource availability), and milestones. As discussed in [http://groups.google.com/group/trac-users/browse_thread/thread/83c0b6a248040542?hl=en two] [http://groups.google.com/group/trac-users/browse_thread/thread/3084796acbc7233c/3f393a18f99cfebd?hl=en&tvc=2#3f393a18f99cfebd}}} threads] on the Trac Users mailing list, a Gantt chart is a fundamental requirement for project management.
    7172
    72 In its most basic form, a Gantt chart shows:
    73 
    74   Tasks:: Self-contained units of work
    75 
    76   Dependencies:: Relationships between tasks that constrain when they can be done
    77 
    78   Milestones:: Dates by which one or more tasks must be completed
    79 
    80 It may also show resource assignments and progress in tasks.  It often includes a "today" line to show where a project stands.  (If the project is on schedule, all tasks to the left of ''today'' are complete and any task that spans ''today'' has a progress bar to the right of ''today''.)
    81 
    82 A Gantt chart may also show slack time for tasks, how much they can slip before affecting the overall schedule.  It often also highlights the ''critical path'', the set of tasks which determine the overall length of the project and which delay the project completion unit-for-unit as they are delayed or extended.
    83 
    84 == Component Data ==
    85 
    86 Each Gantt chart component or feature requires data to support it.  For Trac-based project management, this data is often in addition to the core ticket data. 
    87 
    88 In general, we might expect to have multiple resources assigned to a task but if we use a Trac ticket as the basis for a task, we have only a single resource, the ticket owner.
    89 
    90 === Core Fields ===
    91 
    92 Core ticket fields include relevant to project management include:
    93 
    94  * owner (who is working on it)
    95  * milestone (what milestone this ticket is part of)
    96  * status (new, assigned, ..., closed)
    97  * summary (short description)
    98 
    99 Core milestone fields relevant to project management include:
    100 
    101  * name
    102  * due (date and time)
    103  * completed (treated as a Boolean: open or closed)
    104 
    105 === Additional Data ===
    106 
    107 For project management, we must have the following additional information about a task/ticket:
    108 
    109  * estimate (expected work required to complete task)
    110  * percent complete
    111  * dependencies
    112  * percent effort
    113 
    114 '''NOTE:''' While Gantt charts typically show percent complete, this can be computed from time remaining vs. total estimate or time worked vs. total estimate.  We will not, necessarily, store percent complete.  It is intuitive for display and analysis but difficult for data entry.
     73It often includes a "today" line to show where a project stands. (Need an example.)
     74
     75A Gantt chart may also show slack time for tasks, how much they can slip before affecting the overall schedule.  (Need an example.)
    11576
    11677= Resource Utilization =
     
    12384Both views may be combined in a sequence of stacked bar graphs.  At T1, a resource is 80% utilized with 20% each on four tasks, at T2, one task is complete and the resource is 60% utilized with 20% on each of the remaining three tasks, etc.
    12485
     86[[Image(resource-utilization.PNG)]]
    12587
    12688= Related Work =
     
    156118 * [http://www.ganttproject.biz/ GanttProject]'s website isn't very informative but it appears to be a desktop application.
    157119
    158 = Roadmap =
    159 
    160 There seems to be a consensus that grandiose project management features for Trac should be implemented with a combination of plugins which provide useful functionality on their own.  The following plan assumes that approach.
    161 
    162 == Dependency and Duration ==
    163 
    164 There is some benefit to very basic Gantt that showed just tasks and their dependencies and the resultant schedule.
    165 
    166 [[Image(simple-gantt.PNG)]]
    167 
    168 Disregarding any resource constraints, this chart shows
    169 
    170  * circuit board design and firmware development follow schematic design
    171  * package design can proceed independently
    172  * assembly can't be done until the circuit boards and packaging are ready
    173  * the product can't ship until it's assembled and has firmware. 
    174  * the overall project will take 9 calendar days
    175 
    176 (Clearly this is a gross simplification and likely not accurate in many ways.)
    177 
    178 This requires only that the ticket have some information about estimated effort or duration of the task and simple FS task dependency.
    179 
    180 == Progress ==
    181 
    182 If we also track work on tasks, we can monitor project progress at a glance.
    183 
    184 [[Image(gantt-progress.PNG)]]
    185 
    186 == Resource Allocation ==
    187 
    188 When a resource is not available 100% of the time, tasks take longer than the work suggests.  By assigning effort to resources, we can chart this time dialation.
    189 
    190 [[Image(gantt-resource.PNG)]]
    191 
    192 When the hardware and software engineers are only available half time, the project gets delayed.
    193 
    194 == Critical Path ==
    195 
    196 Some tasks affect project schedule and some do not.  The tasks which affect the schedule are on the ''critical path''.
    197 
    198 [[Image(critical-path.PNG)]]
    199 
    200 Packaging design and circuit board layout are so short -- relative to other activities -- they speeding them up doesn't really help the project.  But if we could shorten schematic design or firmware, every day we take out of one of those activities we also take out of the project schedule.
    201 
    202 == Sub-tasks ==
    203 
    204 To manage the complexity of the chart, we can break tasks down into sub-tasks and show various levels of detail.
    205 
    206 [[Image(roll-up-1.PNG)]]
    207 
    208 [[Image(roll-up-2.PNG)]]
    209 
    210 
    211 = Development Plan =
    212 
    213  1. Fork !MasterTickets as !TicketDep (or something) and add ''composed of''/''part of'' dependencies and [http://trac.edgewall.org/wiki/SubTickets#CreatingSubtickets means to create them].  Plan for but do not yet implement ''starts with'' and ''ends with'' dependencies.
    214  1. Specify the interfaces necessary for a scheduling plugin to use dependencies, estimates, and time worked to determine project schedule.
    215    * Consider adding a percentage available when scheduling resources.
    216  1. Specify the interfaces necessary for a Gantt chart to get data from tickets.
    217    * Each task must have a name, duration, percent complete, and start or end. (The start or end comes from schedule calculations, not direct ticket data.)
    218    * Access to dependencies between tickets is also needed so as to render the chart.
    219  1. Implement those interfaces on top of TimingAndEstimationPlugin.
    220 
    221 = Disclaimer =
    222 
    223 The bulk of this page was prepared by Chris Nelson who makes no claim to be certified project planner or anything of the sort.  It is based on his understanding of project management after 25 years of software development. [#Contributors Other developers] have also offered some hints and useful comments (according to their experience) in order to enhance this page, and get a better understanding of the features and requirements needed.
    224 
    225 == Contributors ==
    226 
    227   - Olemis Lang
    228 
    229 = Appendix : Microsoft Project Task Properties =
     120== Microsoft Project Task Properties ==
    230121
    231122Microsoft Project goes far beyond what is likely to be put into a Trac-based project management solution but it may be helfpul to consider what task properties MSProject records and what their analogs may be in Trac tickets. 
     
    262153
    263154However, this doesn't seem to be all the data Project records for a task.  If you add a column to the WBS in the Gantt chart, there are many more options.  The most interesting is Work which is the amount of work required to complete a task.  Only when a resource is assigned 100% are Work and Duration the same.  We'd like to be specify the ''work'' required for a task and let the system calculate its ''duration'' based on available resources.
     155
     156= Roadmap =
     157
     158There seems to be a consensus that grandiose project management features for Trac should be implemented with a combination of plugins which provide useful functionality on their own.  The following plan assumes that approach.
     159
     160== Dependency and Duration ==
     161
     162There is some benefit to very basic Gantt that showed just tasks and their dependencies and the resultant schedule.
     163
     164[[Image(simple-gantt.PNG)]]
     165
     166Disregarding any resource constraints, this chart shows
     167
     168 * circuit board design and firmware development follow schematic design
     169 * package design can proceed independently
     170 * assembly can't be done until the circuit boards and packaging are ready
     171 * the product can't ship until it's assembled and has firmware. 
     172 * the overall project will take 9 calendar days
     173
     174(Clearly this is a gross simplification and likely not accurate in many ways.)
     175
     176This requires only that the ticket have some information about estimated effort or duration of the task and simple FS task dependency.
     177
     178== Progress ==
     179
     180If we also track work on tasks, we can monitor project progress at a glance.
     181
     182[[Image(gantt-progress.PNG)]]
     183
     184== Resource Allocation ==
     185
     186When a resource is not available 100% of the time, tasks take longer than the work suggests.  By assigning effort to resources, we can chart this time dialation.
     187
     188[[Image(gantt-resource.PNG)]]
     189
     190When the hardware and software engineers are only available half time, the project gets delayed.
     191
     192== Critical Path ==
     193
     194Some tasks affect project schedule and some do not.  The tasks which affect the schedule are on the ''critical path''.
     195
     196[[Image(critical-path.PNG)]]
     197
     198Packaging design and circuit board layout are so short -- relative to other activities -- they speeding them up doesn't really help the project.  But if we could shorten schematic design or firmware, every day we take out of one of those activities we also take out of the project schedule.
     199
     200== Sub-tasks ==
     201
     202To manage the complexity of the chart, we can break tasks down into sub-tasks and show various levels of detail.
     203
     204[[Image(roll-up-1.PNG)]]
     205
     206[[Image(roll-up-2.PNG)]]
     207
     208
     209= Development Plan =
     210
     211 1. Fork !MasterTickets as !TicketDep (or something) and add ''composed of''/''part of'' dependencies and [http://trac.edgewall.org/wiki/SubTickets#CreatingSubtickets means to create them].  Plan for but do not yet implement ''starts with'' and ''ends with'' dependencies.
     212 1. Specify the interfaces necessary for a scheduling plugin to use dependencies, estimates, and time worked to determine project schedule.
     213   * Consider adding a percentage available when scheduling resources.
     214 1. Specify the interfaces necessary for a Gantt chart to get data from tickets.
     215   * Each task must have a name, duration, percent complete, and start or end. (The start or end comes from schedule calculations, not direct ticket data.)
     216   * Access to dependencies between tickets is also needed so as to render the chart.
     217 1. Implement those interfaces on top of TimingAndEstimationPlugin.
     218
     219= Disclaimer =
     220
     221The bulk of this page was prepared by Chris Nelson who makes no claim to be certified project planner or anything of the sort.  It is based on his understanding of project management after 25 years of software development. [#Contributors Other developers] have also offered some hints and useful comments (according to their experience) in order to enhance this page, and get a better understanding of the features and requirements needed.
     222
     223== Contributors ==
     224
     225  - Olemis Lang
     226
    264227----
    265228= Old design notes =
     
    267230(I'm reworking these into a better flow for the whole document.)
    268231
     232== Component Data ==
     233
     234Each Gantt chart component or feature requires data to support it.  For Trac-based project management, this data is often in addition to the core ticket data. 
     235
     236In general, we might expect to have multiple resources assigned to a task but if we use a Trac ticket as the basis for a task, we have only a single resource, the ticket owner.
     237
     238=== Core Fields ===
     239
     240Core ticket fields include relevant to project management include:
     241
     242 * owner (who is working on it)
     243 * milestone (what milestone this ticket is part of)
     244 * status (new, assigned, ..., closed)
     245 * summary (short description)
     246
     247Core milestone fields relevant to project management include:
     248
     249 * name
     250 * due (date and time)
     251 * completed (treated as a Boolean: open or closed)
     252
     253=== Additional Data ===
     254
     255For project management, we must have the following additional information about a task/ticket:
     256
     257 * estimate (expected work required to complete task)
     258 * percent complete
     259 * dependencies
     260 * percent effort
     261
     262'''NOTE:''' While Gantt charts typically show percent complete, this can be computed from time remaining vs. total estimate or time worked vs. total estimate.  We will not, necessarily, store percent complete.  It is intuitive for display and analysis but difficult for data entry.
     263
     264
    269265A Gantt plugin for Trac should analyze ticket dependencies and produce an interactive, explorable Gantt chart showing task progress and project status.
    270266
     
    295291Panning or scrolling in order to display the schedule at a different time.
    296292
    297 Each task's bar in the chart should show actual hours.
     293Each task's bar in the chart should show % complete.
    298294
    299295The chart should have a Today line.
    300296
    301 The chart (or an accompanying report or tool) should aid in resource leveling by (at least) showing overcommitted resources.
     297An accompanying report or tool should aid in resource leveling by (at least) showing overcommitted resources.
    302298
    303299Visual indications about delays, task completion and other significant events.