Skip to content

dmitrybaranov/architect-requirements

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

Software Architect Topics and Responsibility Areas

Architecture Design and Programming Paradigms

  1. Algorithms and Data Structures
  2. Programming Paradigms (OOP, AOP, functional, imperative, declarative)
  3. Design principles (e.g. Separation of concerns, Single responsibility principle, Principle of least knowledge, Evolutionary design)
  4. Architecture documentation
    1. Diagraming notations (UML, Crow's Foot, etc.)
    2. Templates (e.g. arc42, architecture decision records)
    3. Visualization approaches (e.g. C4)

Application Development

  1. Backend
    1. Languages and Frameworks
    2. Layering/Componentization
    3. Multi-threading and concurrency
    4. Performance
    5. Security
  2. Frontend (UI)
    1. Web UI
      1. Languages and Frameworks
      2. Performance
      3. Security
    2. Mobile
      1. Languages and Frameworks (native, hybrid, cross-platform)
      2. Performance
      3. Security
  3. Optimization and Problem Solving
    1. Origin of technical bottlenecks and application malfunctions, how to identify and resolve
    2. Optimization/refactoring/re-engineering best practices and prioritization
    3. Performance analysis and tuning
    4. Remote debugging
  4. Low-level Aspects of Architecture
    1. Peculiarities of operating systems
    2. Memory Management
    3. Inter-process communication
    4. Network Protocols (at least TCP/IP to HTTP(S))

Enterprise Architecture

  1. Architecture styles and types (client/server, layered architecture, service-oriented architecture, domain-driven design, event-driven architecture)
  2. Application Integration Patterns
    1. Remote invocation (API's)
      1. Protocols (e.g. Rest, RPC, GraphQL)
      2. API design (e.g. api first, versioning)
    2. Messaging
      1. Queues and Topics
      2. Events
  3. Non-Functional Aspects (Availability, Scalability, Reliability)
    1. High availability (e.g. eliminating single points of failure, redundancy)
    2. Scaling and load balancing
    3. Performance (e.g. requirements and metrics)
    4. Application resilience
    5. Business continuity
  4. Security
    1. Authentication and authorization
    2. Popular protocols (e.g. Saml, oAuth, OpenID Connect)
    3. Single sign-on
    4. Resource and data protection (role based , row based security, data encryption)

Data Access

  1. RDBMS (Oracle, MS SQL, PostgreSQL, MySQL; practical experience with at least one of these)
  2. SQL (DML, DDL, Stored Procedures � specifics of mainstream DBs)
  3. NoSQL DBMS (types, areas of applicability, practical experience is advantage)
  4. Difference/comparison SQL � NoSQL, ACID � BASE
  5. Data versioning approaches
  6. Sharding technologies (natively by DBMS and by third-party technologies)
  7. Big data processing (architectures, technologies)
  8. Full text search/fuzzy search (DBMS-native and third-party technologies)
  9. GIS data processing and available technologies (DBMS-native and third-party)
  10. Data scaling
  11. ETL (concepts of data landing, staging, concepts of virtual DWH)
  12. Data security (encryption)

Software Development Process

  1. Project setup
    1. Epic/story breakdown
    2. Initial estimating
    3. Team setup: skills, roles, initial capacity
    4. Development methodologies (e.g. scrum, kanban)
  2. CI/CD
    1. Test automation
    2. Code style
    3. Metrics (e.g. coverage, complexity, code analysis)
    4. Multi-stage environments
    5. Release management
    6. Zero downtime deployment
  3. QA (validation, verification disciplines)
    1. Automatic and manual testing
    2. Integration tests
    3. E2E tests
    4. Performance tests
    5. Visual regression tests
    6. Security testing (penetration, vulnerabilities)
    7. UAT
  4. Engineering practices (e.g. unit testing, pull requests, code review, pair programming, VSC best practices)
  5. Operations
    1. Monitoring
    2. Logging
    3. Alerting
    4. Distributed system monitoring and traceability
    5. Operation scenarios (i.e. what to do in case of a particular failure)

Operations, Tools and Frameworks

  1. Hosting types (on-premise, cloud or hybrid)
  2. Virtualization:
    1. Virtualization types
    2. Software-defined networks
    3. Virtual Machines
    4. Containers
  3. Cloud
    1. Automated Infrastructure setup
    2. Distributed system architecture patterns (retry, circuit breaker, idempotency)
    3. Abstraction levels
      1. IaaS
      2. PaaS
      3. SaaS
      4. CaaS
      5. Serverless (FaaS and BaaS)
  4. Identity service providers (e.g. social logins, Azure Active Directory, Cognito, Cas, Okta etc.)
  5. Monitoring solutions (e.g. Application insights, Elastic Stack, Prometheus)

Legal and Compliance

  1. International/government rules and legal issues that can affect applications' architecture
  2. Data protection (legal aspects of)
  3. Types of software licenses and their impact on applications' technology stack

Capabilities

  1. Architecture-related requirements collection
  2. Architecture and design documentation preparation
  3. Presentation of architecture and design to business people
  4. Ability to develop a project from scratch in solo mode
  5. 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

Releases

No releases published

Packages

 
 
 

Contributors