Skills

A structured overview of the technologies, tools, and engineering practices I apply to deliver scalable software systems, reliable platforms, and high-quality team outcomes.

Soft Skills

Adaptability

Rapid onboarding into new domains, technologies, and delivery contexts.

Communication

Clear, audience-oriented communication with engineers, stakeholders, and leadership.

Leadership & Mentoring

Leading cross-functional teams and developing engineers through mentoring and feedback.

Problem Solving

Structured analysis of complex challenges with pragmatic, implementable solutions.

Conflict Resolution

Constructive mediation of disagreements to maintain alignment and delivery momentum.

Strategic Thinking

Long-term technical planning and decision-making aligned with business priorities.

Team Collaboration

Effective collaboration across disciplines to achieve shared delivery goals.

Concepts

Delivery & Team Practices

Agile

Iterative delivery with short feedback loops, continuous improvement, and close collaboration between development and stakeholders.

Scrum

Sprint-based framework with defined roles (Product Owner, Scrum Master, Dev Team) to ship increments regularly and adapt quickly.

Kanban

Flow-based approach visualising work in progress, limiting WIP to reduce bottlenecks and improve throughput.

CI/CD

Automating build, test, and deployment pipelines to enable fast, reliable, and repeatable software delivery with minimal manual intervention.

GitOps

Managing infrastructure and application delivery declaratively via Git as the single source of truth, with automated reconciliation by tools like ArgoCD.

Observability

Understanding system behaviour through metrics, logs and traces. Enables proactive detection and root-cause analysis in distributed systems.

Architecture

Domain Driven Design

Modelling software around the business domain using Ubiquitous Language, Bounded Contexts, and rich domain models.

Microservices

Decomposing applications into independently deployable services with clear boundaries, enabling autonomous teams and targeted scaling.

Hexagonal Architecture

Isolating the application core via ports and adapters, allowing external systems (DBs, UIs, APIs) to be swapped without touching business logic.

Clean Architecture

Structuring systems into independent layers (entities, use cases, adapters, infrastructure) to keep business logic decoupled from frameworks and delivery mechanisms.

CQRS

Separating read and write models to optimise each independently, often combined with Event Sourcing for scalable architectures.

Event Sourcing

Persisting state as an immutable sequence of domain events, enabling full auditability and temporal queries.

API-First Design

Designing APIs as first-class products before implementation, using contracts (OpenAPI, GraphQL schema) to decouple teams and enable parallel development.

Event Storming

Collaborative workshop technique for rapidly exploring complex business domains by mapping domain events, commands, and aggregates on a shared timeline.

Engineering Quality

Behavior Driven Development

Expressing requirements as human-readable scenarios (Given/When/Then) that double as automated acceptance tests.

Test Driven Development

Writing failing tests before implementation to drive design, ensure correctness, and build a living safety net.

Security

OAuth2 / OpenID Connect

Industry-standard protocols for delegated authorisation and federated identity, enabling secure, token-based access control across services and clients.

OWASP

Secure coding practices based on the OWASP Top 10 — identifying and mitigating the most critical web application security risks such as injection, broken auth and misconfiguration.

Technical Skills

AI & ML
ChatGPT
Claude Claude
GitHub Copilot
MCP
Languages
Groovy
Java Java
JavaScript JavaScript
Python Python
Shell Scripts Shell Scripts
TypeScript TypeScript
Markup & Data
CSS CSS
HTML HTML
JSON
Markdown
SQL
XML
YAML
Frameworks & Libraries
Axon Axon
GraphQL GraphQL
Hibernate
JPA
Lombok Lombok
MapStruct
NodeJS NodeJS
Nuxt
Prisma
Quarkus
React
Spring Spring
VueJS VueJS
Databases
Elasticsearch
Liquibase
MongoDB MongoDB
MySQL MySQL
Oracle Oracle
PostgreSQL PostgreSQL
Redis
API & Integration
OpenAPI
REST
Swagger
Infrastructure & Cloud
AWS
Azure
CloudFoundry
Docker Docker
Helm
Kafka
Kubernetes Kubernetes
Terraform Terraform
Build & Toolchain
Gradle
Maven Maven
Vite
Webpack Webpack
Testing
ArchUnit
JUnit
Mockito
Selenium
Spock
TestContainers
Security
Keycloak
SonarQube SonarQube
Veracode Veracode
Observability
Grafana
OpenTelemetry
Prometheus
Splunk
Tools
Confluence
Git
GitHub GitHub
GitLab GitLab
IntelliJ Suite IntelliJ Suite
Jira
Nexus
Postman
VS Code