Software Engineering
Backend Engineer
Behind every app a user touches, there's a quieter system doing the actual work — routing requests, holding state, refusing bad input politely. Backend engineers build and care for that hidden layer.
The role is part craft, part diplomacy: you're designing APIs that other engineers will lean on for years, and a careless schema choice can echo through a company for a long time. Good work here looks like code that's boring in the best way — predictable under load, easy for the next person to read, observable when something breaks.
Students grow into this role by getting comfortable with Python or another server language, then learning how databases really behave when traffic spikes.
- CodeFoundationalNew
Optimize a Slow Search Function for a Recipe Marketplace
Receive the current Python function (nested loop over (recipe_title, ingredient_list) pairs), the 400k-row dataset (CSV), and 20 representative queries. Step 1: write up the cur…
- Algorithm Analysis
- Big O
- Functions & Data Structures
Algorithm Design and Analysis - CodeBeginnerNew
Churn-Prediction Model for a B2B Vertical SaaS
Use 18 months of anonymized data (provided) covering: usage events, login frequency, support tickets, NPS responses, billing health, feature adoption, practice firmographics. De…
- Supervised Learning
- Python Or Javascript
- Ml Applications
Machine Learning (CS Elective) - CodeIntermediateNew
Build a BM25 + Embeddings Hybrid Search for a Legal-Tech Document Portal
Stand up an OpenSearch cluster with BM25 indexing on the 2.4M-document corpus. Generate dense embeddings (you choose the model; justify cost and quality trade-offs) and index th…
- Information Retrieval
- Bm25
- Vector Database Basics
Data Mining and Information Retrieval - CodeBeginnerNew
Structured Logging Migration for a Healthcare SaaS Monolith
Receive the current Lograge-flavored Rails logger and 3 sample log files (anonymized PHI). Design: a structured-log JSON schema (request_id, user_id, route, status, duration_ms,…
- Structured Logging
- Loki
- Phi Redaction
Software Observability Practice your coursework on real scenarios.
Every challenge is shaped from real-world context — not generic exercises. The work mirrors what your degree prepares you for.
Why Ewance
- CodeIntermediateNew
Build an Indexer for an On-Chain DeFi Analytics Product
Receive the 6 protocols' ABIs + the team's required event coverage spec (around 40 event types). Build a TypeScript indexer using viem + Postgres: subscribe to new blocks via We…
- Blockchain Indexing
- Typescript
- Ethereum
Blockchain and Decentralized Systems Engineering - AnalysisBeginnerNew
Choose a Hash Table vs Trie for a URL-Shortener Cache
Implement (1) a hash-table cache with linear probing and (2) a compressed trie cache, both with the same eviction policy (LRU). Measure (a) p50/p99 lookup latency, (b) memory fo…
- Hash Tables
- Trie Data Structure
- Benchmarking
Data Structures - CodeIntermediateNew
Forecasting Model for Online-Game Daily Active Users
Build forecasts at 14-day horizon per region using: (1) classical baseline — SARIMA or Prophet; (2) ML approach — gradient-boosted regressor on engineered features (day-of-week,…
- Supervised Learning
- Time Series Forecasting
- Python Or Javascript
Machine Learning (CS Elective) - CodeBeginnerNew
Implement Authentication and Access Control for a Civic Portal
Receive the current Next.js + Express prototype, the data model (residents, requests, documents, audit log), and the 4 staff roles (resident, clerk, supervisor, auditor) with th…
- Authentication
- Authorization
- Rbac
Introduction to Computer Security - Browse challenges
Explore role
Product Manager
Ship product that solves real user problems. Combine user research, prototyping, and stakeholder alignment to turn ambiguous briefs into measurable wins — the role at the centre of modern software teams.
- CodeIntermediateNew
Design a Change-Data-Capture Pipeline for an E-Commerce Reseller
Receive the MySQL schema (220 tables), 7 days of binlog samples, and the data team's freshness + correctness requirements. Design the CDC pipeline: Debezium for MySQL binlog cap…
- Change Data Capture
- Debezium
- Kafka Event Streaming
Big Data and Data-Intensive Systems - CodeIntermediateNew
Parallelize a Monte Carlo Risk Engine for a Quant Hedge Fund
Profile the existing engine (C++17, single-threaded). Identify the parallelism axis (per-path independence is the obvious one — but watch for the global RNG bottleneck). Impleme…
- Parallel Algorithms
- Shared Memory
- Work Stealing
Parallel and Distributed Algorithms - CodeIntermediateNew
Refactor a Big-Ball-of-Mud Java Servlet Application
Week 1: install JUnit 5 + Testcontainers harness, write characterization tests for the 2 target workflows (PolicyIssue + ClaimSubmit) reaching at least 80 percent branch coverag…
- Refactoring
- Characterization Testing
- Legacy Systems
Software Evolution and Maintenance - CodeIntermediateNew
Build an Event-Sourced Inventory System for a Warehouse
Design the event model: 12-15 events covering the warehouse lifecycle. Implement using EventStoreDB (or Kafka + a snapshotting projection layer) in Go or C#. Build at least 3 re…
- Event Sourcing
- Cqrs
- Eventstoredb
Event-Driven Architecture Build a verifiable portfolio.
Submissions become evidence. Reviewers with shipping experience score against a rubric; the result becomes a credential anyone can verify.
Why Ewance
- CodeSeniorNew
Build a Real-Time Cascade Detection Pipeline for a Trading Platform
Receive 6 months of anonymized trade events (timestamp, ticker, side, volume, account_segment) plus a static follower graph among 50k 'top trader' accounts. Build a streaming pi…
- Streaming
- Network Science
- Graph Analysis
Network Science and Computational Social Science - AnalysisBeginnerNew
Pick a NoSQL Store for an Event-Stream Sidecar Cache
Set up identical 3-node clusters of Redis 7, KeyDB, and DragonflyDB on equivalent hardware. Run the team's captured 24-hour workload trace (around 180k ops/second, 80/20 read/wr…
- Nosql
- Redis
- Benchmarking
Introduction to Database Systems - CodeIntermediateNew
Build a User-Space File System with FUSE for a Storage Startup
Build a FUSE driver (your choice of Rust + fuser crate or Go + bazil/fuse) that proxies POSIX operations to the startup's existing S3-compatible REST API (mock provided). Suppor…
- File Systems
- Fuse
- Rust Programming
Operating Systems - CodeFoundationalNew
Replace a Naive List with a Heap in a Delivery Dispatcher
Read the current dispatcher source (around 400 lines of Python). Identify the linear scan and the operations that touch it (insert, decrease-key on a re-scored courier, extract-…
- Heap Data Structure
- Complexity Analysis
- Python Or Javascript
Data Structures - CodeIntermediateNew
Build a Real-Time Fraud-Detection Stream for a Card Issuer
Design the stream topology: authorization events in, customer-feature state (30-day rolling) maintained in state store, scoring function applied per event, fraud-score emitted t…
- Apache Flink
- Kafka Streams
- Stream Processing
Event-Driven Architecture - CodeIntermediateNew
Implement Bulk Synchronous Parallel PageRank on a 1.5B-Edge Graph
Choose either Apache Spark + GraphX (Pregel API) or a vanilla MPI + C++ implementation. Run 25 iterations of PageRank on the 1.5B-edge graph (graph file format provided: CSR par…
- Parallel Algorithms
- Bsp
- Graph Algorithms
Parallel and Distributed Algorithms - CodeIntermediateNew
Build a Streaming Pipeline for Real-Time Fraud Detection
Receive 30 days of anonymized card-transaction events (around 240M events total), the team's existing batch features (cardholder behavior summaries), and a pre-trained fraud-sco…
- Stream Processing
- Kafka Event Streaming
- Flink
Big Data and Data-Intensive Systems - CodeIntermediateNew
Randomized Sketch Algorithm for Stream Cardinality
Read the HLL paper (Flajolet et al., 2007) and a sample of 30 minutes of customer trace IDs (around 80M events). Implement HLL from scratch in Go (no library imports). Run bench…
- Randomized Algorithms
- Sketching
- Algorithm Analysis
Advanced Algorithms - CodeBeginnerNew
Build a Bounded Concurrent Queue for a Microservice Worker Pool
Implement a bounded concurrent queue in Go (no third-party queue libraries; standard library + sync primitives only) that supports: Put(item) blocks when full, TryPut(item, time…
- Concurrent Data Structures
- Mutex And Condvar
- Systems Language Proficiency (Go, Rust, C++)
Concurrent and Parallel Programming - CodeBeginnerNew
Build an Embedding-Based Semantic Search for a Legal-Document Corpus
Embed the 380k-document corpus using a multilingual sentence-transformer (e.g. multilingual MPNet or LaBSE). Store embeddings in FAISS or pgvector. Build a search service that r…
- Deep Learning
- Ml Applications
- Python Or Javascript
Machine Learning (CS Elective) - CodeBeginnerNew
Build a Reliable Transport Layer Over UDP
Implement in Go: connection establishment (3-way handshake), sequenced and acknowledged data segments, retransmission timer with exponential backoff, fast retransmit on triple d…
- Tcp Ip
- Reliable Transport
- Udp
Computer Networks - CodeFoundationalNew
Rule-Based Intent Classifier for a Customer-Support Triage Bot
Build a rule-based classifier in Python that runs ordered rules (regex + keyword + simple heuristics) against ticket subject + body. Use a hierarchical rule structure (high-prec…
- Knowledge Representation
- Rule Based Systems
- Python Or Javascript
Introduction to Artificial Intelligence (CS Elective) - AnalysisBeginnerNew
Customer-Segmentation Study for a DTC Subscription Box
Use 18 months of anonymized data: order history, churn events, NPS responses, box-rating data, referral activity, marketing-channel attribution. Engineer features (RFM-style + b…
- Unsupervised Learning
- Python Or Javascript
- Ml Applications
Machine Learning (CS Elective) - CodeIntermediateNew
Implement a Persistent Immutable List for a Collaborative-Editing Startup
Implement in Python (or TypeScript / Kotlin). Build a persistent immutable list with operations: get, set, append, pop, slice, concat. Use structural sharing (32-way vector trie…
- Data Abstraction
- Recursion
- Persistent Data Structures
Programming Abstractions - CodeIntermediateNew
Strangler-Fig Migration of a Monolithic Order Service
Stand up an HTTP facade in front of the monolith (Nginx or a small Go proxy) that routes by URL pattern. Slice 1: extract the order-status read endpoint, dual-write nothing, rou…
- Strangler Fig Pattern
- Refactoring
- Legacy Modernization
Refactoring and Code Smell Detection - AnalysisBeginnerNew
Developer-Experience Audit of a Public API
Walk through the existing public API as a first-time developer using only the public docs, OpenAPI spec, SDKs (Python + JavaScript), and example repos. Run the first-hour test 3…
- Developer Experience
- REST API Design
- Audit Grade Documentation
API Design and GraphQL - CodeBeginnerNew
Knowledge-Graph Recommender for a Niche Online Bookstore
Model the catalog as a knowledge graph (nodes: books, authors, genres, themes, eras, awards; edges: wrote, in-genre, has-theme, won, similar-to). Use Neo4j or a simple Python in…
- Knowledge Representation
- Knowledge Graphs
- Python Or Javascript
Introduction to Artificial Intelligence (CS Elective) - CodeIntermediateNew
Specification-First Refactor of a Payments Module
Read the module, the last 12 months of incidents touching it, and the existing tests. Write a 6-page specification using a precondition / postcondition / invariant format per pu…
- Specifications
- Refactoring
- Characterization Testing
Software Construction - CodeSeniorNew
Design a Raft-Based Consensus Layer for a Multi-Region Database
Implement Raft in Go per the original Ongaro-Ousterhout paper: leader election, log replication with the safety property, snapshotting at 10K-entry granularity, and joint-consen…
- Distributed Consensus
- Raft
- Fault Tolerance
Parallel and Distributed Algorithms - CodeIntermediateNew
Repository + Unit-of-Work Refactor on an EF Core Codebase
Read the data-access patterns across the 5 bounded contexts (Payroll, Timesheets, Benefits, Org, Reporting) and tag the 12 worst N+1 incidents from the last quarter's traces. Au…
- Repository Pattern
- Unit Of Work
- Design Patterns
Software Design and Design Patterns - CodeIntermediateNew
Bloom Filter Cache to Cut Origin Load at a CDN Edge
Given a target false-positive rate of 1 percent at 200 million keys per shard, compute the optimal bit-array size (m) and hash-function count (k) using the canonical formulas. I…
- Bloom Filters
- Probabilistic Data Structures
- Hash Functions
Randomized Algorithms - CodeIntermediateNew
Build a GraphQL Federation Schema for an E-Commerce Platform
Receive the existing 22 REST endpoints' OpenAPI specs and a list of 5 priority subgraphs. Design a federated GraphQL schema using Apollo Federation v2 directives (@key, @externa…
- REST API Design
- Graphql Federation
- REST API Design
API Design and GraphQL - DesignIntermediateNew
Design a Versioning Strategy for a Public REST API
Receive the OpenAPI spec for the 14 endpoints, 8 months of partner-support tickets tagged 'breaking-change', and the partner-mix breakdown (which endpoints which partner uses). …
- REST API Design
- REST API Design
- API Versioning
API Design and GraphQL - CodeIntermediateNew
Refactor a God-Object Order Service with Strategy + Command
Read OrderService and the last 18 months of bug tickets touching it. Author a 5-page design document showing the current class diagram, the target Strategy-per-order-type + Comm…
- Design Patterns
- Refactoring
- Strategy Pattern
Software Design and Design Patterns - CodeIntermediateNew
Stand Up Contract Testing for a Microservices Backend
Inventory the 18 services and pick the 6 producer-consumer pairs with the most staging breakages in the last 90 days. Stand up a Pact broker (self-hosted or PactFlow trial). For…
- Contract Testing
- Pact
- Microservices Patterns
Software Testing and Quality Assurance - CodeSeniorNew
Implement Raft Consensus for a Self-Hosted Feature-Flag Service
Implement the core Raft algorithm (leader election, log replication, snapshotting) from the original Ongaro & Ousterhout paper. Use an embedded key-value store (BoltDB or sled) …
- Raft Consensus
- Go Programming
- Grpc
Distributed Systems - DesignIntermediateNew
Migrate a 200TB Data Lake from Parquet to Iceberg
Receive an inventory of the 200TB hot tier (around 1,200 tables, around 38 PB of historical data referenced), the current Spark + Trino read patterns, and 6 months of schema-cha…
- Iceberg
- Parquet
- Data Lake
Big Data and Data-Intensive Systems - CodeIntermediateNew
Multi-Tenant Schema Migration for a Series-B HR SaaS
Design a 4-phase migration: (1) add new columns + tables, dual-write on every workflow mutation, (2) backfill 3.4 TB in chunks of around 50k rows per minute with throttling and …
- Multi Tenant Architecture
- Schema Migration
- Dual Write
Engineering Software as a Service - CodeFoundationalNew
Parallelize an Image-Processing Pipeline with Data Parallelism
Receive the current pipeline (Python 3.12, ~600 lines, uses Pillow + ffmpeg), a representative batch (1,000 images averaging 3MB each), and host specs (16 cores, 32GB RAM). Rewr…
- Data Parallelism
- Python Or Javascript
- Multiprocessing
Concurrent and Parallel Programming - CodeBeginnerNew
Diagnose and Fix a Deadlock in a Multi-Threaded Payments Service
Receive the service source (Java 21 + Spring Boot, around 30,000 lines), 4 thread dumps from production deadlocks, and a load harness that reproduces the bug roughly 1 in 50 run…
- Deadlock Analysis
- Locks And Monitors
- Python Or Javascript
Concurrent and Parallel Programming - DesignIntermediateNew
Migrate a RabbitMQ Topology to Kafka for a Healthcare SaaS
Analyze the current RabbitMQ topology + 30 days of message volume data. Map each queue to a Kafka topic with the right partition key (likely patient_id, encounter_id, or clinic_…
- Kafka Event Streaming
- Rabbitmq
- Message Broker Migration
Event-Driven Architecture - CodeSeniorNew
Abstract-Interpretation-Based Configuration Validator for a SaaS Platform
Define an abstract domain capturing relations between configuration fields (e.g. 'if billing.plan = enterprise then features.audit_log = true'). Implement an abstract-interpreta…
- Abstract Interpretation
- Static Analysis
- Rust Programming
Program Analysis - CodeIntermediateNew
Design a Lock-Free Concurrent Queue for an Event Bus
Implement an MPSC (multi-producer single-consumer) ring-buffer queue in Go using atomic operations only — no mutexes. Prove correctness with the Go race detector across 8 produc…
- Concurrent Data Structures
- Lock Free Programming
- Systems Language Proficiency (Go, Rust, C++)
Data Structures - AnalysisBeginnerNew
Profile and Optimize a Virtual-Memory-Heavy Image Pipeline
Receive the Go pipeline source, a representative batch (1,200 photos averaging 12MB each, with 30 outliers over 80MB), and host specs (4-core, 16GB RAM, Linux kernel 5.15). Run …
- Virtual Memory
- Performance Profiling
- Memory Hierarchy
Computer Systems and Organization - CodeIntermediateNew
Apply Hexagonal Architecture to a Payments Microservice
Design the settlement domain in pure Kotlin (no Spring imports, no framework annotations). Define ports for: payment-network adapter (one inbound per network — SEPA, Faster Paym…
- Hexagonal Architecture
- Ports And Adapters
- Kotlin Programming
Domain-Driven Design - CodeBeginnerNew
Design a Race-Free Cache for a Read-Heavy Service
Implement a thread-safe LRU-bounded cache in Java (or Go — your choice, defend it) with: read-write lock or copy-on-write semantics, get-or-load pattern with single-flight to de…
- Concurrent Data Structures
- Race Conditions
- Single Flight
Concurrent and Parallel Programming - CodeIntermediateNew
Multi-Tenant SaaS Backend with Postgres Row Security
Design the multi-tenant schema: shared tables with a tenant_id column, indexed appropriately. Write a forward + backward migration (using Drizzle or Prisma). Implement Postgres …
- Multi Tenant Architecture
- Postgresql Or Mysql
- Row Level Security
Web Application Development - CodeIntermediateNew
Debug a Race Condition in a Real-Time Collaboration Service
Build a deterministic load-test harness (k6 or Playwright) that reproduces the corruption within 3 attempts on a clean local stack. Capture traces with OpenTelemetry to localize…
- Debugging
- Concurrency
- Load Testing
Software Construction - CodeSeniorNew
Design a Lock-Free Concurrent Skip List for a Time-Series Database
Implement Fraser's lock-free skip list in Rust with marked pointers for logical deletion. Validate under loom for all interleavings up to 4 threads (or use shuttle if loom can't…
- Lock Free
- Concurrent Data Structures
- Rust Programming
Parallel and Distributed Algorithms - CodeIntermediateNew
Strangler-Fig Modernization of a Healthcare Reporting Service
Audit the report categories (around 14) and pick operating-theater utilization for the pilot extraction (high volume, moderate complexity, low regulatory blast-radius). Design t…
- Strangler Fig
- Legacy Systems
- Feature Flags
Software Evolution and Maintenance - CodeIntermediateNew
Property-Based Testing for a SEPA Payments Library
Read the SEPA Pain.001 XSD (XML Schema Definition) and pick 5 invariants the parser MUST preserve (e.g., 'sum of transactions equals control sum', 'IBAN passes mod-97 check', 'c…
- Property Based Testing
- Fuzz Testing
- Systems Language Proficiency (Go, Rust, C++)
Software Testing and Quality Assurance - CodeSeniorNew
HyperLogLog Cardinality for Real-Time Ad-Auction Analytics
Implement HyperLogLog with precision parameter p in {12, 14, 16} (4KB, 16KB, 64KB sketches) and benchmark relative error on a replayed 3-hour production trace (around 13 billion…
- Hyperloglog
- Probabilistic Data Structures
- Streaming Systems
Randomized Algorithms - CodeIntermediateNew
Add Idempotency Keys to a Payment Webhook System
Read the current Go webhook-sender code and 30 days of duplicate-delivery incident logs. Design the idempotency scheme: server-generated key per event (UUID v7 — time-ordered), …
- REST API Design
- Idempotency
- Webhooks
API Design and GraphQL - CodeIntermediateNew
Design a Saga Orchestrator for a Cross-Border Payments Flow
Model the payment flow as a saga: 6 forward steps + their compensations. Choose between orchestration (Temporal) and choreography (event-driven via Kafka) and defend the choice.…
- Saga Pattern
- Temporal Workflow
- Compensation Logic
Event-Driven Architecture - CodeIntermediateNew
Implement Federated Learning for a Government Statistics Office
Use Flower as the FL framework. Simulate 8 municipalities each with a partition of a synthetic wage dataset (provided, 1M rows, EU-Labour-Force-Survey schema). Train a gradient-…
- Federated Learning
- Differential Privacy
- Python Or Javascript
Privacy-Enhancing Technologies - CodeBeginnerNew
Refactor a Node.js Service into Scala with Effect Systems
Take the existing Node.js price-normalization code (provided). Rewrite in Scala 3 using ZIO (or Cats Effect) — model every effect explicitly (IO for side effects, Either or type…
- Scala Programming
- Zio Effects
- Cats Effect
Functional Programming - AnalysisIntermediateNew
Cost-Profile a Spark Job at Scale and Cut the Bill in Half
Receive the PySpark job (around 1,800 lines), 5 nights of Spark UI + EMR metrics, and the EMR cluster config. Profile to find the top 3 cost drivers (likely candidates: skewed j…
- Apache Spark
- Finops & Cost Optimization
- Etl Pipelines
Big Data and Data-Intensive Systems
How it works
From brief to credential, in six steps.
Step 01
Browse challenges aligned to your studies.
Step 02
Accept the one that fits your goals.
Step 03
Work through it with AI Copilot guidance.
Step 04
Submit for structured evaluation.
Step 05
Earn a verified credential.
Step 06
Add it to LinkedIn with one click.
Related roles you may want to explore
Browse all roles →Software Engineering
Frontend Engineer
Every button a user clicks, every loading state they wait through, every form that almost-but-not-quite works, all of it passed through a frontend engineer's editor. This is the discipline that decides how software feels. The role lives at a peculiar intersection of design empathy, performance budgets, and accessibility standards, which is why students who like both visual craft and systems thinking often find a home here. You'd grow into it by building real things in React or Next.js, reading other people's code, and developing taste for what feels right. Tools like GitHub Copilot accelerate the typing; the judgement about when to refactor and when to ship is still yours. Strong frontend engineers care that a screen reader can navigate their work.
Software Engineering
Full-Stack Engineer
Picture the small startup team where one engineer ships a feature from the database schema to the deployed button. That generalist mindset is what the full-stack engineer brings, even at larger companies. The role exists because most useful software doesn't respect the boundary between client and server, and someone needs to reason about both. Students grow into this by being curious past their comfort zone, picking up PostgreSQL when they came for React, learning OAuth flows when they came for UI. The work rewards people who'd rather understand a whole system than perfect one slice of it. Strong full-stack engineers know when to ask a specialist for help, which is itself a skill worth developing early.
Software Engineering
Mobile Engineer
Open the app on your phone and tap something. The fact that it responded instantly, didn't drain your battery, and worked on a five-year-old device is not an accident — a mobile engineer obsessed over that. This role is for people who care about craft at the interface where software meets a human's pocket. Expect days writing native code against the Android SDK or iOS, profiling animations, fighting flaky tests, and shepherding releases through App Store Connect. Students grow into it by shipping their own small app and feeling the gap between a demo and something a stranger would actually use. Strong mobile engineers treat accessibility as a baseline, not a feature.
Software Engineering
Software Engineer
US$163,883
Software engineers turn intent into code that other people rely on, often without ever meeting them. The craft is broader than the languages — Python, Go, Java rotate in and out of fashion — and centers on judgment: which abstraction to introduce, which test to write first, which review comment matters and which is taste dressed up as principle. AI tools like Copilot and Claude Code accelerate the typing but raise the bar on knowing what to build. Strong engineers care about the people who'll maintain their code in two years, including their future selves. Students drawn to this path often started building things in high school and never stopped. Growth comes from shipping real systems, taking ownership when they break, and reading code written by people better than you.
Industry teams behind a decade of practitioner briefs
Hiring from this pool?
Sponsor a challenge and meet candidates through actual work.
Industry teams can shape briefs around the skills they hire for, then evaluate students on rubric-scored deliverables — not resumes.
Skills and disciplines shown on this page are derived from the Ewance challenge catalogue. When the median annual salary is available for this role via Adzuna, it will be shown above with the sample size and country.
Portrait: Photo by Muhammad Numan on Unsplash.



















































































