How to get a Software Engineering role? Don’t.

How to get a Software Engineering role? Don’t.
Lost in Space - NASA on Unsplash

You graduated with your Computer Science degree and are wondering, “How do I get a software engineering job?”. Don’t… I was talking with someone a few weeks ago at an Elastic DevCon event. She’s a recent grad and was sharing about how challenging it is to find a role right now. I don’t think she‘s wrong which is why I typically advise against looking for software engineering roles…

I don’t mean you shouldn’t look for a job. The role, “software engineer” is super generic. Out of college, it’s tempting to look for a generic role because you may not know what you want to specialize in. There are dozens if not hundreds of different areas to specialize in after all. But, if you can find a speciality your chances of getting hired go up massively.

Specializations Within Software Engineering

So let’s go through a few of them! I pulled together a broad list of specializations that you may come across. Within each of these there may be sub-areas you can also specialize. For example, in DevOps you may specialize in scaling, configuration management, or provisioning.

Infrastructure & Tooling

  • DevOps / Platform Engineer – Builds CI/CD pipelines, manages infra as code, and improves deployment velocity.
  • Build Systems Engineer – Designs and maintains systems like Bazel, Buck, or Gradle for efficient builds.
  • Developer Productivity / DX Engineer – Improves tools and workflows that other developers within your company use.
  • Test Automation Engineer – Creates and maintains automated testing frameworks for CI and release readiness.

Systems-Level Engineering

  • Operating Systems / Kernel Engineer – Works on OS internals, drivers, and low-level performance tuning.
  • Embedded Systems Engineer – Writes software for devices with constrained resources like microcontrollers.
  • Networking / Network Automation Engineer – Automates infrastructure (e.g., routers/switches) or develops network-heavy systems.

Data

  • Search Engineer – Designs and tunes search relevance, indexing pipelines, and vector search systems.
  • Data Engineer – Builds pipelines and transforms data for analytics, ML, and operational needs.
  • Database Tooling Engineer – Builds and maintains custom database infrastructure, schema migration tools, etc.

Software Application Specialties

  • Backend Engineer – Focuses on APIs, services, business logic, and database integration.
  • Frontend Engineer – Specializes in building responsive and interactive user interfaces.
  • Mobile Developer – Builds apps for iOS/Android, often with platform-specific constraints.
  • Integrations Engineer – Connects systems via APIs, webhooks, or custom connectors.

Advanced / Niche Roles

  • Programming Language Specialist – Works on compilers, interpreters, or language specific tooling.
  • Observability Engineer – Specializes in metrics, logging, tracing, and incident diagnostics.
  • Security Engineer – Focuses on application security, auditing, threat modeling, and secure coding practices.
  • Performance Engineer – Analyzes and improves latency, throughput, and resource usage across systems.

Cross-Functional & Adjacent Roles Using Software Skills

While these roles won’t always involve writing code they benefit from a familiarity with software engineering. I find that a lot of these are great when paired with your other non-tech skills like interpersonal or organizational skills.

Product, Marketing & Customer Engagement

  • Product Manager (Technical) – Translates user needs into engineering work, often with a computer science background.
  • Developer Advocate / DevRel – Bridges engineering and marketing, creating content and engaging developers.
  • Technical Writer – Writes documentation, tutorials, and internal guides for technical products.
  • Sales Engineer / Solutions Architect – Supports sales by explaining technical concepts and customizing demos.
  • Technical Account Manager – Supports large customers with the ongoing use and adoption of some software product.

Support, Ops & Strategy

  • Support Engineer – Provides technical support, triages bugs, and works with engineering on fixes.
  • Site Reliability Engineer (SRE) – Ensures uptime and reliability of systems, often blending dev + ops.
  • Systems Administrator – Manages servers, users, backups, and local IT needs—especially in hybrid setups.
  • IT Automation Engineer – Automates enterprise software provisioning, access controls, and device management.
  • Data Analyst / BI Engineer – Uses SQL, dashboards, and scripts to help teams make data-driven decisions.
  • Technical advisor - typically helps build analyses for executives to help guide strategy.

Special Projects & Hybrid Roles

  • Internal Tools Developer – Builds bespoke software for non-engineering teams (e.g., finance, HR).
  • ML Ops / AI Infrastructure – Supports deployment, monitoring, and tuning of machine learning models.
  • Research Software Engineer – Bridges academia and industry, supporting research with production-grade code.
  • Digital Humanities / Scientific Computing – Applies software engineering to the arts or sciences.

What Next?

Now that you’ve looked over the list, it’s time to explore! Pick a role or two and start finding out what's involved with working in those roles. Many of them you can explore with a computer or the phone you are reading this on. Each niche has discord and slack communities that you can join to ask questions. Often they also have meetups where people get together to talk about them.

Find someone working in one of these fields and get a virtual coffee with them! The best way to find a role is to get involved in any way you can. Best of luck as you are finding your niche.