Component Lead Role in Software Engineering
Component Lead is a relatively rare role in software engineering. In short, this is a person with in-depth knowledge in some area and entirely responsible for interaction with it in a project. Let us look at this role and see how it can be beneficial for the software development process.
Divide and Rule
Divide and rule is the oldest and still one of the best approaches that can be used to develop a complicated software. The Component Lead role is following this approach too. The main idea is to split all functionality into separate logic areas called components, and then assign an expert to each one of them. This person should have full responsibility for developing and maintaining this area.
It may be not always possible to find a person be able to handle this role, especially in case of many component and limited budget. In this case, it makes sense to grow an expert yourself. Find a person interested in this component and give him full freedom to develop this area. Then you can observe his/her work and provide useful recommendations from time to time.
Another best practice is to assign only one component to a person. This way, Component Lead will always be concentrated in one area and be able to achieve better results.
Deeper and Deeper
One of the first questions every Component Lead asks is: “How far should go into the modification of my component?“ Answer to this question lies at the intersection between business requirements and time limitations.
Project management always has some expectations related to the way application should behave. Component Lead should collect all the business requirements related to the component, check priorities, and then start working on the most crucial areas.
The Component Lead role is usually a secondary activity in addition to some primary role. So, management can schedule only a limited amount of time to work on the component. Often, this time is somewhere between 10% and 40% of the whole availability of a person.
Knowing these two limitations, Component Lead should plan his/her time to work on the required functionality. Perhaps results will not be visible immediately, but the longer the Component Lead performs the duties, the better component will be developed and maintained.
Integration with Agile
Each role makes sense only when it helps the team to achieve better results. Component Lead role is not an exception. And agile software development provides a perfect environment for integration.
Imagine that you have an iteration (sprint) and you have some task that requires particular expert knowledge in some area. What should you do? Go to the Component Lead, of course! This person can recommend the best implementation approach and warn you about possible issues. Without Component Lead, you should spend time on investigation of the required area and only then start development.
Another advantage of the Component Lead role is constant responsibility. When agile teams fulfill commitments at the end of an iteration, they do not care about the future of the code they wrote. Consequences are entirely predictable — low code level quality, complicated architecture, lack of documentation. All these things slow down the further development process.
But if you have Component Lead, then you have a person who is responsible for the specific area. Component Lead will do his/her best to ensure the proper work of the component. This way, you can decrease the time spent on implementation and also reduce technical debt.
Summarizing, the benefits of Component Lead role are clear — better application architecture and overall code quality. However, it is required to invest some time into proper component maintenance. This role is worth introducing when developers are spending a significant amount of time into the investigation of unknown code areas. In other words, this role comes in handy in any project with a medium or big codebase. Try it and make your application better!