This short essay is for my assignment in course CZ3002 Advanced Software Engineering.
Scrum is one of the methodologies practiced in agile software development. Instead of completing a project in one whole cycle including a full set of requirement gathering, system design, development, testing and deployments, Scrum practices in agile way, in which, software development is split into iterations.
In Scrum, an iteration is called a sprint. Each sprint has its own task to be completed and targeted timeline. Tasks can usually be new software features, enhancements or major bug fixes. The timeline can be ranged from one to two weeks to maintain a certain standard of efficiency. On each day of the sprint, every team member would join a short meeting lasting about 15 minutes to share about their progress.
In addition, unlike traditional software development methodologies which require prior preparation of detailed solutions, in Scrum, it is not required to provide detailed description about how the tasks should be achieved, whereas the team will decide regarding to the solutions. It is because the team members are the ones who understand the product and know how to solve the problems the best.
Advantages of Scrum
Easily Adapt to Business Changes
Scrum is suitable for the fast-changing businesses such as new generation internet applications. In such companies, business opportunities are critical to catch and requirements may change all the time. For example, in bike sharing businesses, if you know that a new feature such as supporting mobile payment will bring more profits to the company, you will need to release this feature faster than your competitors in order to maximize your chances of winning the market. In such circumstances, Scrum is better because it prioritizes the development processes to ensure high efficiency and skips those unnecessary tasks such as documentation.
Getting Product Feedback at Early Stage
Since Scrum is an iterative development methodology, it can boost development time so that the users can see the initial version of products in a short time, whereas traditional development methodologies such as Waterfall may need users to wait for months to see the actual products. With the fast rollout of initial versions, users are able to experience the products and provide feedback immediately. Based on those feedback, the team will be able to enhance the product with a clearer target, resulting in producing a better product.
Disadvantage of Scrum
Limitation on Size of the Team
Scrum only works well on small-size teams. If the team grows larger, there would be more communication overhead and information asymmetry. In such circumstances, documentation is necessary to keep the flow of communication smooth. However, Scrum does not focus on documentation too much. It emphasizes more on development and quick results. Therefore, when it comes to large team cooperation, Scrum would make the project management worse and less efficient.
Dependency on Experienced Team Members
One of the reason that Scrum is productive is because all of the team members are experienced in their works. Since everyone is sophisticated in their fields, they can cooperate together seamlessly. However, if some of the team members are inexperienced novice, the flow of processes may be stuck at some points, resulting in failing sprint or even project. For example, a fresh graduate in the team who does web API development, does not have enough experiences to fast complete it without any error. Besides, front end development is dependent on his API, thus it results in delay of development schedule.
In conclusion, Scrum is a good agile software development methodology if it is used correctly. It is best productive in fast changing business environment with a dedicated experienced team. In contrast, it may not be a good practice if the team lacks of experiences or has a large number of team members.