Project Management
In a nutshell, a project involves:
- Objectives π£οΈ: decipher and address client needs.
- Deliverables π¬: what you'll deliver to clients
- Milestones π: Key dates throughout your project timeline
- Scope π΅: Tasks, budget, and project-related elements
- Resource Management π: effort required for tasks (Man-days?)
A project usually involves two different teams:
-
Development Team π§βπ¬: This is the initial group responsible for designing, coding, and implementing the project. They usually leave or move to another project after project completion.
-
Maintenance and Support Team π΅: This group takes over to ensure the project continued functionality, fix any issues that arise, and implement updates or improvements.
β‘οΈ See also: Operational Maintenance and Security Maintenance.
Specifications Document
It outlines the specifications that a project must meet.
Overview
A simple specification document may include:
- Introduce the company: name, logo, background, etc.
- Introduce the project: client, needs, etc.
- Introduce the target audience: age, knowledge, etc.
- Introduce the team: members, roles, etc.
- Introduce the graphic chart: if you have one
Functional Specifications
This section focuses on the functionalities of the product. It could be a table with basic information about each task, along with their priority.
NΒ° | Task name | Duration (days) | Man-days | Priority |
---|---|---|---|---|
Phase1 | 20 | 85 | M | |
A | Task1 | 8 | 25 | M |
B | Task2 | 12 | 60 | C |
We often use MosCOW to determine the priority of each task:
- M: Must have this
- S: Should have this
- C: Could have this
- W: Would have this
You will have to further develop each task, by describing as much as possible, what must be done.
- You could design a mockup
- Don't forget error messages, events, animations/colors such as when a button is pressed, etc.
- Describe the task from the point of view of a user
- Define UML diagrams to formally define the task
- ...
Technical Specifications
The technical specifications define which languages, tools, and which technical constraints the development team will have.
- Methods: Agile-Scrum, Kanban, etc.
- Technologies
- name (MariaDB? MySQL? Java? PHP? Etc.)
- version (at least? Up to? Exact value?)
- Platforms: target platform(s)
- Language: French, English, etc.
- Storage: How do we manage persistence? (Database? File?)
- Restrictions: other restrictions, such as forbidding cookies.
- Hardware: are additional devices/components/... required?
- Others: version control, team communications, etc.
Risk Evaluation
You must evaluate the risks that may occur and determine how to handle them. It could be a person/tool/... that is not available, a task complexity that was incorrectly evaluated, a required dependency whose delivery was delayed, etc.
π See also: Probabilistic risk assessment and Risk Matrix.
Project Scheduling
Work Breakdown Structure (WBS)
WBS is a hierarchical decomposition of the tasks. It's a breakdown of a project into smaller and more manageable components.
For each component, we usually add a duration, a cost, and optionally the result expected or the resources needed.
Scheduling Problems
Given a list of tasks and their dependencies, and the duration for each task, we want to create the best schedule.
Each task has the following properties:
- Early start time (days before this task can be started)
- Last start time (maximum delay without impacting the expected duration)
- Total margin (maximum delay without impacting the expected duration)
- Free margin (maximum delay without impacting the dependencies start)
Remove redundant transitive arrows. If we have $A \to C$, $C \to D$, and $A \to D$, we only need to keep $A \to C \to D$.
π In practice, we don't have the capability of having an unlimited number of tasks in parallel.
π£οΈ To calculate the last start time, we start from the end, and we subtract each task duration.
See also: Scheduling Problems Examples.
Metra Potential Method
Create a graph with all tasks. The arrows are weighted with the duration of each task.
P.E.R.T.
We will create a graph. The vertices are an ordered set of numbers representing the states of the project, and each edge is a task.
On each edge, we add the name and cost of a task.
Critical path analysis
A critical path is a path of tasks that must not be delayed, otherwise, the whole project will be delayed. You can have more than one.
In both methods, it's the path with tasks that have the same value for the early and last start time properties.
Gantt chart
Gantt is a chart that illustrates a project schedule over time.
- GanttProject (software)
- office timeline (website)
GanTTProject Notes
- list all steps
- sort and indent child tasks
- create dependencies
- set date and duration
- add milestones
- add your team
- attribute tasks to your teammates
Project Tools
Project Management Tools
Bug And Issues Management Tools
- YouTrack (JetBrains)
- Jira (Atlassian)
- GitHub Issues, GitLab Issues, etc.
- Redmine
- Request Tracker
- osTicket
- ...
π» To-do π»
Stuff that I found, but never read/used yet.
- Steering Meetings: for key stakeholders and decision-makers to provide guidance and direction for a project
- Periodic Meetings: at regular intervals, discuss ongoing work/challenges/progress.
Others
- Trendline, 45-Degree Line
- Lean Canvas
- Slack, Notion
Keywords and formulas for scheduling
- "optimistic time estimate" instead of total margin
- "normal time estimate" instead of free margin
- "pessimistic time estimate" instead of certain margin
- see deleted examples
Env
- Formation
- Prod
- Pre-prod (test with prod data)
- integration (with other software/...)
- quality control (functional)
- dev (continuous integration=>send your work=>tests=>deploy to envs=>continuous deployment)