View Categories

Team leading guidelines

Phases of software project #

The research phase is the initial stage where requirements have been gathered and translated into features, but the implementation details of some or all features remain unclear and need thorough investigation. During this phase, establishing accurate timelines and planning work can be challenging. As a team leader, it is crucial to engage in comprehensive discussions regarding all key issues and the specific aspects that need research. Collaborate with other teams and senior developers who may have valuable insights or solutions that can expedite the research process. Your role is to ensure that the research is productive and remains within the allotted time frame for this phase.

From a project management perspective, create a Jira Board for the new project, defining epics and stories. One epic should encompass the research activities, and the specific issues being researched should be part of that epic. The sprint for this period will align with the maximum time allocated for research. It is the team lead’s responsibility to ensure all epics and stories are properly documented on the Jira board, providing clear visibility and tracking of progress.

Upon completing the research and gaining clarity on project implementation, the development phase commences. This phase involves actual development work, starting with implementing the user interface (UI) of the new project, creating the project folder, and placing it under version control. Additionally, it includes designing the database structure and initiating CRUD (Create, Read, Update, Delete) operations.

During this phase, plan sprints through sprint planning meetings where developers select the stories they will work on. Initially, testers are not involved until a significant portion of development is completed. From the next sprint onwards, testers should be engaged to start testing the developed features. It is important to note that during this phase, bugs should not be directly added to the sprint. Instead, they should be placed in the backlog and addressed in subsequent sprints.

The deployment phase is reached once development and testing are completed. This phase involves several critical stages:

  1. Create Production Environment on Beta Server: Set up a beta server environment that closely mirrors the production environment.
  2. Simulate Deployment: Deploy the code to the beta server and conduct thorough testing.
  3. Client Testing: If the client agrees, allow them to test the software on the production server for a limited period, addressing all bugs reported during this stage.
  4. Final Deployment: Once the client provides approval, proceed with the actual deployment. Remove any test data from the production server and cease all testing on the production server.

For new releases to existing software, follow these steps meticulously:

  • Temporarily disable the server by renaming index.php or another method.
  • Take a fresh backup of the database and software on the production server.
  • Download all files from the production server and back them up to Google Drive.
  • Apply all changes to the production database.
  • Upload the new code to the production server.
  • Conduct deployment testing.

During this phase, prioritize speed and efficiency while ensuring no steps are skipped. The team lead must stay informed about the status of all open issues and determine the success of simulated deployments. Reporting to the client on the readiness of the software for production deployment is also the team lead’s responsibility. New development should halt during this phase, with all bugs added to the ongoing sprint and resolved promptly. The team lead must exercise tight control over the team, assigning bugs by priority, and ensuring impactful issues are addressed first.

In the production phase, the software is successfully deployed to the production server and actively used by the client. This phase typically occurs when working on version 2 of a project or new features for an existing project. Major changes to the database structure or existing features should be avoided to prevent disruptions to the client’s daily operations.

The team lead must carefully plan sprints, ensuring that only relevant bugs and tasks are included. As development, testing, and deployment happen simultaneously, maintain strict standards for code quality and testing. Ideally, all code should be bug-free and meet requirements upon deployment to the live environment. Any client-reported errors must be prioritized and resolved immediately.

Updates should be deployed during periods of low client usage, such as before or after working hours or on weekends, to minimize disruptions. Club updates together to limit the number of daily deployment sessions. For updates causing downtime, inform the client, obtain their approval, and provide an accurate downtime estimate.

The maintenance phase follows the successful deployment of the software, where it is actively used by the client. During this phase, focus on bug fixes and minor adjustments, with no major feature updates. Maintenance uploads to the production server should be limited to once a day to avoid downtime.

In this phase, the team lead may not have a dedicated full-time team, as the volume of changes or issues reported weekly is typically low. Coordinate with other teams to allocate developers and testers for a few hours each week for maintenance tasks. Despite not having a dedicated team, it is the team lead’s duty to ensure all maintenance tasks are performed timely and up to standard.

Client Management #

Centralized Communication #

  • All client communication will go through the team lead: The team lead serves as the primary point of contact for the client. This ensures that all information is centralized, consistent, and accurately conveyed. It helps in avoiding miscommunication and ensures that the client’s needs and concerns are addressed promptly.

Meeting Preparation and Management #

  • Keep a list of questions to ask the client in the next meeting: The team lead should maintain a running list of questions and discussion points for each client meeting. This ensures that all necessary topics are covered, and no important details are overlooked.
  • Keep minutes of meetings: Documenting the minutes of every meeting is crucial. This includes noting down all decisions made, action items assigned, and deadlines agreed upon. Meeting minutes should be shared with both the internal team and the client for transparency.
  • Schedule meetings: The team lead is responsible for scheduling regular meetings with the client, ensuring that they occur at mutually convenient times and frequencies.
  • Record meetings: Recording meetings is essential for accurate record-keeping and for reference in case of any disputes or clarifications needed later. It also helps team members who couldn’t attend to stay informed.
  • Do not commit to any deadlines without asking developers: The team lead should never promise deadlines to the client without first consulting with the development team. This ensures that commitments are realistic and achievable.

Technical and Logistical Preparations #

  • Before every meeting, do a trial run, demo everything that you want to show the client: To ensure a smooth and professional meeting, the team lead should conduct a trial run of the demo and review all materials to be presented. This helps in identifying any potential issues and preparing for them in advance.
  • Before every meeting, connect to the video call 10 minutes before time and check if video, audio, and screen sharing are working properly. Also, check if the meeting recording option is enabled. If not, arrange another device and try again before the meeting starts: Technical difficulties can hinder effective communication. By connecting early and verifying that all tools are functioning correctly, the team lead can prevent unnecessary delays and disruptions during the meeting.

Handling Client Calls #

  • If anyone from the client team calls, then everyone from the project team is responsible for picking up the call and taking down what the issue is. The person who received the call is responsible for putting a message on the project group regarding the call and describing the issue: Promptly addressing client calls is critical. All team members should be prepared to answer client calls and document the issues reported. The person receiving the call should immediately inform the rest of the team via the project group, ensuring that the issue is tracked and addressed quickly.

Responsibilities of a Team Lead in the Deployment Phase #

The deployment phase is critical in the software development lifecycle, requiring meticulous planning and execution to ensure a smooth transition from development to production. The team lead plays a crucial role in overseeing this phase. Here are the key responsibilities of a team lead during the deployment phase:

Planning and Monitoring Testing #

  • Plan, monitor, and ensure thorough testing: The team lead must ensure that all features, functionalities, and integrations are thoroughly tested before deployment. This includes organizing and supervising testing activities to identify and resolve any issues.
  • All features, all buttons, all menus, every option should be known to the team lead: The team lead must have an in-depth understanding of the entire system. This knowledge is essential for identifying potential issues and ensuring all components function correctly.

Code Reviews and Simulations #

  • Conduct code review on big features before deployment: Code reviews are crucial for maintaining code quality and catching potential issues early. The team lead should conduct or oversee thorough code reviews of significant features to ensure they meet the required standards.
  • Simulation of deployment should be done one week before actual deployment on a machine with similar configuration to the server: A simulated deployment helps identify potential issues that might arise during the actual deployment. This simulation should be done on a system with similar configurations to the production server to ensure accurate testing.

Decision-Making and Communication #

  • If the team lead has any issues with any feature or any issue with simulation deployment, then the decision to delay the deployment needs to be conveyed to management and to the client: If any issues are identified during the simulation or with any feature, the team lead must make an informed decision on whether to delay the deployment. This decision should be communicated clearly and promptly to both management and the client.

Deployment Planning and Execution #

  • Create a plan for deployment, write down the steps, sequence, data, and resources needed for each step, and estimate the timeline for deployment: A detailed deployment plan is essential for a successful rollout. This plan should outline every step, the sequence of tasks, required data and resources, and an estimated timeline.
  • Include a plan for rollback in case of failure and also include time to allow for minor issues that can occur unexpectedly during deployment: The deployment plan should also have a well-defined rollback strategy to revert to the previous stable state if something goes wrong. Additionally, allocate time for addressing minor, unexpected issues that may arise during deployment.

On the Day of Deployment #

  • On the day of deployment, the team lead must stay from start to end for deployment: The team lead should be present throughout the entire deployment process to oversee and address any issues promptly.
  • Till deployment is declared successful, the team lead must lead the team from the office on the day of deployment: Leading from the front, the team lead should guide the team through the deployment process, ensuring that all tasks are executed as planned.
  • In case there are issues in deployment or something does not go according to plan, the team lead must be aware and in control: The team lead should stay vigilant and ready to address any issues that arise during deployment.
  • If issues can be solved in runtime, then lead the team for it; or else must be able to decide whether to roll back deployment or delay it for a few days: The team lead must make critical decisions on the spot. If an issue can be resolved quickly, the team lead should guide the team to fix it. If not, the team lead must decide whether to roll back or delay the deployment, always prioritizing the stability and functionality of the software.

Crisis Mode Management #

Definition and Triggers  #

Crisis mode is initiated when a project in production experiences a critical failure. This can result from various factors, such as software updates, changes in the server environment, the introduction of untested or faulty code, or other unforeseen issues. The critical outcome is the project’s unusability, leading to significant disruptions for the client.

Operational Shift in Crisis Mode #

 During crisis mode, conventional project management methodologies like Scrum are set aside to address the emergency efficiently. The team lead assumes tight control over the team to mitigate the issue swiftly. Here are the critical steps and responsibilities in crisis mode:

Immediate Response and Prioritization #

  • Monitoring and Identification: The team lead must closely monitor the situation, collaborate with the development team, and promptly identify mistakes or major bugs causing the disruption.
  • Live Bug Resolution: Bugs reported by the client are given top priority. These issues must be resolved, tested, and deployed immediately before addressing any other tasks.

Task Allocation and Execution #

  • Senior Intervention: If a developer cannot resolve an issue quickly, the team lead must promptly involve a senior developer. Crisis mode is not the time for skill-building; it demands immediate, effective solutions.
  • Uploading Protocol: When multiple files need uploading, the developer responsible must sit with the uploader to ensure the correct files are uploaded without errors.

Standup Meetings #

  • Modified Standups: Standup meetings are adapted to the crisis situation. Each team member is assigned a single task by the team lead, along with an estimated completion time.
  • Task Reporting: Upon completing the task, the team member must report back to the team lead, who will then assign the next task.
  • Monitoring and Assistance: If a team member exceeds the estimated time, the team lead will assess the situation and decide whether to provide additional assistance or reassign the task to another member. No team member will independently select tasks.

Coordination and Communication #

  • Centralized Coordination: The team lead coordinates all activities, including logging calls, assigning tasks, verifying testing, confirming uploads, and informing the client about resolutions.
  • Client Communication: If an issue cannot be resolved the same day, the team lead must inform the client and provide regular updates until the issue is resolved. This includes responding to messages, emails, and phone calls, and discussing next steps, such as remote support via tools like AnyDesk.

In crisis mode, the team lead’s primary responsibility is to restore functionality and stability to the project as quickly as possible, minimizing disruption for the client and ensuring clear, consistent communication throughout the resolution process.

Importance of Clear Bug Reports #

A well-documented bug report is essential to ensure smooth communication and efficient resolution between developers and testers. Clear and comprehensive bug reports minimize misunderstandings, reduce the need for verbal clarification, and expedite the bug-fixing process. To achieve this, the team lead must establish and enforce strict guidelines for what constitutes a good bug report. Here are the key elements:

Comprehensive Bug Documentation #

  1. Detailed Description: Every bug report should contain a clear and detailed description of the issue. This includes what is happening, what should be happening, and any discrepancies observed.
  2. Steps to Recreate: Detailed, step-by-step instructions on how to reproduce the bug are crucial. This helps developers understand the context and conditions under which the bug occurs. The steps should be precise and easy to follow.
  3. Screenshots and Videos: Visual aids such as screenshots or screen recordings are invaluable. They provide a visual representation of the issue, making it easier for developers to grasp the problem. Screenshots should highlight the exact area of concern, and videos should capture the entire process leading to the bug.
  4. Environment Details: Information about the environment in which the bug was encountered (e.g., browser version, operating system, application version) should be included. This helps in identifying whether the bug is environment-specific.

Priority Setting #

  • Setting the Priority: Each bug should have a priority level assigned to it. The priority indicates the urgency of fixing the bug and helps developers manage their workload effectively. Common priority levels include Critical, High, Medium, and Low.

Communication and Updates #

  1. Clear Comments: If a developer does not understand the bug or cannot reproduce it, they should leave a detailed comment on the bug report. This comment should specify what part of the bug report is unclear or where they are having trouble reproducing the issue.
  2. Tester Follow-up: Upon receiving a comment from a developer, the tester should promptly update the bug report with additional details, clarifications, or further steps to help the developer understand and reproduce the bug. The tester should also reply to the developer’s comment to acknowledge the update and ensure clear communication.

Mandatory Elements Based on Complexity #

  • Simple Bugs: For straightforward bugs, a detailed description and steps to recreate may suffice. Screenshots can be added if they provide additional clarity.
  • Complex Bugs: For more complex issues, all elements—detailed description, steps to recreate, screenshots, and environment details—are mandatory. These comprehensive reports help developers address intricate problems more effectively without needing further clarification.

By ensuring every bug report adheres to these standards, the team lead can facilitate clear communication between testers and developers, prevent conflicts, and streamline the bug resolution process. Clear bug reports save time, reduce frustration, and contribute to a more efficient and collaborative development environment.

Powered by BetterDocs