Design & Architecture

Software Design and Architecture

Step by step guide to learn software design and architecture

This page is a visitor-friendly snapshot of how William currently sees this area: what feels strong, what is still being refined, and where the evidence is still partial.

12

Done

4

Learning

0

Target

0

Skipped

94

Tracked

Status meanings

Done: enough evidence to present this area as a solid strength.

Learning: an area of active development with growing confidence.

Target: relevant and intentional, but still earlier in the journey.

Skipped: not a current priority relative to other areas.

How the estimates are formed

Profile and manual review: 2

Evidence from project experience: 4

Competency mapping alignment: 10

Quiz-backed updates: 0

These signals help estimate progress, but they are still best treated as directional rather than perfectly complete.

Areas currently being strengthened

Architectural Principles

This is actively developing and would benefit from more practice, proof, or recent examples.

Architectural Patterns

This is actively developing and would benefit from more practice, proof, or recent examples.

Clean Code

Untracked

Programming Paradigms

Untracked

Object Oriented Programming

Untracked

Design Principles

Untracked

Design Patterns

Untracked

Architectural Principles

Updated 3/21/2026

Learning
Profile and manual reviewEvidence: experience

Architectural Styles

Untracked

Architectural Patterns

Done
Competency mapping

Enterprise Patterns

Untracked

Clean Code Principles

Done
Project experienceEvidence: experience

Be consistent

Untracked

Meaningful names over comments

Untracked

Indentation and Code Style

Untracked

Keep methods / classes / files small

Untracked

Pure functions

Untracked

Minimize cyclomatic complexity

Untracked

Avoid passing nulls, booleans

Untracked

Keep framework code distant

Untracked

Use correct constructs

Untracked

Tests should be fast and independent

Untracked

Organize code by actor it belongs to

Untracked

Command query separation

Untracked

Keep it simple and refactor often

Untracked

Programming Paradigms

Untracked

Structured Programming

Untracked

Functional Programming

Untracked

Object Oriented Programming

Untracked

Object Oriented Programming

Untracked

Model-Driven Design

Done
Competency mapping

Domain Models

Untracked

Class Variants

Untracked

Layered Architectures

Untracked

Domain Language

Untracked

Anemic Models

Untracked

Abstract Classes

Untracked

Concrete Classes

Untracked

Scope / Visibility

Untracked

Interfaces

Untracked

Inheritance

Untracked

Polymorphism

Untracked

Abstraction

Untracked

Encapsulation

Untracked

Design Principles

Untracked

Composition over Inheritance

Untracked

Encapsulate what varies

Untracked

Program against abstractions

Untracked

Hollywood Principle

Untracked

Law of Demeter

Untracked

Tell, don't ask

Untracked

SOLID

Untracked

DRY

Untracked

YAGNI

Untracked

Design Patterns

Untracked

GoF Design Patterns

Untracked

PoSA Patterns

Untracked

Architectural Principles

Done
Project experienceEvidence: experience

Component Principles

Untracked

Policy vs Detail

Untracked

Coupling and Cohesion

Untracked

Boundaries

Untracked

Architectural Styles

Done
Competency mapping

Messaging

Untracked

Event-Driven

Untracked

Publish-Subscribe

Untracked

Distributed

Untracked

Client-Server

Untracked

Peer-to-Peer

Untracked

Structural

Untracked

Component-Based

Untracked

Monolithic

Done
Competency mapping

Layered

Done
Competency mapping

Architectural Patterns

Updated 3/21/2026

Learning
Profile and manual reviewEvidence: experience

Blackboard Pattern

Untracked

Microservices

Done
Project experienceEvidence: experience

Model-View Controller

Untracked

Domain-Driven Design

Done
Project experienceEvidence: experience

Microkernel

Untracked

Serverless Architecture

Untracked

Message Queues / Streams

Learning
Competency mapping

Event Sourcing

Learning
Competency mapping

CQRS

Untracked

SOA

Untracked

Enterprise Patterns

Untracked

Transaction Script

Untracked

Mappers

Untracked

Repositories

Done
Competency mapping

Usecases

Untracked

Identity Maps

Untracked

DTOs

Untracked

Commands / Queries

Untracked

Value Objects

Done
Competency mapping

Domain Models

Done
Competency mapping

Entities

Untracked

ORMs

Untracked