Senior Fullstack Developer — Job Description Skill Matrix
|
Section
| Topic / Skill
| Proficiency Required
| Key Requirements
|
1. SQL, RDBMS & NoSQL
| Advanced SQL Query Writing
| Expert — Hands-on Mandatory
| Must write complex queries from scratch: multi-table JOINs, correlated subqueries, CTEs, window functions (ROWNUMBER, RANK, LAG, LEAD, NTILE). Must explain query execution order: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
|
| Schema Design & Normalization
| Expert
| Designs normalized schemas (1NF–3NF), knows when to denormalize. Defines PKs, FKs, composite keys, unique/check constraints. Understands cascade rules (ON DELETE CASCADE, SET NULL).
|
| Indexing & Query Optimization
| Expert
| B-tree vs hash index internals, composite index column ordering, covering indexes, index cardinality. Reads EXPLAIN / EXPLAIN ANALYZE output, resolves N+1 query patterns.
|
| Transactions, ACID & Isolation Levels
| Strong
| Explains ACID guarantees and each isolation level (READ COMMITTED, REPEATABLE READ, SERIALIZABLE). Uses SELECT FOR UPDATE, handles row vs table locks, navigates deadlock scenarios.
|
| PostgreSQL / MySQL
| Strong in Both
| Production experience with stored procedures, triggers, views, materialized views. Familiar with PostgreSQL JSONB / MySQL JSON columns.
|
| Document Databases (MongoDB)
| Strong
| Embedding vs referencing decisions. Aggregation pipelines ($match, $group, $lookup, $project, $unwind), indexing strategies, TTL indexes.
|
| Key-Value & Wide-Column (Redis / DynamoDB)
| Solid
| Redis for caching, pub/sub, sorted sets, TTL eviction. DynamoDB partition key design, hot partition avoidance, read/write capacity planning.
|
| CAP Theorem & Trade-off Reasoning
| Conceptual Clarity Required
| Articulates trade-offs between consistency, availability, and partition tolerance. Can justify Redis vs PostgreSQL vs MongoDB as an architectural decision.
|
2. Angular Frontend
| Component Architecture & Standalone Components
| Expert
| All lifecycle hooks (ngOnInit, ngOnDestroy, ngOnChanges, ngAfterViewInit), Input/Output bindings, Angular 14+ standalone components. Smart vs dumb component separation.
|
| RxJS & Reactive Programming
| Expert — Senior Filter
| Observables, BehaviorSubject, ReplaySubject. Key operators: switchMap, mergeMap, exhaustMap, combineLatest, forkJoin, debounceTime, distinctUntilChanged, takeUntil. No memory leaks. Cold vs hot Observables.
|
| Angular Signals (v17+)
| Strong — Modern Codebase
| signal(), computed(), effect(), toSignal(). Knows when Signals complement or replace RxJS for local state and performance implications.
|
| State Management (NgRx or equivalent)
| Strong
| NgRx (actions, reducers, selectors, effects) or Akita/NGXS. Evaluates when global store is warranted. Entity adapters and memoized selectors.
|
| Routing, Guards & Lazy Loading
| Strong
| CanActivate, CanDeactivate guards, route resolvers, child routes. Lazy-loaded feature modules or standalone route chunks. Preloading strategies.
|
| Change Detection & Performance
| Strong — Senior Differentiator
| Default vs OnPush change detection, Zone.js, ChangeDetectorRef.markForCheck() vs detectChanges(). Eliminates unnecessary re-renders. Angular DevTools profiling.
|
| Reactive & Template-Driven Forms
| Solid
| Complex reactive forms with FormGroup, FormArray, custom validators (sync and async). Cross-field validation, dynamic form controls.
|
3. Python Backend
| Pythonic Code & Language Depth
| Expert
| Comprehensions, generators, decorators, context managers, data classes, type hints. Python memory model, GIL, reference counting at a practical level.
|
| REST API Design (Flask or FastAPI)
| Expert — Primary Requirement
| Well-structured REST APIs with correct HTTP verbs, status codes, validation, structured error handling. FastAPI: Pydantic, dependency injection, async endpoints. Flask: blueprints, application factories. OpenAPI docs as a deliverable.
|
| Async Python
| Strong
| asyncio event loop, async/await, coroutines, Tasks. Threading vs multiprocessing vs asyncio for CPU-bound vs I/O-bound tasks. GIL question answered without hesitation.
|
| Database Access Patterns
| Strong
| Raw SQL via psycopg2 / asyncpg with connection pooling. SQLAlchemy for ORM projects. Eliminates N+1 queries, knows when eager loading is necessary.
|
| Authentication & Security
| Strong — Non-Negotiable
| JWT auth with access/refresh token rotation, OAuth2 flows, API key management. OWASP Top 10: SQL injection prevention, input sanitization, rate limiting, CORS, secrets management.
|
| Background Tasks & Queues
| Solid
| Celery, RQ, or cloud-native equivalents (AWS SQS, Lambda). Idempotent task handlers, retry logic with exponential backoff, dead-letter queues.
|
4. Unit & Integration Testing
| pytest — Advanced Usage
| Expert
| Fixtures at function/session/module scope, parametrize, conftest.py, custom markers. pytest-asyncio, pytest-mock, pytest-cov coverage thresholds. No trivial assert True tests.
|
| Mocking & Test Isolation
| Strong
| unittest.mock — patch, MagicMock, sideeffect, returnvalue, spec. Knows when to mock (external I/O, APIs, DBs) and when not to. Test doubles: stubs, spies, fakes, mocks.
|
| API-Level Integration Testing
| Strong
| Tests against FastAPI/Flask using TestClient or httpx.AsyncClient. Test databases (SQLite in-memory, test containers). Knows when integration tests replace vs complement unit tests.
|
| Jasmine / Karma & Angular TestBed
| Strong
| TestBed, ComponentFixture, DebugElement. HttpClientTestingModule, mocked dependencies, DOM state verification. detectChanges() and fakeAsync/tick interaction.
|
| Jest (Preferred Modern Setup)
| Solid
| Jest for Angular via jest-preset-angular, snapshot testing, ES module mocking. Mocking RxJS Observables and async operators.
|
| Test Quality Principles
| Strong — Senior Mindset
| Test pyramid (unit > integration > E2E). Tests verify behaviour, not implementation details. Avoids brittle selector chains or overspecified mocks. Can critique a poor test suite.
|
5. CI/CD & DevOps
| GitHub Actions / GitLab CI / Jenkins
| Expert — Deep in ≥1 Tool
| Multi-stage pipelines (lint → test → build → deploy), job dependencies, parallel stages, cache strategies, matrix builds. Secrets management. Debugs failing pipelines systematically.
|
| Docker & Containerisation
| Expert
| Multi-stage Dockerfiles with layer caching, non-root users, .dockerignore hygiene. Docker Compose for multi-service local dev. Debugs container startup failures independently.
|
| Cloud Deployment (AWS / GCP / Azure)
| Strong
| ECS/Fargate, Cloud Run, App Service, or Kubernetes. Rolling deployments, blue-green, canary releases. Detects bad deployments early and rolls back safely with zero data loss.
|
| Infrastructure as Code (Terraform preferred)
| Solid
| Terraform, AWS CDK, or CloudFormation. State management, module reuse, idempotent applies. Remote state backends (S3 + DynamoDB locking). Reasons about IaC drift.
|
| Observability & Quality Gates
| Strong — Senior Ownership Signal
| Quality gates in pipeline: coverage thresholds, SAST tools (Bandit, Semgrep), dependency vulnerability scanning. Structured JSON logging, Prometheus/CloudWatch metrics and alerting.
|
| Git Branching & Release Management
| Strong
| Gitflow and trunk-based development. Mono-repo pipelines for multiple services. Branch protection, mandatory PR reviews, semantic versioning with automated changelog generation.
|
|
|
|
|
Proficiency Legend
|
Expert
| Mandatory — deep, hands-on production experience required
|
Strong
| Expected — solid working knowledge with real project exposure
|
Solid
| Nice-to-have — competent working knowledge sufficient
|