Changes between Version 127 and Version 128 of ProjectManagementIdeas


Ignore:
Timestamp:
Aug 31, 2015, 10:11:59 PM (9 years ago)
Author:
figaro
Comment:

Further cleanups

Legend:

Unmodified
Added
Removed
Modified
  • ProjectManagementIdeas

    v127 v128  
    33= Project management ideas
    44
    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 phase would have a milestone with a target date and tickets to complete the work for that phase.
     5Trac 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
     7In 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.
    88
    99== Requirements and Definitions
     
    1313 * When will my project be done? That is, what is the forecast completion date?
    1414 * 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).
    1616 * Am I on schedule? That is, is the percent complete for the overall project where it should be at this time?
    1717 * 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?
     
    4646 Dependencies:: Other tasks that affect when this task can be started or finished.
    4747
    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 hierarchy but 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.
    4949
    5050=== Dependencies
     
    7070A 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.
    7171
    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 
    7472=== Milestone Properties
    7573
     
    8078== Task Scheduling
    8179
    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 far 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.
    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 and a necessary precondition for producing a Gantt chart.
    85 
    86 Consider a grossly-simplified project to design a new electronic device. This project might have the following tickets:
     80There 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
     82The 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
     84Consider a grossly-simplified project to design a new electronic device, with the following tickets:
    8785
    8886||'''ID'''||'''Summary'''||'''Milestone'''||
     
    9492||6||Assemble units||New device||
    9593
    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'':
     94With 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'':
    9795
    9896||'''ID'''||'''Summary'''||'''Work'''||
     
    114112||6||Assemble units||8h||2,3,4,5||
    115113
    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 nine 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.
     114For 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.
    117115
    118116We 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.
     
    121119
    122120||'''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||
    124122||2||Design the Motherboard||8h||1||May 10, 2009||May 10, 2009||
    125123||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||
    127125||5||Write firmware||40h||1||May 10, 2009||May 6, 2009||
    128126||6||Assemble units||8h||2,3,4,5||May 11, 2009||May 11, 2009||
     
    141139
    142140||'''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||
    144142||2||Design the Motherboard||8h||1||Monty||May 9, 2009||May 9, 2009||
    145143||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||
    149147
    150148With 50% applied to each task, the board designs are worked on in parallel but take twice as long:
    151149
    152150||'''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||
    154152||2||Design the Motherboard||8h||1||Monty (50%)||May 9, 2009||May 10, 2009||
    155153||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||
    159157
    160158== Calendar
     
    163161
    164162||'''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||
    166164||2||Design the Motherboard||8h||1||Monty||May 7, 2009||May 7, 2009||
    167165||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||
    171169
    172170Microsoft 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).
     
    210208[[Image(critical-path.PNG)]]
    211209
    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.
     210Packaging 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.
    213211
    214212=== Sub-tasks
     
    251249== Earned Value
    252250
    253 To compute [https://en.wikipedia.org/wiki/Earned_value_management earned value], we need unchanged original estimates and an estimate of remaining time.
     251To compute Earned value, we need unchanged original estimates and an estimate of remaining time.
    254252
    255253== Resource Description and Allocation
     
    275273 [wiki:GanttChartPlugin GanttChart]:: is a very simple Gantt chart implemented in a formatted text region. It is manually edited, not data-driven.
    276274
    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 include an 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.
    278276
    279277Pale Purple's [http://github.com/palepurple Virtual Planner] is an alternative visualization tool.
     
    283281MasterTicketsPlugin supports FS dependency, but calls it ''blocks'' and ''blocked by''.
    284282
    285 The [http://trac.edgewall.org/wiki/SubTickets SubTickets] page talks about adding composition type dependency (parent/child relationships).
     283The [http://trac.edgewall.org/wiki/SubTickets SubTickets] proposal talks about adding composition type dependency (parent/child relationships).
    286284
    287285SubticketsPlugin and ChildTicketsPlugin provide composition type dependency that can be used for WBS.
    288286
    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.
     287The TracDependencyPlugin was created in August 2009 and shows promise as a more complete and flexible solution than upgrading !MasterTickets.
    290288
    291289=== Time and Scheduling
     
    313311GNOME 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.
    314312
    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 year as [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].
    316314
    317315The 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.
     
    329327 * [http://www.openworkbench.org/ Open Workbench] is a Microsoft Windows-based application not suitable for integration with a web-based tool like Trac.
    330328 * [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.
    332330
    333331== Microsoft Project Task Properties
    334332
    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 MSProject records and what their analogs may be in Trac tickets.
     333Microsoft 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.
    336334
    337335The Microsoft Project ''Task Information'' property sheet includes:
     
    369367== Roadmap
    370368
    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.
     369There 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.
    374372
    375373 * We need a way to express WBS relationships, assuming !MasterTickets will be used to express dependencies.
     
    378376
    379377 * !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.
    381379
    382380 * A simple Gantt chart can be implemented to show dependencies and schedule based on manually-entered due dates.
     
    427425 task:: The ID of the task this task depends on (I'd really like a better name here. ''parent'' is wrong. ''origin''? ''other''?)
    428426 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''.
    430428
    431429=== IProjectDependencies
     
    477475  * If a task has an ''assignedFinish'', the ''computedFinish'' is the ''assignedFinish'' and the ''computedStared'' is the ''computedFinish'' minus the duration.
    478476
    479 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.
     477Note: 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.
    480478
    481479 * 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.)
     
    507505  - Greg Troxel
    508506
    509 = Reader Feedback
     507== Reader Feedback
    510508
    511509  ''Use this section to provide additional comments and or suggestions''
    512510
    513 == Suggestion(s) by Jay Walsh
     511=== Suggestion(s) by Jay Walsh
    514512
    515513While 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.
     
    591589
    592590----
    593 = Old design notes
     591== Old design notes
    594592
    595593(I'm reworking these into a better flow for the whole document.)
    596594
    597 == Component Data
     595=== Component Data
    598596
    599597Each 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.
     
    601599In 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.
    602600
    603 === Core Fields
     601==== Core Fields
    604602
    605603Core ticket fields include relevant to project management include:
     
    616614 * completed (treated as a Boolean: open or closed)
    617615
    618 === Additional Data
     616==== Additional Data
    619617
    620618For project management, we must have the following additional information about a task/ticket:
     
    625623 * percent effort
    626624
    627 == What do we need in the user interface?
     625=== What do we need in the user interface?
    628626
    629627A "chart these" button on a report page would be very nice.