By Igal Avraham, Software Client Team Leader
As the team leader of the client development team, my tasks often include activities beyond managing and delivering software. Have you ever been in a situation where a customer complains that they cannot get their client app to work? This is the last thing that my team wants to see happening but if it should ever happen, we know that we have to react quickly and sort out the problem. But that is a reactive approach and we prefer a proactive approach.
In order to avoid these kinds of situations, we need to go back to the development stage. Proper software development has to start with a clear and comprehensive record of requirements regardless of whether it is adding a new capability to an application, changing the color of the text or fixing a bug. These requirements must be documented by the product manager in a clear and concise manner for the developers, so that they can easily understand what is required of them.
At TeleMessage we have adopted the Agile methodology and as part of this we hold meetings every two weeks during which time the scrum team, developers and QA gain a thorough understanding of all the requirements by raising questions, tying up loose ends and discussing any third party requirements. After these meetings, which can take up to two hours, the scrum team will have a clear understanding of what needs to be achieved before the next meeting.
Once the planning is completed, the design process begins. It is my job to delegate tasks to the individual developers according to their skill sets. The final step in the design process involves the developers presenting their solution proposals to their colleagues in the development team. These design reviews must include the following:
Definition of the feature/bug:
- Explanation of the current status of the code
- Recommendations on changes to the code
- Define main test cases required before releasing the code to QA
- Expose potential risks involved
- Estimate the time required for task
After the reviews are approved, the actual coding begins. This phase involves repeated feedback sessions and code reviews between the different development team members, which is an essential part of the process to overcome every challenge. This intensive level of testing by the developers, along with the code review, is critical to maintaining code quality before it is released to QA. At any stage the developer can choose to roll back the process to the product manager to check and clarify issues.
Everyone is aware that any malfunction detected beyond this point usually results in negative consequences and costs for the company. We are also acutely aware that only through diligence and thorough testing will we succeed in achieving quality software and avoid any unpleasant customer surprises.