1: The Architect And The Team
In this section you're going to learn how the Solution Architect fits into an IT team. You will need this knowledge to become an outstanding architect.
We're going to take a close look at Software Team Roles: who does what an an IT team, and who reports to whom? We'll zoom in specifically on the roles of Functional Analyst, and Lead Developer, because these are the two individuals the Architect will spend the most time with.
Finally, we will take a close look at the Solution Architect. What is the role of the architect, how does he or she fit in the team, and what are his or her responsibilities to make the project run smoothly?
Software Team Roles
The team always needs to:
- Understand the business problem
- Document non-technical business Solution
- Convert solution to technical architecture
- Convert architecture to code
- Manage developers
- Test code
- Deploy code
- Functional Analyst: Combines the user problem and creates a functional requirement document. Sounds similar to product managers.
- Solution Architect: Solution architect creates the technical specification based on the business requirement from the FA.
- Lead Developer: Lead developer is the main developer of the project. He or she is responsible for the development of the software.
- Project Manager: Responsible for the milestones of the project. Think dates, etc.
- Quality Assurance: Tests the code being built and knows how it behaves (based on functional requirements).
- Deployment Manager: Normally moves code from staging to production. Sounds outdated by CI/CD.
These are the skils required to survive and thrive:
- Understanding the business
- Cross-Domain Understanding
- Multiple Perspectives
- People Skills
- Lifelong Learning
The Functional Analyst
The FA talks to the user representative and talks to the user clients.
The responsibilities of the FA are:
- All functionality
- Captures, consolidates, and communicates information
- Constantly asks questions: What do you mean? How does this fit in with...?
- Identifies and resolves conflicts
- Produces requirements specification
The skills required:
- Conflict management
- Communication skills
- Attention to detail
Broken down further:
- Precise communicators
- Know when detail is necessary and when not
- Adept at dealing with differing opinions
- Great relationship skills
- Very good listeners
- Can create clear and precise documents
- Skilled in using Office tools
The Lead Developer
- Split up the coding tasks and delegates.
- Mentor developers.
- Review pull requests.
- Ensure that all developers are successful.
- Coding optional.
Skills of the lead dev:
- Requires great relationship with architect.
- Wide knowledge of Libraries/Tools/Techniques.
- Adept at creating technical specifications.
- Adept at build & configuration management.
- Adept at debugging, post-morten log inspection, etc.
- Can create own tools if needed.
The Solution Architect
Takes functional spec and turns into a technical specification.
- Responsible for tech.
- Converts Functional Requirements to Technical Architecture.
- Carefully balances Patterns/Requirements/Elegance/Concepts.
- Researches Key Technologies.
- Has deep understanding of Design Patterns.
- Motivates and guides development team.
- Ensures that the Lead Developer is successful.
The skills required:
- Functional understanding.
- Technical knowledge.
- Leadership skills.
Skills of the Solution Architect:
- Grows out of Lead Dev role.
- Requires great relationship with Lead Dev.
- Helicopter view at all times.
- Deep understanding of Design Patterns.
- Fluent in UML & other design tools.
- Knowledge of code generators.