This is the 17th day of my participation in Gwen Challenge

Assume that everything will work fine

We always assume that everything will work fine and that each task only takes as long as it “should” take

Here we are required to take into account all the circumstances as far as possible when making the project schedule. We should not be blindly confident or overcautious, and we should balance confidence and hesitation. There may also be design defects, premature design and premature optimization. However, this situation is inevitable for all projects. What we can do is to start from the overall situation and make overall arrangements.

Start from the big picture

  1. Evaluate all design points in the project
  2. Identify project plans, expectations, and objectives
  3. Determine the project development specifications, document maintenance, agent management
  4. Identify important time points in your project, called milestones
  5. Identify the departments and personnel involved in the project
  6. List possible problems with the project, such as new frameworks to be used, new features not previously written

Go into the local

  1. Strict subdivision of functional modules, and communication principles and modes between modules
  2. Determine the personnel of each module and the time point of completion of each module
  3. Determine the schedule of each module
  4. Clear the completion of each module of the time node, determine their main order, dependent order

Finally, according to the results of global analysis and local analysis, to determine the arrangement of our entire project.

One month myth

Man-months as a measure of the size of a job are a dangerous and deceptive myth. Erroneously confusing progress with workload, such as interchangeable numbers of people and hours. The cost varies greatly depending on how many people develop the product and how long it takes, but the schedule does not. We always equalize people and workload, thinking that if one person can do a project in 10 days, 10 people can do it in 1 day. The knee-jerk reaction when realizing a schedule shift is to add manpower. It’s like putting out a fire with gasoline. Adding people to a project that is behind schedule will only make it more behind schedule. But we may not have thought through that work might be undivisible. When adding staff to the current project, we may encounter the following problems:

  1. Increase personnel training costs
  2. The coupling degree between modules is very high, and it is not easy to split
  3. The cost of communication between people increases
  4. The quality of the code varies

So adding people to a software project that is already behind will only make it further behind.

Monitor project progress in real time

We usually don’t have the patience to continuously estimate the work because we don’t have confidence in our estimates, so we constantly estimate the project. Lack of tracking and monitoring of progress. In every project, the project schedule is a very headache. So how can we better evaluate the project

  1. Strict module division to minimize the coupling between modules

  2. To continuously adhere to the project schedule, in each schedule and after the end of the project, learn from the experience and lessons, in order to have a better arrangement for the subsequent project evaluation

  3. Make a project summary at the end of each project

    A. Has the project been completed on schedule? What is the reason for the delay

    B. Problems encountered in the project and why they occur, can we avoid them in future development

    C. Whether there are uncontrollable factors in the current schedule

    D. Whether there are unclear requirements or more urgent tasks to deal with

    E. Do we lack the tracking and supervision of the project progress

How to manage a project well?

When evaluating projects, we should always think about these questions, right?

  1. Do you have a clear goal?
  2. Is there enough manpower?
  3. Are there sufficient materials available?
  4. Do you have enough time?
  5. Is there enough technology?
  6. Was there sufficient and thorough communication?
  7. Is it organized through communication?

The universal thing to do is to choose a method and try it; If you fail, never mind, try something else. Anyway, it’s important to try first.

Software maintenance

When we perform software maintenance, we should realize that software maintenance is about fixing design defects

For a program, the total maintenance cost is typically 40% or more of the development cost. This cost is greatly influenced by the number of users. The more users you have, the more errors you find. Bugs found and fixed in the previous version will still appear in the new version. New features in new releases create new bugs. Once these are fixed, the program will run fine for a few months, and then the error rate will climb again. As users reach new levels of proficiency with the software, they begin to apply new features.

A basic problem in program maintenance – bug fixes introduce new bugs at a fixed rate (20% to 50%). Two steps forward, one step back. Why can’t bugs be completely fixed? What appears to be a minor error, a partial operational failure, is actually a system-level problem.

To myself: Don’t be a Fibonacci programmer, fixing yesterday’s and the day before yesterday’s bugs every day. In my opinion, fixing bugs is probably more analysis and thinking than writing features. It is also more worthy of us to explore and improve, and may be a very important way and method to improve our level.

Software development and software maintenance

System software development is a process of reducing chaos, so it is in a state of metastability.

Software maintenance is the process of increasing clutter, and even the most skilled software maintenance only slows down the degradation of the system to an unstable state.

Top-down design

Clear structure and expression way more likely to demand and module function for precise description of the module division and module independence to avoid the system-level bug details make structural flaws more easy to recognize the control of design on the essence of each step can be tested, so the test can start as early as possible, and the key point of each step can be placed in an appropriate level

How to ensure the schedule of a large project?

Develop a strict schedule that is made up of milestones and dates. Milestones must be specific, specific and measurable events that can be clearly defined. Each delay in a small phase can result in a major delay in the overall project schedule. More difficult to prevent and more difficult to remedy what we have always known is that a journey of a thousand miles begins with a single step. But in the actual work and life, we are always careless, do not care about small things, especially in the case of higher coupling between modules, may affect the whole body. Therefore, when we make a good plan, we must have strict implementation standards to ensure the smooth progress of the schedule.

The man-moon has always been a myth

The reason why man-month cannot become a reality is that the increase of manpower also increases the cost of communication between people. Increased training costs for new recruits instead of a simple 1 + 1 >= 2 result.