Saturday, March 5, 2011

Roles and Responsibilities of a Software Architect

The following is a list (which is not intended to be comprehensive, by any means) of the roles and responsibilities of a Software Architect.

  • Roles of a Software Architect
    • Customer Facing - Evangelist, Negotiator
    • Team Facing - [Designer, Programmer], Process Guide
    • Management Facing - Evangelist, Negotiator

  • Responsibilities of a Software Architect
    • Estimation
    • Analyze skill requirements
    • Ensure requirements make sense (esp. NFRs)
    • Prepare domain model
    • Design solution architecture (candidate + selected)
      • Balance trade offs
      • Capture rationale
    • Select technology
    • Provide technical guidance (research, samples, references, training to team)
    • Define development environment
      • Automated Builds
      • Continuous Integration
      • Unit Testing
      • Software Configuration Management (SCM)
      • Metrics
    • Pioneer new technologies; training team where gaps exist
    • Troubleshooting/Performance optimization (especially in maintenance)
    • Maintain engineering discipline/rigor
    • Monitor and control via reviews
    • Risk/Issue assessment
    • Input to defect triage process
    • Assess team member performance, provide feedback
    • Recruitment (conducting interviews, identifying organizational skill gaps)
    • Pre-sales (especially in a consultancy environment)

If this describes what you do, you just might be a Software Architect...