8 minute read

3 personas with 2 male and 1 female with an upward moving arrow indicating growth
Generated by Gen AI from Microsoft Copilot using DALL.E

Recently, a bright, up-and-coming SDET at work asked me:

How can I grow in my career?

How can I become a better engineer?

These are timeless questions. All high-growth engineers keep asking this often of themselves and their mentors or managers

It was wonderful to see them have self-awareness in their early career and the drive to improve themselves. I wish I had started asking about this earlier. 🙂

I’ve pondered on this question myself and often do self-reflection from time to time on this, and while I probably cannot give you a magic formula of success that would catapult you to the next level

I can share my take on it.

Disclaimer:

  1. Please take it with a grain of salt 🧂 as this contains my unconscious biases.
  2. When in doubt, do what feels is the best course of action for yourself in your unique life situation. There are no black and white answers here and anyone who says otherwise has something else on their agenda 😉

Phew! With that ominous disclaimer out of the way. Let’s dive in

Progression in your career realistically can be a combination of many factors

  1. sometimes it is a raw skill, talent, and execution
  2. sometimes it’s the relationships you’ve built that work for you
  3. often it’s being at the right place at the right time and showing up with the right attitude
  4. Most often it is luck or foresight to work on high-impact projects
  5. a favorable sponsor, mentor, or manager

and what have you?

Surely you may be thinking, These do not seem very deterministic, do they?

Since there are only a few aspects that you have personal control over.

I’ll suggest we start from there.

🪜 Level Expectations

Before we look at skills that an SDET should master, let’s set some broad behaviors and expectations that leaders reasonably expect from engineers at different stages of their career journey.

This is not an exhaustive list by any stretch, but it is meant to give you a ballpark idea and some high-level intuition

At each stage of your journey

You should assume the person has demonstrated performance indicators on the previous level and has the potential to reliably and consistently demonstrate at least 30% of next-level skills.

Entry/mid-level - A new hope; solid executor

Project impact:

  • Strong execution on one team and ownership of shipping tasks on time
  • Can design and execute test plans for independent features with guidance from senior engineers
  • Can add incremental features to framework and tools for well-defined problem spaces and domains

Engineering excellence:

  • Expert in one area (web, mobile, backend)
  • Can code fluently in one programming language
  • Has a solid understanding of testing fundamentals and techniques e.g. boundary value analysis, equivalence partitioning, decision tables, state transition tests mind mapping

People impact:

  • Can communicate clearly with stakeholders and help drive bug fixes

Direction:

  • Limited to a small/medium problem space

Senior - An independent, reliable, and seasoned engineer

Project impact

  • Leads execution for a functional area in a group
  • Deliver outcomes on medium complexity features with minimal or directional guidance
  • Proactively takes ownership, designs, and builds scalable and efficient test frameworks and tools to solve testing problems

Engineering excellence

  • Expert in more than one area (web, mobile or backend)
  • A polyglot programmer and can code fluently in more than one language, with a good understanding of design patterns and approaches, refactoring techniques
  • Understand sophisticated testing techniques and approaches like mocking, stubbing, integration testing, mutation, etc
  • Good understanding of associated technology stacks: test runners, code coverage, CI/CD, reporting

People impact:

  • Mentor early career engineers to grow into senior role

Direction:

  • Influences technical direction for one area
  • Effectively communicates technical concepts to both technical and non-technical audiences, and influences technical decisions.

Staff/Principal - A deep expert, who sets technical direction, large functional area influence, or industry impact

Project impact

  • Leads execution of complex projects across multiple cross-functional teams
  • Aligns testing efforts with broader organizational goals anticipates future challenges, and drives strategic initiatives.
  • Able to deliver complex projects involving either deep technical skills or cross-team collaborations with no supervision and occasional directional feedback
  • Able to build a robust, scalable, and comprehensive test strategy covering different app stacks

Engineering excellence

  • Expert across domains (web, mobile, backend)
  • Solid hands-on grasp on nonfunctional testing (resilience, chaos, load, security)

People Impact

  • Motivated to mentor and teach senior engineers to grow into staff and guide peer managers on nuances in the technical domain
  • Able to handle ambiguity and navigate organizational dynamics to drive progress
  • Inspires and motivates others, builds high-performing teams, and fosters a culture of excellence

Direction

  • Influences technical direction and identifies opportunities for innovation
  • Leads the development and implementation of new testing methodologies and tools across teams and multiple areas

There are levels further than this in large companies like a Senior principal engineer, or distinguished engineer

I have personally not been in those trenches enough to give you a concrete viewpoint, however, if I had to guess, take what a Staff engineer does, add more ambiguity and challenges, and imagine an individual who can have a strong impact on industry or large functional group and you’ll probably be in the right ballpark.

Side note: If you are wondering, Where are the project, people impact, engineering excellence, and direction headings coming from? It is the way Meta does performance reviews and I generally find it gives a good overall structure to think about your work

🌿 What could you learn?

Now that you have a broad sense of expectations for these three SDETs archetypes

Let’s get a bit practical, shall we?

Below you’ll find an intentionally incomplete laundry list of tools, libraries, technologies, and approaches that SDETs should probably know.

For each category, it’s good to understand one tool deeply first and then one more to compare and contrast.

🚨 Learning every tool and technology under the sun deeply is not possible. As a senior engineer, you should choose your battles wisely. With time and experience, your knowledge will compound as you figure out the design principles, approaches, and patterns behind each tool. You’ll start to notice that all these will influence your taste and style when it comes to building robust testing solutions

Do you prefer mind maps?

I have a mind map covering these in SDET roadmap.pdf

SDET roadmap

plain text more your thing?

🌍Testing Fundamentals

  • Test strategy
  • Test design
  • Test planning
  • Test execution
  • Bug discovery, triage, retesting
  • Smoke, sanity, regression testing, and severity/priority
  • Boundary value analysis
  • Equivalence partitioning
  • Decision tables
  • Exploratory testing
  • Black box testing
  • White box testing
  • Test data management
  • Root cause analysis and debugging
  • Test documentation and reporting: Jira, zephyr, test rail

🔺Test pyramid

  • Unit testing: Pairwise, Mutation testing
  • Integration testing
  • E2E testing
  • Load/stress testing
  • Security: DAST (Dynamic application security testing), SAST (Static application security testing)
  • Accessibility
  • Usability

🕸️Web UI automation

  • Selenium
  • Playwright
  • Cypress

📱Mobile UI automation

  • Appium
  • Native Android: Espresso, Roboelectric
  • Native iOS: XCUITest, XCTest
  • Device clouds: BrowserStack/LambdaTest/SauceLabs

🌀Backend

Tools

API types

  • Rest: RestAssured, Postman
  • Grpc
  • GraphQL

🥵Load:

  • Locust
  • K6
  • Gatling

Distributed systems

Message Queue:

  • Amazon SQS
  • RabbitMQ
  • Kafka

Databases

Relational

  • PostgreSQL
  • MySQL

Non-relational

  • DynamoDB
  • MongoDB

Cache:

  • Redis

Concepts:

  • Replication
  • Sharding
  • Partitioning
  • CAP theorem
  • Horizontal vs vertical scaling
  • CDN

Resilience

  • Chaos engineering

Security

  • Burp suite
  • OWASP Zap
  • Snyk

DevOps

Cloud

  • AWS
  • GCloud
  • Azure

CI/CD:

  • Jenkins
  • Gitlab
  • GitHub actions

Containerization:

  • Docker
  • Kubernetes

Programming

Languages:

  • Java
  • Python
  • Javascript/Typescript

Design

  • Design patterns
  • Refactoring

Test Infrastructure

  • Code coverage
  • Test selection
  • Test recommendation

Test tooling

  • Test runners: TestNG, JUnit, Pytest
  • Mocking/Stubbing: Mockito, Wiremock, Mock server
  • Dependency injection (DI): Guice
  • Proxy: MITM, Charles Proxy

AI

  • Prompting GenAI models
  • Using Copilot, Claude, etc to generate tests or testing solutions

Human skills

  • Collaboration
  • Communication: written and spoken
  • Confidence and body language
  • Negotiation
  • Conflict resolution
  • Mentoring

How to approach it?

OMG … 😮

If I was a beginner in 2025, seeing this list for the 1st time. It would scare the hell out of me. 😱

I would have had 2 questions.

  1. Is learning all this really necessary?
  2. Where should one even start?

Both are valid questions

Firstly, It’s not required to know everything on this list to be a successful SDET.

Your mileage really will vary. I intend to convey the breadth of skills and technologies that you may be exposed to in your career as an SDET. You could very well spend multiple years just focusing on mobile, web, or backend or a niche like distributed systems testing, security, etc. There are no wrong answers here, we are all on our unique learning journey

However that said, it’s important to mix it up and work across the board to have solid intuition

Primarily because you don’t want to keep on doing the same things forever. It’s boring isn’t?

An easy heuristic is to learn the tech stack of your current company well before you branch out 😀 If you work at different workplaces or teams in your career, chances are you’ll probably pick up a few different tech stacks organically.

As far as how to start, you could follow your unique path

Please allow me to suggest a general approach that worked for me

  1. Be curious and ask questions, take notes on what you learn, and share them with others
  2. Learn testing fundamentals and how to design and test well 😉
  3. Learn one programming language well
  4. Learn one CI system well
  5. Learn one test runner well
  6. Choose one area of backend, web, or mobile automation and develop good expertise in it
  7. Find a mentor that you can leverage like a sounding board

Once you know the basics

Use the foundation to branch out and pick another area that either you need for work or you are curious about and learn

What could be your learning approach?

Let me break down my process

  1. Learn: Learn a topic by reading docs, watching some videos, or taking a course. Take notes on it in your internal note-taking system
  2. Build: Don’t be a passive learner, implement by applying that either at work or in a side project. Get hands-on practical experience
  3. Write: Write a blog on it
  4. Teach: Teach the concept, tool, or technology to others in your peer group
  5. Talk: Prepare a talk and present it to a wider audience

Hope this is useful.

Do you have questions?

You can send them my way on any of the socials or if you prefer a more personalized discussion, I’m available on topmate for 1:1 mentoring, coaching, and counselling.

Thanks for the time you spent reading this 🙌. If you found this post helpful, please subscribe to the newsletter and follow my YouTube channel (@automationhacks) for more insights into software testing and automation. Until next time 👋, Happy Testing 🕵🏻 and Learning! 🌱 Substack YouTube Blog LinkedIn X BlueSky

Comments