Skills
Soft Skills
Adaptability
Quick learning and adapting to new technologies
Communication
Clear articulation with stakeholders and team members
Leadership & Mentoring
Leading cross-functional teams and mentoring junior developers
Problem Solving
Analytical thinking and creative solution finding
Conflict Resolution
Mediating disagreements constructively and aligning teams toward shared goals
Strategic Thinking
Long-term planning and architectural decision making
Team Collaboration
Effective collaboration and supporting team success
Concepts
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.
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.
Test Driven Development
Writing failing tests before implementation to drive design, ensure correctness, and build a living safety net.
Behavior Driven Development
Expressing requirements as human-readable scenarios (Given/When/Then) that double as automated acceptance tests.