Stephen has worked as a Project Manager and is PMP certified, as well as certified by the Scrum Alliance.
Bret is a consultant for software development projects. He has had success in his work because he takes a unique approach. Many consultants take a broad look at the team, methodology, processes, and tools, and offer advice for each. Bret focuses solely on identifying and eliminating bottlenecks. While he believes there are a number of areas to consider, they should only be addressed if they involve bottlenecks.
A bottleneck in software development is an inefficiency where the flow of the project and/or work stops or slows at a particular point. Bottlenecks can occur in any project methodology. This is because all methodologies involve some form of sequence or progression, which can be slowed. The effect of bottlenecks is that resources at the stage where the bottleneck occurs are overextended while resources at later stages are underused or idle, creating inefficiency.
Once Bret helps companies understand bottlenecks and the negative impact they can have, he moves on to identifying specific bottlenecks that can occur. The reasons they occur can be general, like team-related reasons, or specific to each aspect of a software development project. Successful companies identify all bottlenecks.
Bottlenecks can occur based on the makeup of the team, which is applicable to the development team, as well as the project team as a whole. For the development team, the goal is to be cross-functional where different team members have shared skills and competencies. This creates flexibility in completing work, where different people can be engaged and share the load. Bret warns teams that the less cross-functional they are, the more likely bottlenecks will occur.
For the project team as a whole, the problem area is around priorities. Development teams lean toward being fast and focusing on what is necessary. Stakeholders lean toward quality and are less likely to make a distinction between what is a need versus a want. Differing priorities could affect any and every area of a project, from requirements being established through their completion. Given this level of impact, Bret encourages project teams to agree on their priorities.
One of the first steps in a project involves establishing the requirements, or the work that needs to be completed in the project. The potential for bottlenecks exists at the creation of these requirements, as well as with the quality of the requirements. Depending on the methodology, project requirements are written by stakeholders or a smaller subset of individuals on behalf of the stakeholders. This process works best when consensus can be reached or a sole decision-maker can be established. Bret cautions teams that if an agreement cannot be reached, because of differing opinions or even because different individuals are unavailable, project requirements cannot be established, creating a bottleneck.
Once project requirements are established, the potential for a bottleneck does not disappear. The purpose of the requirements is to define what is needed for the project in a way that can be understood by the project team. Providing too much or too little detail could slow things down. People will either spend time working through information that is unnecessary or seeking out needed information that is missing. Neither of these is desirable and could create a bottleneck at any stage where requirements are involved.
Once requirements have been established, development can begin. One of the areas that Bret focuses on that can cause bottlenecks is the developers. Specifically, he focuses on the skill sets of the developers. Oftentimes, developers have areas of specialty and focus exclusively on work items that fall within their specialties. When work does not vary, bottlenecks can occur because only developers whose specialty is required are working efficiently.
The other area that Bret focuses on is the technology available to developers. Even if developers share the skill necessary to complete the project work, the technology can still cause bottlenecks. If the systems being used are dated and the work being done involves changes to existing software, technical debt can be a factor. Also, if there are differences between the development, testing, and production environments, inefficiencies can occur.
One of the final areas that Bret analyzes for potential bottlenecks is testing. One of the largest factors that can lead to testing bottlenecks is the testing capability of the team, specifically whether it is manual or automated. Manual testing is less efficient than automated testing, especially for regression, where the team verifies that new functionality does not affect existing functionality. As the project progresses, and the more complex the software, the longer manual testing takes.
Dealing with Bottlenecks
After Bret helps the team understand the effect of bottlenecks and potential areas they can occur, he ends with discussing how they can be handled. The easiest way, but least effective in the long-term, is to find a temporary solution that can mask them. Teams can do things like sacrifice time and extend deadlines or sacrifice quality by doing the bare minimum to push work items through bottlenecks. The most effective way to handle bottlenecks is to identify them and commit resources to eliminating them. For example, if the bottleneck is associated with developer skills, the team can invest in training or education for developers. If the bottleneck is because of testing capabilities, the team can invest in automated testing.
Bottlenecks, a potential problem for any project, are costly and inefficient. Resources are overextended at the point of the bottleneck and underused or idle beyond it. They are extremely troublesome because they can occur at any point in a project.
They can start with project teams that are not cross-functional or have differing priorities. For requirements, bottlenecks can occur if consensus cannot be reached on what is needed or because requirements provide too much or little detail. Once requirements are taken on, bottlenecks can occur in development and/or testing. Developers who have limited skill sets or insufficient technology can cause a bottleneck. Testing can cause bottlenecks as well, especially if it is done manually. The best approach to dealing with bottlenecks is identifying them and committing resources to eliminate them.
To unlock this lesson you must be a Study.com Member.
Create your account
Register to view this lesson
Unlock Your Education
See for yourself why 30 million people use Study.com
Become a Study.com member and start learning now.Become a Member
Already a member? Log InBack