10 Laws Every Software Development Team Should Know
There are laws of software engineering that should be presented in front of all software development teams. These laws cover different topics, such as schedule and budget, software quality metrics, design and testing practices, deployment and maintenance, etc. By obeying these laws, the software teams will increase their efficiency and productivity.
1. The number of defects occurred in the development is directly proportional to the number of hours spent on the development.
2. The number of development hours is directly proportional to the size of the software product. You should build the product in iterations and deploy them incrementally when possible to provide value. You will improve your schedule by capacity planning.
3. If suppliers and buyers estimate how long the project will take, the buyers’ guess will prevail. The estimate has to involve the risk resolving issues. You have to define the accurate cost, schedule, and technical performance that will commonly be used by buyers and suppliers.
4. If managers decrease the schedule randomly, it will take longer to finish the project. You have to model the uncertainty to avoid over-budgeting, low product quality, and schedule prolonging.
5. If team members don’t learn from the negative impact of low product quality on the schedule, they will need to repeat the project cycle.
6. If you know only a few facts about a project during the development process, you will be forced to learn more in the future.
7. The number of defects found in the production use is inversely proportional to the percent of defects removed prior to integration and acceptance testing. You should perform a formal defect modeling at the beginning of the quality improvements.
8. If you only rely on testing as the principal defect removal method during the development, corrective maintenance will account for the majority of the maintenance spend. Inherited quality could be the basis of reducing defects. You can get it from the architecture, the interface management, the process and the data models.
9. The amount of technical debt is inversely proportional to the length of the agile sprint. Scrum and Agile basically have no definition of margin, so without margin, the debt increases. For example, 2-week sprints produce more debt that 4-week sprints.
10. Successful cost, schedule, and quality outcomes depend on the degree of convergence between the organization’s official process, the teams’ perceived process, and the individual’s actual processes.