Management
Conway's Law
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
— Melvin E. Conway
Agile
Agile software development is a set of principles for software development in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. Agile itself has never defined any specific methods to achieve this, but many have grown up as a result and have been recognized as being 'Agile'.
The big task is divided into sub-tasks hierarchically. Each small task is called a "ticket", which has an "assignee" and a "report to". The task can have several stages from its open to close, which are "in progress", "code review", "test", "demo". If it is blocked by some issue during the development, you can put it onto "blocked by" status. But it needs another ticket to specify what issue blocked it. It can be an existing ticket or a new one.
Each ticket has a certain number of story points proportion to its workload. One story point usually means the workload of one workday. We are assigning the tickets to people every two weeks on the first Monday's meeting called "sprint planning". We call every such two weeks a "sprint" too. Each person got 6 to 7 sprints every two weeks. We also check how every ticket going of the last two weeks during the "sprint planning".
We have "stand up meeting" (SDU) for short every Tuesday and Thursday afternoon to see if anyone's task is blocked by anything.
Every three month is a program increment (PI) which require all teams to release their new version of product. Each PI consist of 12 sprints and some buffer weeks.
Before each PI begins, a big room planning is held, in which each department will create all the tickets for the next PI. They work together to assign tickets to each other.
Each ticket should be specific about how we evaluate it and how can it be count as ended.
This agile management method is called SAFe.