Best practices for running a software development team

  1. Build solid relationships with all of  your stakeholders.

    • Customers
    • Product Management
    • Executives
    • Business Partners
    • Business Units
    • Customer Support
    • Operational Support
  2. Create a single intake process for all product requests.

  3. Partner with stakeholders when prioritizing requests.

    • Make sure they are part of any product steering committee meetings.
  4. Always prioritize severity 1 & 2  bugs before accepting any product feature requests from your stakeholders.

  5. Scalability, availability, and performance enhancements should be prioritized very high in relation to product feature requests.

    • Categorizing them as bugs also is way to make sure that they fall high on the priority list.
  6. Do weekly reviews of all production & QA bugs.

  7. Do monthly reviews of production & QA logs to do trending for security issues, performance issues, and capacity planning.

  8. The development team should have real-time visibility to system level stats from the production environment.

    • Use tools like Ganglia and Cacti to give the team a real-time view into production.
  9. Every person on the development team should spend time sitting with the customer support team listening in on support calls to get a deeper view into customer issues.

    • Every 2-3 months for a few hours is a good schedule.
  10. Define a clear escalation plan for production outages/issues.

    • Who is the first line of defense? Who do they escalate to? How do they classify the issue? When should development get involved? How should data be captured for later root cause analysis? Pull data from the HR system for the escalation up the management chain, do not waste time maintaining separate team lists of contact information. Update you HR system to contain all contact info then pull the data!
  11. Every person on the development team should be trained on how to do root cause analysis.

  12. After any and every production incident there should be a root cause analysis performed with clear action items and associated owners to prevent the issue from re-occurring.

    • This is not a witch hunt to find someone who to blame, but rather a way to identify what process or lack of process created the environment for the issue to have occurred.
  13. Hire a technical writer to setup a wiki with a well designed information architecture for all product documentation.

    • Run books, architectural artifacts, knowledge base, etc..
  14. Ensure that there is clear requirements traceability back to the originating stakeholder request.

  15. There should be design traceability from the high level design to the detailed design to the completed code.

  16. Focus on eliminating waste in all SDLC processes.

    • A good place to start is with any process outside of analysis and writing the code, ask the question is the process adding value?
  17. Balance time to market vs. perfect architecture.

    • What is a reasonable architecture to solve the problem today. If cost, resources, or time constrains the architectural design then have a story of how to undo the trade offs made in the design to meet the time to market demands. What is the plan for getting rid of the technical debt?
  18. Make data driven decisions, but do not require that every decision be made with complete data.

    • Identify the experts in the organization and trust them to make the right decisions based on past experiences. For example, picking the right initial architecture should be based expert judgment, past experience, and some amount of prototypes. But scaling that architecture over time should be completely data driven from the metrics collected on the production systems. Always be measuring, analyzing, and optimizing based on the data.
  19. Everyone on the development team should have a professional development plan.

    • This plan is a contract between the employee and management to ensure that the organization will provide all required resources and opportunities for the employee to realize the career goals.
  20. Foster a culture that supports a healthy balance between work and family life for everyone within the organization.

    • Let people go home to their families at reasonable times. Ensure that people are taking vacations on a regular basis. Value results driven work over duration driven work.
  21. Create a respectful work environment where:

    • employees are valued
    • communication is polite and courteous
    • people are treated as they wish to be treated
    • conflict is addressed in a positive and respectful manner
    • disrespectful behavior and harassment are addressed
  22. Every 2-3 months get the entire organization together to discuss the product roadmap, discuss successfully delivered work, answer questions, motivate the teams, and above all to publicly praise and reward the star team members within the team.

One thought on “Best practices for running a software development team

Leave a comment