Updated 2026-08-15 ยท period n/a to n/a
Salary Plus Demand Quadrant Report
This report compares demand-share movement with advertised salary movement. Technologies are placed in a quadrant only when both demand and salary samples clear the gate.
Salary plus demand quadrants
Demand movement uses demand-share change. Salary movement is shown only when salary samples clear the gate. Missing data stays missing.
| Tech | Quadrant | Posts | Demand change | Salary n | Salary change |
|---|---|---|---|---|---|
| Artificial Intelligence | Insufficient sample | 133 | -11.9% | 0 | sample gated |
| Python | Insufficient sample | 63 | -25% | 0 | sample gated |
| Full Stack | Insufficient sample | 62 | -30.3% | 0 | sample gated |
| TypeScript | Insufficient sample | 58 | -17.1% | 0 | sample gated |
| Backend | Insufficient sample | 57 | -24% | 0 | sample gated |
| React | Insufficient sample | 51 | -22.7% | 0 | sample gated |
| PostgreSQL | Insufficient sample | 47 | -11.3% | 0 | sample gated |
| Machine Learning | Insufficient sample | 39 | -20.4% | 0 | sample gated |
| AWS | Insufficient sample | 37 | -28.8% | 0 | sample gated |
| Kubernetes | Insufficient sample | 26 | 18.2% | 0 | sample gated |
| Golang | Insufficient sample | 26 | -38.1% | 0 | sample gated |
| LLM | Insufficient sample | 25 | 0% | 0 | sample gated |
| Frontend | Insufficient sample | 25 | -28.6% | 0 | sample gated |
| Node.js | Insufficient sample | 24 | -22.6% | 0 | sample gated |
| API | Insufficient sample | 20 | -9.1% | 0 | sample gated |
| Docker | Insufficient sample | 17 | 0% | 0 | sample gated |
| Rust | Insufficient sample | 15 | -44.4% | 0 | sample gated |
| Terraform | Insufficient sample | 14 | 0% | 0 | sample gated |
| DevOps | Insufficient sample | 14 | -51.7% | 0 | sample gated |
| GitHub | Insufficient sample | 13 | 8.3% | 0 | sample gated |
| Next.js | Insufficient sample | 12 | -40% | 0 | sample gated |
| C++ | Insufficient sample | 12 | 0% | 0 | sample gated |
| SQL | Insufficient sample | 11 | 57.1% | 0 | sample gated |
| GCP | Insufficient sample | 11 | -35.3% | 0 | sample gated |
| Ruby on Rails | Insufficient sample | 10 | 0% | 0 | sample gated |
| React Native | Insufficient sample | 10 | -9.1% | 0 | sample gated |
| Linux | Insufficient sample | 10 | -28.6% | 0 | sample gated |
| JavaScript | Insufficient sample | 10 | -44.4% | 0 | sample gated |
| UI | Insufficient sample | 9 | -25% | 0 | sample gated |
| Java | Insufficient sample | 9 | -30.8% | 0 | sample gated |
| GraphQL | Insufficient sample | 9 | 80% | 0 | sample gated |
| CI/CD | Insufficient sample | 9 | -30.8% | 0 | sample gated |
| UX | Insufficient sample | 8 | -11.1% | 0 | sample gated |
| SaaS | Insufficient sample | 8 | -46.7% | 0 | sample gated |
| B2B | Insufficient sample | 8 | 14.3% | 0 | sample gated |
| PyTorch | Insufficient sample | 7 | 0% | 0 | sample gated |
| SDK | Insufficient sample | 6 | 20% | 0 | sample gated |
| Redis | Insufficient sample | 6 | -25% | 0 | sample gated |
| Azure | Insufficient sample | 6 | -40% | 0 | sample gated |
| Tailwind CSS | Insufficient sample | 5 | -28.6% | 0 | sample gated |
| FastAPI | Insufficient sample | 5 | 25% | 0 | sample gated |
| Android | Insufficient sample | 5 | -37.5% | 0 | sample gated |
| iOS | Insufficient sample | 4 | -66.7% | 0 | sample gated |
| MLOps | Insufficient sample | 4 | 100% | 0 | sample gated |
| Windows | Insufficient sample | 3 | -40% | 0 | sample gated |
| Web3 | Insufficient sample | 3 | 0% | 0 | sample gated |
| Vue.js | Insufficient sample | 3 | -25% | 0 | sample gated |
| Scala | Insufficient sample | 3 | -40% | 0 | sample gated |
| MySQL | Insufficient sample | 3 | -25% | 0 | sample gated |
| MongoDB | Insufficient sample | 3 | -72.7% | 0 | sample gated |
| Elixir | Insufficient sample | 3 | -50% | 0 | sample gated |
| CLI | Insufficient sample | 3 | 0% | 0 | sample gated |
| Angular | Insufficient sample | 3 | 200% | 0 | sample gated |
| .NET | Insufficient sample | 3 | 0% | 0 | sample gated |
| TensorFlow | Insufficient sample | 2 | -33.3% | 0 | sample gated |
| Svelte | Insufficient sample | 2 | 100% | 0 | sample gated |
| NLP | Insufficient sample | 2 | 0% | 0 | sample gated |
| Kafka | Insufficient sample | 2 | -50% | 0 | sample gated |
| Django | Insufficient sample | 2 | -71.4% | 0 | sample gated |
| C# | Insufficient sample | 2 | -71.4% | 0 | sample gated |
| macOS | Insufficient sample | 1 | -66.7% | 0 | sample gated |
| Wasm | Insufficient sample | 1 | -50% | 0 | sample gated |
| Solidity | Insufficient sample | 1 | 0% | 0 | sample gated |
| PHP | Insufficient sample | 1 | -83.3% | 0 | sample gated |
| HTML | Insufficient sample | 1 | n/a | 0 | sample gated |
| GitLab | Insufficient sample | 1 | 0% | 0 | sample gated |
| Erlang | Insufficient sample | 1 | n/a | 0 | sample gated |
| Elasticsearch | Insufficient sample | 1 | -50% | 0 | sample gated |
| CSS | Insufficient sample | 1 | -66.7% | 0 | sample gated |
| CDC | Insufficient sample | 1 | 0% | 0 | sample gated |
Methodology and data dictionary
Source: public Hacker News Who is Hiring top-level comments. Demand means share of classified hiring posts in this corpus, not the whole labor market and not confirmed hires. Raw comment text is stored privately for reproducible parsing, but public exports contain derived fields, HN IDs where relevant, and source URLs only.
Sample gates: hide salary medians below 20 salary observations, keep weak change claims marked as insufficient sample, and show counts next to every table. The taxonomy and parser versions are included in every export row.
CSV checksum: c1b44b89cb2cd4fc99c3e1639254ce20a9b1bd92e680ac8d6c9dd5982e871de4