Below is a list of skills that I have acquired over the course of my career. Each contains a short description explaining my definition of the discipline along with links to excellent books that I enjoyed reading for each topic.

Information Architecture

Information architecture is the study and practice of information organization.

Software Architecture

Attribute Driven Design, Latency, Throughput, Efficiency, Scalability, Extensibility, Maintainability, Visibility, Documentation

Systems Architecture

DNS, CDNs, Load Balancers, Auto Scaling Groups, Queues, Streams, Consumers, Database Replication

Site Reliability Engineering

Traffic Pattern Analysis, Performance Measurement, Bottleneck Identification, Log Collection, Root Cause Analysis, Time Between Failures, Failure Detection Time, Failure Recovery Time, Monitoring, Alerting

API Design

Representational State Transfer, Resource Oriented Architecture, Hypermedia Formats, Composition, Cacheability, Serendipitous Reuse

Database Design

ACID, Relational Database Design, Normalization, Denormalization, Foreign Key Constraints, NoSQL, Key Value Stores, Document Stores, Full Text Search, Distributed Database Design, CAP Theorem, Object Storage

User Experience Design

Interactive Design, Usability, Responsive Design

Web Application Security

Firewalls and Security Groups, Content Security Policy, Secure Cookies, CSRF, XSS, Authentication, Credential Stuffing, Rate Limiting

Agile Planning

Scrum, Kanban, Planning, Retrospectives, Safety, Honesty, Ownership, Delegated Authority, Leadership, Process Measurement, Process Design, Automation

Project Management

Gathering Product Requirements (Generative), Specifying Engineering Requirements (Reductive), Stakeholder Kickoff, Project Phases, Milestones, Scope, Schedule