Changes between Version 127 and Version 128 of ProjectManagementIdeas
- Timestamp:
- Aug 31, 2015, 10:11:59 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ProjectManagementIdeas
v127 v128 3 3 = Project management ideas 4 4 5 Trac is strong in basic, individual and small-team task management, but lacks features for heavy-duty project management such as in [https://products.office.com/en-us/project/project-and-portfolio-management-software Microsoft Project] and [http://sourceforge.net/projects/openworkbench/ Open Workbench]. This page discusses those missing features and how they can best be realized. 6 7 In Trac, a "project" is sometimes synonymous with "installation". On this page it is a set of related tasks and deadlines. Perhaps a software project has a Design Phase, an Alpha Release, a Beta Release and a General Release. Each phasewould have a milestone with a target date and tickets to complete the work for that phase.5 Trac is strong in basic, individual and small-team task management, but lacks features for heavy-duty project management such as in [https://products.office.com/en-us/project/project-and-portfolio-management-software Microsoft Project] and [http://sourceforge.net/projects/openworkbench/ Open Workbench]. This page discusses those missing features and how they can best be realized. We don't seek to make Trac a completely general project management solution and will limit resources to people and assume they are available full time. 6 7 In Trac, a "project" is sometimes synonymous with "installation". On this page it is a set of related tasks and deadlines. Each phase in the project would have a milestone with a target date and tickets to complete the work for that phase. 8 8 9 9 == Requirements and Definitions … … 13 13 * When will my project be done? That is, what is the forecast completion date? 14 14 * How much Earned Value has the project achieved? 15 * How do incurred costs compare to Earned value(Cost Performance Factor).15 * How do incurred costs compare to [https://en.wikipedia.org/wiki/Earned_value_management Earned value] (Cost Performance Factor). 16 16 * Am I on schedule? That is, is the percent complete for the overall project where it should be at this time? 17 17 * 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? … … 46 46 Dependencies:: Other tasks that affect when this task can be started or finished. 47 47 48 Task Hierarchy:: A "Work Breakdown Structure" is often used to give a hierarchical organization of all tasks on a project. For example, interior painting of a new house might be broken down into paint the living room, paint the dining room, etc. In a WBS, task 1.1.2 would have subtask 1.1.2.1 and 1.1.2.2. We propose to express the hierarchybut not force explicit numbering. We propose that each task have a single parent, which is the next level up in a WBS.48 Work Breakdown Structure / Task Hierarchy:: A "Work Breakdown Structure" is often used to give a hierarchical organization of all tasks on a project. For example, interior painting of a new house might be broken down into paint the living room, paint the dining room, etc. In a WBS, task 1.1 would have subtask 1.1.1 and 1.1.2. We propose to express the hierarchy, but not force explicit numbering. We propose that each task have a single parent, which is the next level up in a WBS. 49 49 50 50 === Dependencies … … 70 70 A resource may have a name and typically has some availability. An employee may have responsibilities in two departments and only be available for certain work 50% of the time or a vendor may only be able to supply a certain amount of cement or paint or CPU cycles. 71 71 72 We don't seek to make Trac a completely general project management solution and will -- at least for now -- limit resources to people and assume they are available full time.73 74 72 === Milestone Properties 75 73 … … 80 78 == Task Scheduling 81 79 82 There are two fundamental ways to approach scheduling. One is to assume that all tasks are small and to divide total estimates by resource rate. Then, one compares earned value to cost, computes CPF (Cost Performance Factor), and computes an estimated end time. This is the farsimpler approach, but fails to capture tasks that only some people can work on and other complexities. The other approach is to create an actual plan that shows when each resource will work on tasks.83 84 The basic answer to "When will my project be done?" is generally ''displayed in'' a [http://en.wikipedia.org/wiki/Gantt_chart Gantt chart] which shows tasks, dependencies, duration (scaled by resource availability) and milestones. [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, suggest that a Gantt chart is a fundamental requirement for project management, but scheduling tasks is even more fundamental anda necessary precondition for producing a Gantt chart.85 86 Consider a grossly-simplified project to design a new electronic device . This project might havethe following tickets:80 There are two fundamental ways to approach scheduling. One is to assume that all tasks are small and to divide total estimates by resource rate. Then, one compares earned value to cost, computes CPF (Cost Performance Factor), and computes an estimated end time. This is the simpler approach, but fails to capture tasks that only some people can work on and other complexities. The other approach is to create an actual plan that shows when each resource will work on tasks. 81 82 The basic answer to "When will my project be done?" is generally ''displayed in'' a [http://en.wikipedia.org/wiki/Gantt_chart Gantt chart] which shows tasks, dependencies, duration (scaled by resource availability) and milestones. Two threads [https://groups.google.com/forum/?hl=en#!topic/trac-users/g8C2okgEBUI here] and [https://groups.google.com/forum/?hl=en#!topic/trac-users/MIR5asvHIzw here] on the Trac Users mailing list, suggest that a Gantt chart is a fundamental requirement for project management, but so is scheduling tasks and in fact a necessary precondition for producing a Gantt chart. 83 84 Consider a grossly-simplified project to design a new electronic device, with the following tickets: 87 85 88 86 ||'''ID'''||'''Summary'''||'''Milestone'''|| … … 94 92 ||6||Assemble units||New device|| 95 93 96 With this simple task list, supported by core Trac tickets and milestones, we'll know when we are done because all the tickets are closed but we have no way to project when that will be. ''If'' all the tasks could be done concurrently, the project length is the length of the longest task. And since Trac assigns a date to the milestone, we can sort of work backwards from that to determine when work needs to start for the milestone to be met. However, core Trac has no way to record the time that a task should take. We need a field to hold ''Work'':94 With this task list, supported by core Trac tickets and milestones, we'll know when we are done because all the tickets are closed but we have no way to project when that will be. ''If'' all the tasks could be done concurrently, the project length is the length of the longest task. And since Trac assigns a date to the milestone, we can sort of work backwards from that to determine when work needs to start for the milestone to be met. However, core Trac has no way to record the time that a task should take. We need a field to hold ''[Estimated] Work'': 97 95 98 96 ||'''ID'''||'''Summary'''||'''Work'''|| … … 114 112 ||6||Assemble units||8h||2,3,4,5|| 115 113 116 For such a short task list we can manually inspect and see that assembly (8h) follows firmware (40h) follows schematic (24h) and the shortest project time is 72 hours (9 man-days) and we can take ninedays from the milestone date to know when we have to start work to finish on time. However, a project of any complexity may have many more tasks and manual inspection is impractical.114 For such a short task list we can manually inspect and see that assembly (8h) follows firmware (40h) follows schematic (24h) and the shortest project time is 72 hours (9 person-days) and we can take 9 days from the milestone date to know when we have to start work to finish on time. However, a project of any complexity may have many more tasks and manual inspection is impractical. 117 115 118 116 We can begin to do more effective project management if we have a task scheduler than can work backwards from the milestone, consider work and dependencies, and calculate task start and end dates and project start date. … … 121 119 122 120 ||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Due'''||'''Start'''|| 123 ||1||Design the Schematic||24h|| ||May 5, 2009||May 3, 2009||121 ||1||Design the Schematic||24h|| ||May 5, 2009||May 3, 2009|| 124 122 ||2||Design the Motherboard||8h||1||May 10, 2009||May 10, 2009|| 125 123 ||3||Design the Daughter board||8h||1||May 10, 2009||May 10, 2009|| 126 ||4||Design the packaging||16h|| ||May 10, 2009||May 9, 2009||124 ||4||Design the packaging||16h|| ||May 10, 2009||May 9, 2009|| 127 125 ||5||Write firmware||40h||1||May 10, 2009||May 6, 2009|| 128 126 ||6||Assemble units||8h||2,3,4,5||May 11, 2009||May 11, 2009|| … … 141 139 142 140 ||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''|| 143 ||1||Design the Schematic||24h|| ||||May 5, 2009||May 3, 2009||141 ||1||Design the Schematic||24h|| || ||May 5, 2009||May 3, 2009|| 144 142 ||2||Design the Motherboard||8h||1||Monty||May 9, 2009||May 9, 2009|| 145 143 ||3||Design the Daughter board||8h||1||Monty||May 10, 2009||May 10, 2009|| 146 ||4||Design the packaging||16h|| ||||May 10, 2009||May 9, 2009||147 ||5||Write firmware||40h||1|| ||May 10, 2009||May 6, 2009||148 ||6||Assemble units||8h||2,3,4,5|| ||May 11, 2009||May 11, 2009||144 ||4||Design the packaging||16h|| || ||May 10, 2009||May 9, 2009|| 145 ||5||Write firmware||40h||1|| ||May 10, 2009||May 6, 2009|| 146 ||6||Assemble units||8h||2,3,4,5|| ||May 11, 2009||May 11, 2009|| 149 147 150 148 With 50% applied to each task, the board designs are worked on in parallel but take twice as long: 151 149 152 150 ||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''|| 153 ||1||Design the Schematic||24h|| ||||May 5, 2009||May 3, 2009||151 ||1||Design the Schematic||24h|| || ||May 5, 2009||May 3, 2009|| 154 152 ||2||Design the Motherboard||8h||1||Monty (50%)||May 9, 2009||May 10, 2009|| 155 153 ||3||Design the Daughter board||8h||1||Monty (50%)||May 9, 2009||May 10, 2009|| 156 ||4||Design the packaging||16h|| ||||May 10, 2009||May 9, 2009||157 ||5||Write firmware||40h||1|| ||May 10, 2009||May 6, 2009||158 ||6||Assemble units||8h||2,3,4,5|| ||May 11, 2009||May 11, 2009||154 ||4||Design the packaging||16h|| || ||May 10, 2009||May 9, 2009|| 155 ||5||Write firmware||40h||1|| ||May 10, 2009||May 6, 2009|| 156 ||6||Assemble units||8h||2,3,4,5|| ||May 11, 2009||May 11, 2009|| 159 157 160 158 == Calendar … … 163 161 164 162 ||'''ID'''||'''Summary'''||'''Work'''||'''Predecessors'''||'''Resource'''||'''Due'''||'''Start'''|| 165 ||1||Design the Schematic||24h|| ||||May 1, 2009||April 29, 2009||163 ||1||Design the Schematic||24h|| || ||May 1, 2009||April 29, 2009|| 166 164 ||2||Design the Motherboard||8h||1||Monty||May 7, 2009||May 7, 2009|| 167 165 ||3||Design the Daughter board||8h||1||Monty||May 8, 2009||May 8, 2009|| 168 ||4||Design the packaging||16h|| ||||May 8, 2009||May 7, 2009||169 ||5||Write firmware||40h||1|| ||May 8, 2009||May 4, 2009||170 ||6||Assemble units||8h||2,3,4,5|| ||May 11, 2009||May 11, 2009||166 ||4||Design the packaging||16h|| || ||May 8, 2009||May 7, 2009|| 167 ||5||Write firmware||40h||1|| ||May 8, 2009||May 4, 2009|| 168 ||6||Assemble units||8h||2,3,4,5|| ||May 11, 2009||May 11, 2009|| 171 169 172 170 Microsoft Project supports many calendars in a project. Roughly speaking, the project calendar has working hours per day and working days per week (e.g., 9-5, Monday-Friday) and resource calendars can override that (e.g., Ethan is on vacation the August 15-19). … … 210 208 [[Image(critical-path.PNG)]] 211 209 212 Packaging design and circuit board layout are so short, relative to other activities, that 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.210 Packaging design and circuit board layout are so short, relative to other activities, that speeding them up doesn't really help the project. But if we could shorten schematic design or firmware, we shorten the project's duration. 213 211 214 212 === Sub-tasks … … 251 249 == Earned Value 252 250 253 To compute [https://en.wikipedia.org/wiki/Earned_value_management earned value], we need unchanged original estimates and an estimate of remaining time.251 To compute Earned value, we need unchanged original estimates and an estimate of remaining time. 254 252 255 253 == Resource Description and Allocation … … 275 273 [wiki:GanttChartPlugin GanttChart]:: is a very simple Gantt chart implemented in a formatted text region. It is manually edited, not data-driven. 276 274 277 [wiki:GanttCalendarPlugin GanttCalendar]:: provides nice views of tickets. It uses "Completed [%]" (quantized to 5% increments), "Start" (YYYY-MM-DD), and "End" (YYYY-MM-DD) custom fields. It seems to includean administrative calendar, perhaps where holidays and such can be recorded.275 [wiki:GanttCalendarPlugin GanttCalendar]:: provides nice views of tickets. It uses "Completed [%]" in 5% increments, "Start" (YYYY-MM-DD), and "End" (YYYY-MM-DD) custom fields. It includes an administrative calendar, perhaps where holidays and such can be recorded. 278 276 279 277 Pale Purple's [http://github.com/palepurple Virtual Planner] is an alternative visualization tool. … … 283 281 MasterTicketsPlugin supports FS dependency, but calls it ''blocks'' and ''blocked by''. 284 282 285 The [http://trac.edgewall.org/wiki/SubTickets SubTickets] p agetalks about adding composition type dependency (parent/child relationships).283 The [http://trac.edgewall.org/wiki/SubTickets SubTickets] proposal talks about adding composition type dependency (parent/child relationships). 286 284 287 285 SubticketsPlugin and ChildTicketsPlugin provide composition type dependency that can be used for WBS. 288 286 289 The [http://trac-hacks.org/wiki/TracDependencyPlugin Trac Dependency plugin]was created in August 2009 and shows promise as a more complete and flexible solution than upgrading !MasterTickets.287 The TracDependencyPlugin was created in August 2009 and shows promise as a more complete and flexible solution than upgrading !MasterTickets. 290 288 291 289 === Time and Scheduling … … 313 311 GNOME Office once included [http://wiki.linuxquestions.org/wiki/MrProject MrProject], which may be another version of Planner. The news of !MrProject's death may be exaggerated; [http://live.gnome.org/Planner GNOME Live!] lists a 0.14.4 release in April 2009. 314 312 315 [http://www.dotproject.net/index.php dotProject] is an open-source, web-based project management system. A quick review suggests its task management isn't as good as Trac. It has a Gantt chart but [http://en.wikipedia.org/wiki/DotProject wikipedia] notes "as of version 2.0 the task dependencies feature is not complete". It has a troubled history but was forked last yearas [http://www.web2project.net/ Web2Project].313 [http://www.dotproject.net/index.php dotProject] is an open-source, web-based project management system. A quick review suggests its task management isn't as good as Trac. It has a Gantt chart but [http://en.wikipedia.org/wiki/DotProject wikipedia] notes "as of version 2.0 the task dependencies feature is not complete". It has a troubled history but is forked as [http://www.web2project.net/ Web2Project]. 316 314 317 315 The article [http://www.smashingmagazine.com/2008/11/13/15-useful-project-management-tools/ 15 Useful Project Management Tools] mentions Trac. None of the tools obviously have scheduling in them. … … 329 327 * [http://www.openworkbench.org/ Open Workbench] is a Microsoft Windows-based application not suitable for integration with a web-based tool like Trac. 330 328 * [http://openproj.org/openproj OpenProj] also appears to be a desktop application. However, their [http://openproj.org/wiki/index.php/Available_Views views] page may guide development of PM output for Trac. 331 * [http://www.ganttproject.biz/ GanttProject]'s website isn't very informative but it appears to be a desktop application.329 * [http://www.ganttproject.biz/ GanttProject]'s website isn't very informative, but it appears to be a desktop application. 332 330 333 331 == Microsoft Project Task Properties 334 332 335 Microsoft Project goes far beyond what is likely to be put into a Trac-based project management solution, but it may be helpful to consider what task properties MS Project records and what their analogs may be in Trac tickets.333 Microsoft Project goes far beyond what is likely to be put into a Trac-based project management solution, but it may be helpful to consider what task properties MS-Project records and what their analogs may be in Trac tickets. 336 334 337 335 The Microsoft Project ''Task Information'' property sheet includes: … … 369 367 == Roadmap 370 368 371 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.372 373 * Tasks will be represented as tickets. Additional , non-core,data will be needed. In object-oriented terms, you might say that Task is a subclass of Ticket.369 There seems to be a consensus that grandiose project management features for Trac should be implemented with a combination of plugins. The following plan assumes that approach: 370 371 * Tasks will be represented as tickets. Additional non-core data will be needed. In object-oriented terms, you might say that Task is a subclass of Ticket. 374 372 375 373 * We need a way to express WBS relationships, assuming !MasterTickets will be used to express dependencies. … … 378 376 379 377 * !TimingAndEstimation can be the basis of recording estimates. 380 * The plugin should be extended to support original and revised estimates, and to store default estimates in the database or configuration or derive them from history for experience-based scheduling (rather than have rules to use default values for tickets with tiny estimates).378 * The plugin should be extended to support original and revised estimates, and to store default estimates in the database or configuration or derive them from history for experience-based scheduling, rather than have rules to use default values for tickets with tiny estimates. 381 379 382 380 * A simple Gantt chart can be implemented to show dependencies and schedule based on manually-entered due dates. … … 427 425 task:: The ID of the task this task depends on (I'd really like a better name here. ''parent'' is wrong. ''origin''? ''other''?) 428 426 type:: Dependency type (FS, SS, SF, or FF) 429 lag:: Offset of this task's anchor relative to the anchor of ''task'' . (''Lag'' may be negative.) Whether the ''anchor'' for the dependency is the start or end of the task depends on the dependency type. For example, if Task B has a FS dependency on Task A with a lag of 1 day, then Task B starts 1 day after Task A finishes. Or, if Task B has an SS dependency in Task A with a lag of 1 day, then Task B starts 1 day after Task A starts. (''lag'' is not scaled by ''percentEffort''.)427 lag:: Offset of this task's anchor relative to the anchor of ''task'', and may be negative. Whether the ''anchor'' for the dependency is the start or end of the task depends on the dependency type. For example, if Task B has a FS dependency on Task A with a lag of 1 day, then Task B starts 1 day after Task A finishes. Or, if Task B has an SS dependency in Task A with a lag of 1 day, then Task B starts 1 day after Task A starts. ''Lag'' is not scaled by ''percentEffort''. 430 428 431 429 === IProjectDependencies … … 477 475 * If a task has an ''assignedFinish'', the ''computedFinish'' is the ''assignedFinish'' and the ''computedStared'' is the ''computedFinish'' minus the duration. 478 476 479 N OTE: Once a task is begun, its ''assignedStart'' is set from the ''computedStart''so recomputing a schedule doesn't change its start. We may have to deal with split tasks, however, if a task is begun then put down and resumed later.477 Note: Once a task is begun, its ''assignedStart'' is set from the ''computedStart'', so recomputing a schedule doesn't change its start. We may have to deal with split tasks, however, if a task is begun then put down and resumed later. 480 478 481 479 * Handle dependencies (This must be done iteratively for all of a task's dependencies. Several FS dependencies may produce different ''computedStart'' dates with the latest one being use. Interaction between other types of dependencies is complex.) … … 507 505 - Greg Troxel 508 506 509 = Reader Feedback507 == Reader Feedback 510 508 511 509 ''Use this section to provide additional comments and or suggestions'' 512 510 513 == Suggestion(s) by Jay Walsh511 === Suggestion(s) by Jay Walsh 514 512 515 513 While I like the idea of where you are going with this. The concepts and "design" section have taken a turn towards specific implementations. I would suggest a combination of making these ideas configurable, as well as extending various classes and providers to be extensible/replaceable. … … 591 589 592 590 ---- 593 = Old design notes591 == Old design notes 594 592 595 593 (I'm reworking these into a better flow for the whole document.) 596 594 597 == Component Data595 === Component Data 598 596 599 597 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. … … 601 599 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. 602 600 603 === Core Fields601 ==== Core Fields 604 602 605 603 Core ticket fields include relevant to project management include: … … 616 614 * completed (treated as a Boolean: open or closed) 617 615 618 === Additional Data616 ==== Additional Data 619 617 620 618 For project management, we must have the following additional information about a task/ticket: … … 625 623 * percent effort 626 624 627 == What do we need in the user interface?625 === What do we need in the user interface? 628 626 629 627 A "chart these" button on a report page would be very nice.