Repository files navigation Software Architect Topics and Responsibility Areas
Architecture Design and Programming Paradigms
Algorithms and Data Structures
Programming Paradigms (OOP, AOP, functional, imperative, declarative)
Design principles (e.g. Separation of concerns, Single responsibility principle, Principle of least knowledge, Evolutionary design)
Architecture documentation
Diagraming notations (UML, Crow's Foot, etc.)
Templates (e.g. arc42, architecture decision records)
Visualization approaches (e.g. C4)
Backend
Languages and Frameworks
Layering/Componentization
Multi-threading and concurrency
Performance
Security
Frontend (UI)
Web UI
Languages and Frameworks
Performance
Security
Mobile
Languages and Frameworks (native, hybrid, cross-platform)
Performance
Security
Optimization and Problem Solving
Origin of technical bottlenecks and application malfunctions, how to identify and resolve
Optimization/refactoring/re-engineering best practices and prioritization
Performance analysis and tuning
Remote debugging
Low-level Aspects of Architecture
Peculiarities of operating systems
Memory Management
Inter-process communication
Network Protocols (at least TCP/IP to HTTP(S))
Architecture styles and types (client/server, layered architecture, service-oriented architecture, domain-driven design, event-driven architecture)
Application Integration Patterns
Remote invocation (API's)
Protocols (e.g. Rest, RPC, GraphQL)
API design (e.g. api first, versioning)
Messaging
Queues and Topics
Events
Non-Functional Aspects (Availability, Scalability, Reliability)
High availability (e.g. eliminating single points of failure, redundancy)
Scaling and load balancing
Performance (e.g. requirements and metrics)
Application resilience
Business continuity
Security
Authentication and authorization
Popular protocols (e.g. Saml, oAuth, OpenID Connect)
Single sign-on
Resource and data protection (role based , row based security, data encryption)
RDBMS (Oracle, MS SQL, PostgreSQL, MySQL; practical experience with at least one of these)
SQL (DML, DDL, Stored Procedures � specifics of mainstream DBs)
NoSQL DBMS (types, areas of applicability, practical experience is advantage)
Difference/comparison SQL � NoSQL, ACID � BASE
Data versioning approaches
Sharding technologies (natively by DBMS and by third-party technologies)
Big data processing (architectures, technologies)
Full text search/fuzzy search (DBMS-native and third-party technologies)
GIS data processing and available technologies (DBMS-native and third-party)
Data scaling
ETL (concepts of data landing, staging, concepts of virtual DWH)
Data security (encryption)
Software Development Process
Project setup
Epic/story breakdown
Initial estimating
Team setup: skills, roles, initial capacity
Development methodologies (e.g. scrum, kanban)
CI/CD
Test automation
Code style
Metrics (e.g. coverage, complexity, code analysis)
Multi-stage environments
Release management
Zero downtime deployment
QA (validation, verification disciplines)
Automatic and manual testing
Integration tests
E2E tests
Performance tests
Visual regression tests
Security testing (penetration, vulnerabilities)
UAT
Engineering practices (e.g. unit testing, pull requests, code review, pair programming, VSC best practices)
Operations
Monitoring
Logging
Alerting
Distributed system monitoring and traceability
Operation scenarios (i.e. what to do in case of a particular failure)
Operations, Tools and Frameworks
Hosting types (on-premise, cloud or hybrid)
Virtualization:
Virtualization types
Software-defined networks
Virtual Machines
Containers
Cloud
Automated Infrastructure setup
Distributed system architecture patterns (retry, circuit breaker, idempotency)
Abstraction levels
IaaS
PaaS
SaaS
CaaS
Serverless (FaaS and BaaS)
Identity service providers (e.g. social logins, Azure Active Directory, Cognito, Cas, Okta etc.)
Monitoring solutions (e.g. Application insights, Elastic Stack, Prometheus)
International/government rules and legal issues that can affect applications' architecture
Data protection (legal aspects of)
Types of software licenses and their impact on applications' technology stack
Architecture-related requirements collection
Architecture and design documentation preparation
Presentation of architecture and design to business people
Ability to develop a project from scratch in solo mode
At least Upper-Intermediate level of English
About
A list of requirements to be eligible for a software architect title in C.T.Co
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.