{"slug":"backend-developer","snapshot":{"role":"backend","label":"Backend Developer","degree":[{"count":1294,"share":60,"value":"none_mentioned"},{"count":518,"share":24,"value":"required"},{"count":263,"share":12.2,"value":"or_equivalent"},{"count":83,"share":3.8,"value":"preferred"}],"salary":{"markets":[{"n":624,"p25":178000,"p75":230000,"median":203000,"country":"US","coverage":68.1,"currency":"USD","medianMax":235000,"medianMin":172000,"bySeniority":[{"n":257,"p25":175000,"p75":220000,"level":"senior","median":200000},{"n":145,"p25":210000,"p75":259000,"level":"staff","median":233000}]},{"n":61,"p25":140000,"p75":188000,"median":166000,"country":"CA","coverage":38.1,"currency":"CAD","medianMax":192000,"medianMin":140000,"bySeniority":[{"n":30,"p25":141000,"p75":183000,"level":"senior","median":165000}]}],"coverage":37.4,"minSample":30},"skills":[{"slug":"sql","label":"SQL / databases","share":64,"margin":2,"category":"backend","requiredShare":58.4},{"slug":"aws","label":"AWS","share":48.6,"margin":2.1,"category":"cloud","requiredShare":39.2},{"slug":"java","label":"Java / Kotlin (backend)","share":41.2,"margin":2.1,"category":"backend","requiredShare":39.2},{"slug":"python","label":"Python","share":40.3,"margin":2.1,"category":"backend","requiredShare":37.2},{"slug":"messaging","label":"Message queues / event streaming","share":38.7,"margin":2.1,"category":"backend","requiredShare":31},{"slug":"kubernetes","label":"Kubernetes","share":38.5,"margin":2.1,"category":"cloud","requiredShare":29.3},{"slug":"distributed-systems","label":"Distributed systems","share":37.2,"margin":2,"category":"backend","requiredShare":34.6},{"slug":"ci-cd","label":"CI/CD","share":34.2,"margin":2,"category":"practice","requiredShare":29.2},{"slug":"code-review","label":"Code review","share":33.1,"margin":2,"category":"practice","requiredShare":32.7},{"slug":"docker","label":"Docker / containers","share":32.8,"margin":2,"category":"cloud","requiredShare":25.1},{"slug":"observability","label":"Monitoring & analytics","share":32.4,"margin":2,"category":"quality","requiredShare":29.1},{"slug":"mentoring","label":"Mentoring","share":31.6,"margin":2,"category":"practice","requiredShare":30.9},{"slug":"performance","label":"Performance tuning (latency, throughput)","share":30.2,"margin":1.9,"category":"backend","requiredShare":27.8},{"slug":"go","label":"Go","share":27.9,"margin":1.9,"category":"backend","requiredShare":25.5},{"slug":"testing","label":"Automated testing","share":27.7,"margin":1.9,"category":"testing","requiredShare":26.7},{"slug":"rest","label":"REST APIs","share":27,"margin":1.9,"category":"api","requiredShare":25.4},{"slug":"microservices","label":"Microservices","share":26.4,"margin":1.9,"category":"backend","requiredShare":24.4},{"slug":"ai-tools","label":"AI coding tools","share":26.2,"margin":1.9,"category":"ai","requiredShare":24.3},{"slug":"system-design","label":"Architecture / system design","share":25.4,"margin":1.8,"category":"practice","requiredShare":24.7},{"slug":"nosql","label":"NoSQL (MongoDB, DynamoDB…)","share":25.1,"margin":1.8,"category":"backend","requiredShare":21},{"slug":"gcp","label":"Google Cloud","share":22.4,"margin":1.8,"category":"cloud","requiredShare":17.5},{"slug":"api-design","label":"API design","share":21.4,"margin":1.7,"category":"api","requiredShare":19.3},{"slug":"caching","label":"Redis / caching","share":20.7,"margin":1.7,"category":"backend","requiredShare":16.8},{"slug":"git","label":"Git","share":18.6,"margin":1.6,"category":"practice","requiredShare":16.9},{"slug":"typescript","label":"TypeScript","share":17.9,"margin":1.6,"category":"language","requiredShare":14.6},{"slug":"agile","label":"Agile / Scrum","share":17.8,"margin":1.6,"category":"practice","requiredShare":15.9},{"slug":"azure","label":"Azure","share":17.2,"margin":1.6,"category":"cloud","requiredShare":13.9},{"slug":"llm-apps","label":"Building LLM features","share":17,"margin":1.6,"category":"ai","requiredShare":12.9},{"slug":"data-pipelines","label":"Data pipelines (Spark, Airflow, ETL)","share":15.3,"margin":1.5,"category":"backend","requiredShare":12.5},{"slug":"iac","label":"Infrastructure as code (Terraform)","share":15.3,"margin":1.5,"category":"cloud","requiredShare":10.7},{"slug":"node","label":"Node.js","share":14.4,"margin":1.5,"category":"backend","requiredShare":12.6},{"slug":"concurrency","label":"Concurrency / multithreading","share":11.3,"margin":1.3,"category":"backend","requiredShare":10.7},{"slug":"react","label":"React","share":11.1,"margin":1.3,"category":"framework","requiredShare":7.2},{"slug":"dotnet","label":".NET / C#","share":10.1,"margin":1.3,"category":"backend","requiredShare":9.8},{"slug":"cpp","label":"C++","share":8.3,"margin":1.2,"category":"backend","requiredShare":7.2},{"slug":"javascript","label":"JavaScript","share":8.2,"margin":1.2,"category":"language","requiredShare":6},{"slug":"rust","label":"Rust","share":8,"margin":1.1,"category":"backend","requiredShare":7},{"slug":"linux","label":"Linux","share":7.9,"margin":1.1,"category":"backend","requiredShare":7.2},{"slug":"auth","label":"Authentication (OAuth, SSO)","share":7.6,"margin":1.1,"category":"backend","requiredShare":6.3},{"slug":"graphql","label":"GraphQL","share":7.6,"margin":1.1,"category":"api","requiredShare":5.7},{"slug":"search","label":"Search (Elasticsearch)","share":7.4,"margin":1.1,"category":"backend","requiredShare":5.3},{"slug":"ux-collab","label":"Working with designers / UX","share":5.6,"margin":1,"category":"design","requiredShare":5.5},{"slug":"scala","label":"Scala","share":5.2,"margin":0.9,"category":"backend","requiredShare":4.6},{"slug":"ruby","label":"Ruby / Rails","share":5,"margin":0.9,"category":"backend","requiredShare":4.4},{"slug":"serverless","label":"Serverless","share":4.3,"margin":0.9,"category":"cloud","requiredShare":3.3},{"slug":"web-security","label":"Web security","share":4,"margin":0.8,"category":"quality","requiredShare":3.5},{"slug":"websockets","label":"WebSockets / real-time","share":3.7,"margin":0.8,"category":"api","requiredShare":2.8},{"slug":"e2e","label":"End-to-end testing (Cypress, Playwright)","share":3.2,"margin":0.7,"category":"testing","requiredShare":2.8},{"slug":"php","label":"PHP","share":2.5,"margin":0.7,"category":"backend","requiredShare":2.2},{"slug":"angular","label":"Angular","share":2.4,"margin":0.6,"category":"framework","requiredShare":1.3},{"slug":"nextjs","label":"Next.js","share":2.1,"margin":0.6,"category":"meta-framework","requiredShare":1.4},{"slug":"css","label":"CSS","share":2,"margin":0.6,"category":"language","requiredShare":1.3},{"slug":"web-performance","label":"Web performance","share":2,"margin":0.6,"category":"quality","requiredShare":1.9},{"slug":"html","label":"HTML","share":1.9,"margin":0.6,"category":"language","requiredShare":1.2},{"slug":"vue","label":"Vue","share":1.8,"margin":0.6,"category":"framework","requiredShare":1.2},{"slug":"design-systems","label":"Design systems","share":1.5,"margin":0.5,"category":"design","requiredShare":1.2},{"slug":"elixir","label":"Elixir / Erlang","share":1.5,"margin":0.5,"category":"backend","requiredShare":1.4},{"slug":"edge","label":"Vercel / Netlify / edge","share":1.3,"margin":0.5,"category":"cloud","requiredShare":1.1},{"slug":"react-native","label":"React Native","share":1.1,"margin":0.4,"category":"mobile","requiredShare":0.6},{"slug":"state-management","label":"State management","share":1.1,"margin":0.4,"category":"state","requiredShare":0.8},{"slug":"accessibility","label":"Accessibility (WCAG)","share":1.1,"margin":0.4,"category":"quality","requiredShare":0.8},{"slug":"data-viz","label":"Data visualisation","share":0.9,"margin":0.4,"category":"graphics","requiredShare":0.6},{"slug":"jest","label":"Jest / Vitest","share":0.8,"margin":0.4,"category":"testing","requiredShare":0.6},{"slug":"responsive-design","label":"Responsive design","share":0.8,"margin":0.4,"category":"design","requiredShare":0.6},{"slug":"tailwind","label":"Tailwind CSS","share":0.6,"margin":0.3,"category":"styling","requiredShare":0.4},{"slug":"component-libraries","label":"Component libraries (MUI, Radix…)","share":0.5,"margin":0.3,"category":"styling","requiredShare":0.3},{"slug":"monorepo","label":"Monorepos (Nx, Turborepo)","share":0.5,"margin":0.3,"category":"build","requiredShare":0.4},{"slug":"redux","label":"Redux","share":0.5,"margin":0.3,"category":"state","requiredShare":0.4},{"slug":"figma","label":"Figma","share":0.5,"margin":0.3,"category":"design","requiredShare":0.4},{"slug":"i18n","label":"Internationalisation","share":0.4,"margin":0.3,"category":"quality","requiredShare":0.3},{"slug":"jquery","label":"jQuery","share":0.4,"margin":0.3,"category":"framework","requiredShare":0.2},{"slug":"flutter","label":"Flutter","share":0.3,"margin":0.2,"category":"mobile","requiredShare":0.2},{"slug":"browser-internals","label":"Browser internals / DOM","share":0.3,"margin":0.2,"category":"quality","requiredShare":0.3},{"slug":"ember","label":"Ember.js","share":0.2,"margin":0.2,"category":"framework","requiredShare":0.2},{"slug":"css-in-js","label":"CSS-in-JS","share":0.2,"margin":0.2,"category":"styling","requiredShare":0},{"slug":"pwa","label":"Progressive web apps","share":0.2,"margin":0.2,"category":"meta-framework","requiredShare":0.1},{"slug":"vite","label":"Vite","share":0.2,"margin":0.2,"category":"build","requiredShare":0.1},{"slug":"storybook","label":"Storybook","share":0.1,"margin":0.2,"category":"testing","requiredShare":0},{"slug":"webgl","label":"WebGL / 3D / Canvas","share":0.1,"margin":0.2,"category":"graphics","requiredShare":0.1},{"slug":"svelte","label":"Svelte","share":0.1,"margin":0.2,"category":"framework","requiredShare":0},{"slug":"solid","label":"SolidJS","share":0.1,"margin":0.1,"category":"framework","requiredShare":0.1},{"slug":"seo","label":"SEO","share":0.1,"margin":0.1,"category":"quality","requiredShare":0.1},{"slug":"ssr","label":"Server-side rendering","share":0.1,"margin":0.1,"category":"meta-framework","requiredShare":0.1},{"slug":"spa","label":"Single-page apps","share":0.1,"margin":0.1,"category":"meta-framework","requiredShare":0},{"slug":"wasm","label":"WebAssembly","share":0.1,"margin":0.1,"category":"graphics","requiredShare":0},{"slug":"tanstack-query","label":"TanStack Query","share":0.1,"margin":0.1,"category":"state","requiredShare":0.1},{"slug":"nuxt","label":"Nuxt","share":0,"margin":0.1,"category":"meta-framework","requiredShare":0},{"slug":"bundlers","label":"Other bundlers (esbuild, Rollup…)","share":0,"margin":0.1,"category":"build","requiredShare":0},{"slug":"web-components","label":"Web Components","share":0,"margin":0.1,"category":"framework","requiredShare":0},{"slug":"trpc","label":"tRPC","share":0,"margin":0.1,"category":"api","requiredShare":0},{"slug":"css-modules","label":"CSS Modules","share":0,"margin":0.1,"category":"styling","requiredShare":0},{"slug":"micro-frontends","label":"Micro-frontends","share":0,"margin":0.1,"category":"meta-framework","requiredShare":0}],"sources":["Greenhouse","Lever","Ashby"],"postings":{"raw":2619,"unique":2158,"companies":1013},"countries":[{"count":808,"share":37.4,"value":"US"},{"count":212,"share":9.8,"value":"IN"},{"count":160,"share":7.4,"value":"CA"},{"count":153,"share":7.1,"value":"GB"},{"count":108,"share":5,"value":"unknown"},{"count":84,"share":3.9,"value":"BR"},{"count":77,"share":3.6,"value":"PL"},{"count":71,"share":3.3,"value":"DE"},{"count":60,"share":2.8,"value":"ES"},{"count":48,"share":2.2,"value":"CZ"},{"count":46,"share":2.1,"value":"KR"},{"count":39,"share":1.8,"value":"BG"}],"crawledAt":"2026-11-13","seniority":[{"count":937,"share":43.4,"value":"senior"},{"count":699,"share":32.4,"value":"none"},{"count":364,"share":16.9,"value":"staff"},{"count":59,"share":2.7,"value":"lead"},{"count":48,"share":2.2,"value":"mid"},{"count":27,"share":1.3,"value":"intern"},{"count":24,"share":1.1,"value":"junior"}],"workplace":[{"count":947,"share":43.9,"value":"none"},{"count":513,"share":23.8,"value":"remote"},{"count":449,"share":20.8,"value":"hybrid"},{"count":249,"share":11.5,"value":"onsite"}],"experience":{"median":5,"buckets":[{"count":915,"share":42.4,"value":"none"},{"count":371,"share":17.2,"value":"5"},{"count":216,"share":10,"value":"8+"},{"count":177,"share":8.2,"value":"3"},{"count":134,"share":6.2,"value":"2"},{"count":117,"share":5.4,"value":"4"},{"count":100,"share":4.6,"value":"7"},{"count":94,"share":4.4,"value":"6"},{"count":30,"share":1.4,"value":"1"},{"count":4,"share":0.2,"value":"0"}],"statedShare":57.6},"generatedAt":"2026-11-13","extractVersion":"skills-v0.8"},"validation":{"labelled":200,"salaryAudit":{"checked":60,"correct":57},"skillRecall":99,"rolePrecision":90,"skillPrecision":96},"assessmentRole":"backend","stack":{"path":"/careers/backend-developer/tech-stack","core":{"label":"Java / Kotlin (backend)","share":41.3},"picks":[{"label":"SQL / databases","share":61.9},{"label":"AWS","share":44.4},{"label":"REST APIs","share":42.1},{"label":"Kubernetes","share":39.4}],"pickMin":15},"license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/","credit":"Coursecrit, https://coursecrit.com/careers/backend-developer","attributions":["Company list: LastRound AI ATS Company Directory (https://datahub.io/lastroundai-hiring-data/lastroundai-hiring-data/ats-directory), CC BY 4.0","Job postings: public job boards on Greenhouse, Lever and Ashby. Only aggregate counts are published, never posting text."]}}