10 Essential Skills of the Modern Software Architect
Background
Architects vs Developers
- Architects focus on breadth while developers emphasize technical depth.
- Software architects focus on the system as a whole, or the breadth of the software system, while developers focus on specific areas of implementation in great detail.
- Technological diversity
- Biz want their software more quickly than ever before
- The modern architectural process must be continuous, incremental, emergent and agile
- Legacy architectural paradigms are no longer suitable
- Moving software to cloud infrastructure
- Building services that support a diversity of endpoints (e.g., mobile, browser, Internet of Things [IoT] edge devices)
What should we learn?
- Learn about modern architectural paradigms, such as microservices or modern web app architecture. Know how processes, such as continuous delivery, impact architecture.
- Improve your professional effectiveness (aka "soft") skills.
- Don't treat your role as software architect as a dictatorship, work with them
- Inventory your existing skill sets.
What is EA, BA, IA, SA?
Role | Definition |
---|---|
EA | The enterprise architect is responsible for leading enterprise responses to disruptive forces by identifying and analyzing the execution of change toward desired business vision and outcomes. The enterprise architect role leads, prioritizes and develops the overall enterprise architecture (EA) discipline for the enterprise, in conjunction with the other EA roles, as well as with business and IT leaders. An enterprise can be a business unit, an entire corporation, a government agency or a collection of businesses joined together in a partnership. |
BA | The business architect is accountable for proactively and holistically leading or supporting EA activities that create deliverables that guide business models, people, process, organizational change and investments in response to disruptive forces and toward achieving targeted business outcomes. Business architects must be capable of practically applying existing, new and emerging technologies to new and evolving business and operating models. They must also be able to understand, monetize and operationalize new technologies. The individual in this role develops deliverables that are valuable to the business, including business capabilities, business requirements and workflow. This individual is responsible for facilitating the construction of business models, which may include business capabilities, functions and processes, and organization design, as well as working collaboratively with business strategists, process owners and subject matter experts. The role focuses on business strategy and targeted business outcomes — clarifying strategic intentions, identifying business outcomes, exploring implications, impacts and risks, and addressing stakeholder questions. |
IA | The information architect strengthens the impact of, and provides recommendations on, business information that will need to be available and shared consistently across the company through the identification, definition and analysis of how information assets drive business outcomes. Responsible for discovering the data and analytics requirements for information for all uses. |
TA | The technical architect is accountable for creating deliverables that guide the direction and development for technological responses to disruptive forces, and driving targeted business outcomes. Technologies may include data center, infrastructure, cloud, mobile and IoT technologies. Technical architects provide the leadership, facilitation, analysis and design tasks required for the development of an enterprise's technical architecture. They create deliverables that help develop target-state guidance (reusable standards, guidelines, individual parts and configurations) for evolving the technical infrastructure across the enterprise to enable business strategy and deliver targeted business outcomes. They facilitate and orchestrate the delivery of targeted business outcomes through technical decisions. |
SA (Solution Architect) | The solution architect is accountable for delivering a portfolio of solutions in response to disruptive forces, and driving achieving targeted business outcomes. Solutions include systems (including applications, technologies, processes and information), shared infrastructure services and shared application services. Solution architects provide the necessary leadership, analysis and design tasks related to the development of an enterprise's solution architecture. This individual creates deliverables that help develop a direction for managing the organization's portfolio of "to be" and "as is" solutions. These include systems (meaning not just applications, but also processes and information), shared infrastructure services, and shared application services and components to better match targeted business outcome objectives. Solution architecture is sometimes used interchangeably with application and infrastructure architecture. However, both of the aforementioned typically fall under the purview of the solution architect. Application architecture is a subset of solution architecture. It's the discipline that guides application design and defines application architecture paradigms, such as service-oriented architecture (SOA), principles that influence design decisions and patterns that provide proven design solutions. Solution architects leverage and use technology solutions to enable the organization's future-state business capabilities that, in turn, drive the organization's targeted outcomes. They facilitate and orchestrate the delivery of targeted business outcomes. |
use case
- Enterprise architect: How does a business outcome to increase and improve customer self-service for auto insurance products change and impact our IT investments in relation to other priorities?
- Business architect: What are the internal and external business processes that need to change to improve customer self-service for auto insurance?
- Information architect: What information gets used, and how, to enable an improvement in customer self-service for auto insurance? How is that information made available to other outcomes?
- Technical architect: What common hardware and software is used to improve customer self-service for auto insurance? What new hardware or software is needed to achieve the desired business outcome while ensuring the system meets reliability, availability, scalability and other architectural quality requirements?
- Solution architect: How are the technologies and information weaved together from all architecture domains to form a complete solution that allows a prospect to apply for an auto insurance policy online?
- Software architect: How are the technologies, tools, frameworks and patterns used to construct a custom-built software solution that allows customers to self-service their auto insurance policy?
Essential skills
Four main skill sets
1. Technical
The architect must have a solid understanding of the technology ecosystem.
- Understand technology alternatives and when to apply.
- web technologies
- Assessing Node.js and JavaScript to Build APIs, Microservices, and Event-Driven Web and Mobile Apps
- Using Angular to Build JavaScript Web Applications
- Web Components and the Rise of Client-Side Architecture
- container technologies
- cloud and application platform as a service (aPaaS) technologies
- mobile technologies
- Assessing Node.js and JavaScript to Build APIs, Microservices, and Event-Driven Web and Mobile Apps
- web technologies
- Embrace modern architectural paradigms to maximize architectural agility
- recent shift toward cloud platforms
- server-side application architectural paradigms
- modern web app architecture
- mobile application architecture:
- Establish metrics to measure improvement
- The modern software architect must understand how to use metrics effectively and identify the right set of metrics to capture
- Validate architectural decisions to obtain accurate feedback.
2. Process
- Embrace emergent architecture to accommodate evolution.
- Advocate for agile practices to increase delivery agility.
3. Business
- Increase domain knowledge to aid in decision making
- Build relationships with users to increase trust
4. Interpersonal
- Develop leadership skills to maximize team effectiveness.
- Compromise and negotiate solutions to improve team harmony.