Planning and Tracking
Objective
- Understand the importance of planning and tracking in software development.
- Use GitHub Projects and GitHub Issues to plan and track software projects.
- Create WBS and Ishiwaka (fishbone) diagrams.
Planning
“Work expands so as to fill the time available for its completion.” —Northcote Parkinson
If you give yourself a week to complete a two-hour task, then (psychologically speaking) the task will increase in complexity and become more daunting so as to fill that week. It may not even fill the extra time with more work, but just stress and tension about having to get it done. If you give yourself only one hour, you will be more focused and effective in completing the task.
“Data expands to fill the space available for storage.” —Parkinson’s Law
Projects
A project is about a process and the people involved. A project can span over multiple milestones and repositories. Projects are a tool for Kanban methodology. Projects are good for continuous delivery and steady flow of work.
Milestones
A milestone is about a product. A milestone can contain parts of different projects. Milestones are a tool for Scrum methodology. Milestones are good for time-boxed iterations and working in sprints with batches of issues.
Work-Breakdown Structure
- Hierarchical
- Collectively exhaustive (100% rule)
- Mutually exclusive
- Focuses on outcomes, not actions
Exercise 1
Create a work-breakdown structure (WBS) diagram for the project using PlantUML (opens in a new tab).
Exercise 2
Create a project in your organization account using GitHub Projects, with your username part of the project’s name. Populate the project using the items from Exercise 1. Create two milestones in your repository using GitHub Issues. Link the milestones to the project by converting some of the items into issues and assigning them to different milestones.
“It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to take away.” —Antoine de Saint-Exupéry
Project Management
-
The P’s:
- Plan: The planning and forecasting activities.
- Process: The methodology used to implement the project. The overall approach to all activities and project governance.
- People: The human resources involved in the project, including dynamics of how they collaborate and communicate.
- Power: The lines of authority, decision-makers, organograms, policies for implementation, and the like.
- Purpose: The reason for the project.
- Product: The end result of the project.
- Performance: The quality of the end result.
- Productivity: The efficiency of the project.
- Partnership: The relationship between the project team and the stakeholders.
- Politics: The influence of the project on the organization.
- Pacing: The speed at which the project is completed.
- Policies: The rules and regulations that govern the project.
- Procedures: The steps taken to complete the project.
- Practices: The methods used to complete the project.
- Principles: The values that guide the project.
- Philosophy: The underlying beliefs that drive the project.
- Profit: The financial gain or loss.
-
Gantt charts (opens in a new tab), designed and popularized by Henry Gantt around the years 1910–1915.
-
Program Evaluation and Review Technique (opens in a new tab) (PERT)
-
Responsibility Assignment Matrix (opens in a new tab) (RAM/RACI)
-
Critical Chain Project Management (opens in a new tab) (CCPM)
More tools in CMPS 307: Introduction to Project Management and Entrepreneurship.
Follow the 4 Task Management guide to learn more about effective task management using the Eisenhower method and the Pareto principle.
Tracking
“If you can get today’s work done today, but you do it in such a way that you can’t possibly get tomorrow’s work done tomorrow, then you lose.” —Matrin Fowler
Issues
Items
Types
Description
Tasks
Tasks (sub-issues) can be created using tasks lists:
- Task 1
- Task 2
Assignees
Labels
Fields
Default fields. Custom fields can be added if needed.
Projects
Statuses
A simple approach is to use three stages: Todo, Doing, and Done. Labels can be created as needed: Triage, Backlog, Todo, In Progress, In Review, Done, Canceled, Duplicate, etc.
Milestones
Development
Participants
Comments
Comments can be used for discussions, notes, and updates. GFM is supported.
References
Issues can be referenced using #number, for example, #1, #1337, and #42.
Layouts
“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.” —Bill Gates
Table
Spreadsheet. Simple and effective. It is used to keep track of issues and tasks.
Board
One more dimension based on status. Kanban board. Popularized by Trello (opens in a new tab). It is used to limit the amount of work in progress (WIP) to prevent bottlenecks and improve efficiency.
Triage
Backlog
Todo
Ready
Doing/In Progress
In Review
Duplicate
Canceled
Done
Kanban (看板) is an effective way to manage projects and make your workflow even better. The term “Kanban” originates from the Japanese language, translating to “visual signal” or “card.” Basically, you use a board with columns that show the different stages of your plan, and you use cards to represent tasks or features.
Kanban is a visual system used to manage and keep track of work as it moves through a process. The word kanban is Japanese and roughly translated means “card you can see.” The system was developed by Toyota to help manage their manufacturing process. The idea is to limit the amount of work in progress (WIP) to prevent bottlenecks and improve efficiency.
The board is divided into sections like Todo, Doing, and Done. It is easy to understand and helps to keep track of everything. and also helps the teams to monitor and control at each stages and apply changes to improve efficiency.
Roadmap
“First, solve the problem. Then, write the code.” —John Johnson
One more dimension based on time. Similar to a Gantt chart without dependencies. Gantt charts are more suited for the Waterfall methodology. It is used to plan and track projects.
Ishikawa
Ishikawa diagram (opens in a new tab). Fishbone diagram. Cause-and-effect diagram. It is used to identify the root causes of a problem. A visual representation of the possible causes of a problem.
Exercise 3
Create an fishbone diagram documenting a project problem/issue of your choice.
Cycles
Scrumban
Scrumban: The best of two Agile methodologies (opens in a new tab), Scrumban: Mastering two Agile methodologies (opens in a new tab)
Linear
Linear method: Practices for building (opens in a new tab)
- Projects
- Milestones
- Issues
- Cycles
- Workflows
- Views
- Initiatives
- Teams
- Backlog
- Triage
- Discussions
- Integrations
Exercise 4
Link Linear with your GitHub Issues through its GitHub integration (opens in a new tab) and submit a screenshot, even if the integration fails.
Structure
breakdown.pufishbone.pdfintegration.png
Resources
- Visual Paradigm: Project management process tool (opens in a new tab), Breakdown structure diagram tool (opens in a new tab), Enhanced PERT chart (opens in a new tab), Cause and effect diagram tool (opens in a new tab), Decision table tool (opens in a new tab)
- Understanding the iterative process, with examples (opens in a new tab)
- What is Agile methodology? (opens in a new tab)
- Scrum: The most popular Agile framework (opens in a new tab)
- What is Kanban? (opens in a new tab)
- Waterfall vs. Agile vs. Kanban vs. Scrum: What’s the difference? (opens in a new tab)
- The people, process, technology (PPT) framework (opens in a new tab)
- The management spectrum | 4 P’s in software project planning (opens in a new tab)
- What is a PERT chart? Plus, how to create one (opens in a new tab)
- Your guide to RACI charts, with examples (opens in a new tab)
- The basics of critical chain project management (opens in a new tab)
- Critical path method: How to use CPM for project management (opens in a new tab)
- The beginner’s guide to the theory of constraints (opens in a new tab)
- Six Sigma: All you need to know about the lean methodology (opens in a new tab)
- The time value of shipping (opens in a new tab)
- Linear method: Practices for building (opens in a new tab), Write issues not user stories (opens in a new tab)
- Agile product ownership in a nutshell (opens in a new tab)
- Can developer productivity be measured? (opens in a new tab)
- It’s time to stop measuring productivity (opens in a new tab)
- Project management (opens in a new tab), Time management (opens in a new tab), Time perception (opens in a new tab), Task management (opens in a new tab), Work breakdown structure (opens in a new tab), Product breakdown structure (opens in a new tab), Procrastination (opens in a new tab), Parkinson’s law (opens in a new tab), Satisficing (opens in a new tab), Attention management (opens in a new tab), Interruption science (opens in a new tab), Futures techniques (opens in a new tab), Systems thinking (opens in a new tab), Five whys (opens in a new tab), Gold plating (opens in a new tab), Death march (opens in a new tab), Goodhart’s law (opens in a new tab), Hofstadter’s law (opens in a new tab), Student syndrome (opens in a new tab), Planning fallacy (opens in a new tab), Cost overrun (opens in a new tab), Scope creep (opens in a new tab)
- Laws of Software Engineering (opens in a new tab)