Skip to content

A list of requirements to be eligible for a software architect title in C.T.Co

Notifications You must be signed in to change notification settings

jelisejev/architect-requirements

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 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, web frontend and, optionally, mobile development

    1. Popular languages and frameworks
    2. Performance (e.g. popular causes of bottlenecks and profiling methods)
    3. Security aspects (e.g. usual attack vectors and counter-measures)
    4. Debugging tools and techniques
  2. Platform-specific questions

    1. Backend
      1. Layering/Componentization
      2. Multi-threading and concurrency
    2. Mobile
      1. Cross-platform development (e.g. Xamarin, React Native, Ionic)
  3. 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
    2. Authorization (e.g. role-based, row-based security, column-based security)
    3. Popular protocols (e.g. Saml, oAuth, OpenID Connect)
    4. Single sign-on
    5. Data encryption and key management

Data Access

  1. SQL
    1. RDBMS (e.g. Oracle, MS SQL, PostgreSQL, MySQL; practical experience with at least one of these)
    2. SQL (DML, DDL, Stored Procedures and specifics of mainstream DBs)
  2. NoSQL
    1. Types (e.g. document, graph, time-series, column, key-value)
    2. Popular DBMS
  3. Comparing SQL and NoSQL databases (advantages and trade offs, areas of applicability)
  4. Consistency models (e.g. ACID, BASE)
  5. Data versioning approaches (e.g. patching, migrations)
  6. Advanced questions:
    1. Big data processing (architectures, technologies, four Vs)
    2. Full text search/fuzzy search (DBMS-native and third-party technologies)
    3. GIS data processing and available technologies (DBMS-native and third-party)
    4. Partitioning and replication
    5. ETL ((concepts of data landing, staging, concepts of virtual DWH))
    6. 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

No packages published