Skip to main content

Engineering Career Growth — From Junior to Staff+

Your career is not a ladder. It is a series of increasingly complex problems you learn to solve — for yourself, your team, and your organization. This guide breaks down what actually matters at each stage and how to move through them with intention.
Think of your career like a tree, not a ladder. It branches in many directions, and the healthiest growth comes from deep roots (fundamentals) not just height. Some of the most impactful engineers in the industry took winding paths — lateral moves, open source detours, entire career pivots — and those branches became the source of their unique strengths.

Real-World Career Stories

Before we get into frameworks and checklists, here are four real stories that illustrate what career growth actually looks like in practice. None of these follow a neat, linear path — and that is the point.
Kelsey Hightower is one of the most respected engineers in the cloud-native ecosystem, and he never got a computer science degree. He started as a sysadmin, racking servers and writing Puppet manifests. He learned to code not in a classroom but because automation was the only way to manage the growing complexity of the systems he was responsible for.What set Hightower apart was not raw technical talent — it was his relentless drive to teach and share. He became a fixture in the Kubernetes community early on, giving talks that made container orchestration accessible to people who had never touched it. His “Kubernetes the Hard Way” guide became legendary — not because it made things easy, but because it forced practitioners to understand every layer of the stack by building it from scratch.Google hired him as a staff developer advocate, and he eventually became a principal engineer. He retired from Google in 2023 after a career that reshaped how an entire industry thinks about infrastructure.The lesson: Your path does not need to match anyone else’s template. Hightower’s lack of a CS degree did not hold him back because he replaced credentials with demonstrated expertise, teaching ability, and community impact. If you can explain complex systems clearly and build trust across an industry, titles and degrees become secondary.
In 2015, Dan Abramov was a relatively unknown developer from Russia who had been coding professionally for just a couple of years. He had an idea about how to manage state in React applications — inspired by Elm’s architecture and Flux’s ideas — and built a library called Redux. More importantly, he gave a conference talk (“Hot Reloading with Time Travel” at React Europe) that demonstrated the concept in a way that made the entire audience’s jaws drop.Redux took off immediately. But what got Abramov hired onto Facebook’s React core team was not just the code — it was his ability to communicate ideas, write clear documentation, and engage with the community with unusual patience and empathy. He spent enormous amounts of time answering GitHub issues and writing blog posts that explained not just how to use his tools but why they worked the way they did.Later, Abramov became a central figure in developing React Hooks, fundamentally changing how millions of developers write React code. He has consistently been transparent about his own gaps in knowledge (his “Things I Don’t Know” blog post went viral for its honesty) and has pushed the industry toward a healthier relationship with expertise and imposter syndrome.The lesson: Open source is one of the most powerful career accelerators available to any engineer. Abramov did not climb a corporate ladder — he built something useful, explained it clearly, engaged with the community generously, and the career opportunities followed. You do not need to build the next Redux. You need to solve a real problem, share it publicly, and be genuinely helpful to the people who use it.
In 2019, Tanya Reilly (then a principal engineer at Squarespace, previously at Google for over a decade) gave a talk called “Being Glue” that struck a nerve across the entire engineering industry. The talk told the story of a composite character — an engineer who was brilliant at the work that holds teams together: onboarding new hires, writing documentation, facilitating cross-team communication, reviewing design docs, running project coordination. This “glue work” was essential — without it, projects stalled and teams fell apart.But here is the painful part: when promotion time came, this engineer was told they did not have enough “technical impact.” All the work that kept the team functional was invisible in the performance review process. Meanwhile, engineers who had been freed up by the glue worker’s efforts — because someone else handled the coordination, the docs, the onboarding — got promoted for their visible technical contributions.Reilly’s talk forced companies to confront an uncomfortable truth: organizations systematically undervalue the work that makes everything else possible, and this burden falls disproportionately on women and underrepresented groups. The talk led to real changes in how many companies evaluate engineering contributions, broadening promotion criteria to include organizational impact.Reilly went on to write The Staff Engineer’s Path (O’Reilly, 2022), one of the definitive guides to the IC leadership track.The lesson: Glue work is real, valuable, and dangerous if it is not recognized. If you find yourself doing this work, make it visible — track it in your brag document, frame it in terms of team outcomes, and have explicit conversations with your manager about how it is valued. And if your organization refuses to recognize it, that tells you something important about whether you should stay.
Charity Majors has had one of the more unusual and instructive career paths in the engineering world. She spent years as a systems engineer and DBA at companies like Linden Lab (Second Life) and Parse (acquired by Facebook). At Facebook, she was a production engineering manager — and she hated it. Not because management is bad, but because she realized the management role at that particular moment was not where she could have the most impact.She left Facebook, co-founded Honeycomb.io (an observability company), and became its CTO. As CTO of a startup, she was back to writing code, designing systems, and managing people — all at once. As Honeycomb grew, she transitioned back to a pure IC role, handing off management responsibilities to focus on technical strategy.Majors has been unusually vocal about the IC-to-management-and-back journey. Her core argument: management is not a promotion, it is a career change. The skills are different. The day-to-day is different. And there is no shame in trying management, realizing it is not for you, and going back to IC. In fact, engineers who have done a stint in management often become better ICs because they understand organizational dynamics, prioritization, and the human side of engineering in ways that pure ICs often do not.The lesson: The IC vs. management fork is not a one-way door. Try management if you are curious — but go in with your eyes open. It is a different job, not a better one. And if you go back to IC, you are not “demoting” yourself. You are choosing the role where you can have the most impact. The best organizations understand this. If yours does not, factor that into your career calculus.

1. Engineering Levels Demystified

The Level Map

DimensionJunior (L1-L2)Mid (L3)Senior (L4)Staff (L5)Principal (L6+)
ScopeSingle task / functionFeature / small projectEntire system / serviceMultiple systems / cross-teamOrg-wide / company-wide
AutonomyNeeds guidance on approachNeeds guidance on directionSelf-directed, sets direction for othersDefines technical direction for a domainShapes company technical strategy
InfluenceOwn codeTeam codebaseTeam + adjacent teamsEngineering orgEntire company
Technical DepthLearns patternsApplies patterns correctlyChooses and adapts patternsCreates patterns others followDefines industry-level patterns
AmbiguityWell-defined tasksLoosely defined featuresAmbiguous problemsUndefined problem spaces”We don’t even know the question yet”
Failure ImpactBug in a functionBroken featureService outageCross-team architectural debtCompany-wide strategic misalignment
Levels are about impact, not years. A developer with 10 years of experience who has repeated year 1 ten times is not a senior engineer. Conversely, someone with 3 years of intense, ownership-driven experience can absolutely operate at a senior level. Stop counting years. Start measuring impact.

The Key Transitions

What changes: You stop needing someone to check every decision. You write code that works, is tested, and can be reviewed without major rewrites.Concrete signals you have made the transition:
  • You break down tasks yourself before starting
  • Your PRs rarely need architectural-level feedback anymore
  • You handle edge cases proactively, not after code review comments
  • You write tests without being asked
  • You can debug production issues in your area without hand-holding
What holds people back:
  • Waiting for perfect specifications instead of clarifying ambiguity yourself
  • Not reading enough production code written by senior engineers
  • Avoiding unfamiliar parts of the codebase
What changes: You shift from “I completed the ticket” to “I own this system.” You think about the full lifecycle — design, implementation, deployment, monitoring, maintenance, and eventual deprecation.Concrete signals you have made the transition:
  • You write the design doc before you write the code
  • You push back on requirements when they don’t make technical sense
  • You proactively identify and address tech debt, not just complain about it
  • Other engineers come to you with questions about your domain
  • You can estimate work for your team, not just yourself
  • You think about failure modes during design, not after the first outage
What holds people back:
  • Optimizing for code elegance over system reliability
  • Not developing opinions about architecture (always deferring to others)
  • Avoiding cross-functional conversations with PMs, designers, and stakeholders
What changes: Your work is no longer contained within a single team. You identify problems that span team boundaries, propose solutions, build consensus, and drive execution across organizational lines.Concrete signals you have made the transition:
  • You have authored RFCs or design docs that were adopted across multiple teams
  • You are pulled into architectural decisions outside your team
  • You mentor senior engineers, not just juniors
  • You identify systemic problems (tooling, patterns, processes) and fix them at the org level
  • Leadership asks for your input on technical strategy
  • You can articulate trade-offs to non-technical stakeholders
What holds people back:
  • Staying heads-down in code and never building organizational influence
  • Not writing — design docs, RFCs, blog posts, postmortems
  • Inability to communicate technical decisions to non-engineers
  • Not building relationships outside your immediate team
What changes: You operate at the intersection of technology and business. You don’t just solve the hard technical problems — you decide which problems are worth solving and in what order.Concrete signals you have made the transition:
  • You define multi-year technical roadmaps that align with business goals
  • Your decisions affect hundreds of engineers
  • You identify existential technical risks before they become crises
  • You shape hiring, team structure, and engineering culture
  • Industry peers look to your work as a reference point
  • You can translate between CTO-level strategy and individual team execution
What holds people back:
  • Thinking “principal” means “the best coder” — it means the best technical decision-maker
  • Not understanding the business deeply enough
  • Inability to influence without authority
  • Not developing a point of view on where the industry is heading

Anti-Patterns at Every Level

Pattern: Has the title because they have been around for 5+ years. Does solid work within a narrow comfort zone. Avoids new technologies, hard problems, and cross-team initiatives. Never writes design docs. Never mentors.Why it is a problem: They block the level for others and create a false ceiling. Junior engineers look at them and think seniority means doing the same thing for a long time.How to avoid it: Every 6 months, ask yourself: “What can I do now that I could not do 6 months ago?” If the answer is nothing, you are stagnating.
Pattern: Draws diagrams, attends meetings, writes documents — but hasn’t shipped code in months (or years). Their designs are theoretically sound but practically impossible. They don’t feel the pain of their own decisions.Why it is a problem: Architecture disconnected from implementation reality leads to over-engineering, impractical abstractions, and resentment from the teams who have to build it.How to avoid it: Even at the staff+ level, write code regularly. It doesn’t have to be feature work — write tooling, fix production bugs, contribute to critical path items. Stay connected to the developer experience.
Pattern: Produces enormous volumes of code. Solves hard problems solo. But their code is unreadable to anyone else. They don’t do code reviews. They don’t document. They don’t teach.Why it is a problem: They are a single point of failure and a team bottleneck. When they leave, their systems become legacy code overnight. A true 10x engineer makes 10 people 2x more effective.How to avoid it: Measure your impact by what the team ships, not what you personally ship.
Interview Question: “Tell me about a time you operated above your level.” This is one of the strongest signals in a behavioral interview. It shows self-awareness about leveling AND initiative. Prepare 2-3 examples where you took on scope beyond your title.

2. What Makes a Senior Engineer

Being senior is not about knowing every framework or having all the answers. It is about a mindset shift — from “I write code” to “I solve problems and enable others.”

The Six Pillars of Senior Engineering

What it means: Your code is not just correct — it is clear, well-structured, and maintainable by someone who has never seen it before. You optimize for readability over cleverness.In practice:
  • Functions do one thing and have descriptive names
  • Error handling is explicit, not an afterthought
  • Complex logic has comments explaining why, not what
  • Tests document expected behavior, including edge cases
  • You follow established patterns in the codebase (consistency over personal preference)
The test: Can a mid-level engineer on your team understand, modify, and extend your code without asking you a question? If not, it is not senior-quality code.
// Junior: clever but opaque
const r = d.filter(x => x.s > 2 && x.t !== 'b').map(x => ({...x, p: x.a * 0.15}));

// Senior: clear and maintainable
const activeNonBetaUsers = users.filter(user => {
  const isActive = user.sessionsThisMonth > MIN_ACTIVE_SESSIONS;
  const isNotBetaTester = user.accountType !== AccountType.BETA;
  return isActive && isNotBetaTester;
});

const usersWithDiscountApplied = activeNonBetaUsers.map(user => ({
  ...user,
  discountedPrice: user.annualPrice * LOYALTY_DISCOUNT_RATE,
}));
What it means: You don’t wait for someone to assign you the hard problems. When something breaks, you step up — even if it is not “your” code. You see gaps and fill them.In practice:
  • You monitor your services proactively, not just when paged
  • You write runbooks for on-call scenarios before they happen
  • When you find a bug in another team’s service that affects yours, you fix it or file a detailed issue with a proposed solution — not just “it’s broken”
  • You own the outcome of a project, not just your individual tasks
  • You follow up after deployment to verify the feature works as expected in production
The anti-pattern: “That’s not my job.” / “That’s the platform team’s problem.” / “I just write the code, ops handles deployment.”
What it means: Your presence makes the entire team more productive, not just yourself. You invest in code reviews, mentoring, documentation, and tooling that saves everyone time.In practice:
  • Your code reviews teach, not just gatekeep — you explain why something should change
  • You create shared utilities, templates, and tooling that the whole team uses
  • You document tribal knowledge so it is not locked in your head
  • You pair with struggling teammates instead of just solving it yourself
  • You create a “paved road” for common patterns so others don’t reinvent the wheel
How to measure it: If you went on vacation for two weeks, would the team slow down or keep moving? A true senior engineer’s team keeps moving because they have built systems and shared knowledge. A “senior” who is actually a bottleneck causes the team to stall.
What it means: You understand that the best code is often no code. You evaluate build-vs-buy, complexity-vs-value, and perfect-vs-good-enough trade-offs with nuance.In practice:
  • You push back on features that add complexity without proportional value
  • You choose boring technology for critical systems
  • You can articulate: “We should use a third-party service for this because building it ourselves would take 3 months and maintaining it would take 0.5 FTE forever”
  • You avoid premature optimization AND premature abstraction
  • You know when a quick hack is the right call and when it is technical debt
The framework: For every technical decision, ask:
  1. What is the simplest thing that could work?
  2. What are the maintenance costs over 2 years?
  3. Who else will need to understand this?
  4. What happens when this fails at 10x scale?
  5. Is this reversible? If not, how much certainty do we need?
What it means: You design for production from day one. Monitoring, alerting, deployment strategy, rollback plans, and failure modes are part of your design, not afterthoughts.In practice:
  • Every feature you build has metrics and alerts before it ships
  • You think about: What does graceful degradation look like?
  • You design for zero-downtime deployments (feature flags, blue-green, canary)
  • Your error messages are actionable, not just “something went wrong”
  • You write postmortems that actually prevent recurrence, not just document the outage
The checklist (ask yourself before any deploy):
  • Can I roll this back in under 5 minutes?
  • Do I have dashboards that will show me if this is broken?
  • What happens to users if this feature fails?
  • Have I tested this with production-like data volume?
  • Is there a runbook for when this goes wrong at 3 AM?
What it means: You can explain complex technical concepts to different audiences — engineers, PMs, executives. You write clearly. Your design docs are actionable. Your Slack messages are concise.In practice:
  • Your design docs have a clear problem statement, proposed solution, alternatives considered, and trade-offs
  • You can run a productive technical discussion without it becoming a debate
  • Your postmortems are blameless and focused on systemic improvements
  • You give feedback that is specific, actionable, and kind
  • You document decisions and their rationale so future engineers understand why
The test: Can you explain your system’s architecture to a new hire in 15 minutes and have them understand the key trade-offs?

The Senior Engineer Task Checklist

Use this checklist for every meaningful task. It is not about checking every box every time — it is about consciously considering each dimension. Over time, this becomes automatic.
1

Correctness

Does it actually solve the problem? Have you validated the requirements, not just the implementation? Did you handle edge cases, error states, and invalid input?
2

Performance

Will this work at current scale AND 10x scale? Have you identified the hot path? Are there unnecessary database queries, N+1 problems, or missing indexes? Did you measure, not guess?
3

Security

Is user input validated and sanitized? Are you following the principle of least privilege? Is sensitive data encrypted at rest and in transit? Are there any injection vectors?
4

Observability

Can you tell if this is working in production? Do you have metrics, logs, and traces? Are alerts set up for failure conditions? Can you debug a problem using only the telemetry data?
5

Maintainability

Will someone else understand this in 6 months? Is the code well-structured and documented? Are there tests that prevent regressions? Does this follow existing patterns in the codebase?
6

Operability

Can this be deployed safely? Is there a rollback plan? Does it need a feature flag? Are there any dependencies that could cause cascading failures?

3. The Staff+ Engineer Path

IC Track vs. Management Track

The problem with a single track: If management is the only path to seniority and compensation, you force great engineers into management roles they don’t want and aren’t suited for. The result is bad managers AND lost technical talent.IC (Individual Contributor) Track: Deep technical impact without managing people. Staff, Principal, Distinguished, Fellow.Management Track: Impact through people and organizational design. Tech Lead Manager, Engineering Manager, Director, VP.
DimensionIC Track (Staff+)Management Track (EM+)
Primary leverTechnical decisions, architecture, codePeople, process, organizational design
Day-to-dayDesign docs, code, technical mentoring, cross-team alignment1:1s, hiring, performance reviews, roadmap planning
Measured byTechnical impact on systems and engineering qualityTeam output, retention, growth, delivery
Failure modeIvory tower architectMeeting-only manager disconnected from tech
ReversibilityEasier to move to managementHarder to return to IC (skills atrophy)
The key insight: Both tracks require leadership. A staff engineer who cannot influence people is not operating at staff level. A manager who cannot understand technical trade-offs is not effective either.
1. The Tech Lead
  • Partners with a single team’s manager to set technical direction
  • Drives execution on the team’s most important projects
  • Day-to-day: code reviews, design docs, unblocking engineers, sprint planning
  • Risk: becomes a bottleneck if they don’t delegate effectively
2. The Architect
  • Responsible for technical direction of a broad area (e.g., “frontend architecture” or “data platform”)
  • Depth of knowledge in their domain, breadth of influence across teams
  • Day-to-day: RFCs, reviewing designs from multiple teams, defining standards
  • Risk: becomes disconnected from implementation reality
3. The Solver
  • Parachutes into the hardest technical problems across the org
  • Moves from team to team as needed
  • Day-to-day: deep technical work on the most ambiguous, high-stakes problems
  • Risk: never builds lasting relationships or institutional knowledge
4. The Right Hand
  • Extends a senior leader (VP, CTO) by taking on their hardest problems
  • Operates with borrowed authority
  • Day-to-day: organizational strategy, cross-cutting initiatives, special projects
  • Risk: impact is invisible and hard to attribute
Which one are you? Most staff engineers are a blend, but understanding these archetypes helps you articulate what kind of staff engineer you want to be and what kind your org needs.
Design Docs and RFCs:
  • Write design docs that change how your org builds software
  • An RFC adopted by 3+ teams is stronger signal than any amount of code
  • Focus on: problem framing, trade-off analysis, alternatives considered
  • Your RFCs should teach, not just propose
Cross-Team Projects:
  • Identify problems that affect multiple teams but nobody owns
  • Examples: shared authentication, observability standards, CI/CD improvements, API design guidelines
  • Lead the initiative without formal authority — this IS the staff skill
Technical Strategy Documents:
  • Write the “state of the world” for your technical domain
  • Include: where we are, where we need to be, how we get there, what we stop doing
  • Present to engineering leadership and get buy-in
Mentoring Senior Engineers:
  • Help senior engineers make the jump to staff
  • This is a multiplier on a multiplier
  • Share your frameworks for decision-making, not just your technical knowledge
What is glue work? (Tanya Reilly’s concept) Work that is essential for the team to function but doesn’t get recognized in performance reviews: onboarding new hires, improving documentation, facilitating meetings, coordinating cross-team dependencies, writing postmortems, reviewing design docs.Why it is a problem: This work disproportionately falls on underrepresented groups. It is essential but invisible. If you do too much of it, you get passed over for promotion because you “didn’t have enough technical impact.”How to handle it:
1

Make it visible

Track all glue work in your brag document. Quantify the impact: “Onboarded 3 new hires, reducing their ramp-up time from 8 weeks to 4 weeks.”
2

Get it recognized

Talk to your manager about it explicitly. Frame it as organizational impact. If your manager doesn’t value it, that is a red flag about the org.
3

Distribute it

Don’t be the only person doing glue work. Create systems (onboarding docs, runbooks, templates) so the work scales beyond you.
4

Balance it

Ensure you also have visible technical projects. The ratio should shift over your career: early on, more code; at staff level, more organizational work.
5

Choose your org wisely

Some companies recognize and reward glue work. Some don’t. Know which kind you are at.
What it is: A running document where you record your accomplishments, impact, and growth. Updated weekly or biweekly. Used for performance reviews, promotion packets, and resume updates.
Think of a brag document like a highlight reel. You don’t remember every shot you took, but you SHOULD remember the ones that mattered. Without a highlight reel, your entire season of work gets compressed into whatever your manager vaguely recalls from the last two weeks before review time. That is not a system for getting recognized — that is a lottery.
Template:
# Brag Document — [Your Name] — [Quarter/Year]

## Projects
- [Project Name]: [1-sentence description]
  - My role: [what you specifically did]
  - Impact: [quantified outcome]
  - Skills demonstrated: [technical, leadership, etc.]

## Design and Architecture
- [RFC/Design Doc Title]: [outcome — adopted? by how many teams?]
- Key decisions I drove: [list]

## Mentoring and Team Building
- Mentored [Name] on [Topic] — [outcome]
- Improved onboarding: [specific improvement and result]

## Operational Excellence
- On-call improvements: [what you changed, impact on MTTR/incident count]
- Reliability wins: [uptime improvements, toil reduction]

## Learning and Growth
- Learned [Technology/Skill] — applied in [Project]
- Conference talk / blog post / internal presentation: [title]

## What I Want to Do Next
- [Goals for next quarter]
Rules:
  1. Update it every Friday. Set a calendar reminder. If you wait until review time, you will forget 80% of your impact.
  2. Quantify everything. “Improved performance” means nothing. “Reduced p99 latency from 800ms to 200ms, saving an estimated $50K/year in compute” means everything.
  3. Include the work that was hard to do, even if it was invisible. This is your evidence.
  4. Share it with your manager before review season. Don’t make them guess your impact.
Interview Question: “What does a staff engineer do that a senior engineer does not?” Strong answer: “A senior engineer owns a system. A staff engineer owns the problem space across systems. They identify which problems matter most, build consensus on solutions, and ensure execution across team boundaries. The shift is from technical depth in one area to technical leadership across areas.”

4. Building Your Technical Portfolio

Side Projects That Actually Matter

What impresses hiring managers and peers:
  • Tools that solve a real problem you personally had
  • Projects with actual users (even 10 users is meaningful)
  • Contributions to infrastructure, developer tooling, or open source
  • Projects that demonstrate systems thinking, not just UI building
  • Well-documented projects with clear READMEs, architecture docs, and deployment instructions
What does NOT impress:
  • A collection of tutorial follow-alongs (“I built a todo app in 15 frameworks”)
  • Repos with no README, no tests, and no documentation
  • Projects started but never finished (demonstrates nothing)
  • Copy-paste from a YouTube course with no original modifications
The litmus test: Can you explain every technical decision you made and every trade-off you accepted? If not, you didn’t build it — you copied it.
1

Start with documentation

Find a project you use. Read the docs. Find something confusing or missing. Fix it. This is the lowest-barrier entry point and maintainers love it.
2

Tackle 'good first issue' labels

Most major projects tag beginner-friendly issues. Pick one, read the contributing guide, and submit a PR. Expect feedback — that is the point.
3

Fix a bug you encountered

If you hit a bug in an open source tool, don’t just work around it — fix it upstream. This demonstrates real-world problem-solving.
4

Build tooling or plugins

Create a plugin, extension, or integration for a tool you use. This is often higher-impact than fixing typos and gives you ownership of something.
5

Contribute consistently, not heroically

One PR per month for a year is more impressive than 20 PRs in one weekend followed by silence. Consistency signals reliability.
Why it matters: Open source contributions demonstrate that you can read unfamiliar code, follow contribution guidelines, communicate with strangers professionally, handle code review feedback, and ship in someone else’s codebase. These are exactly the skills you need on any engineering team.
Types of technical writing that build your reputation:
  1. Blog posts that teach — Explain something you learned. The bar is not “original research.” The bar is “clearly explaining something that others struggle with.”
  2. Internal documentation — The engineer who writes the best internal docs is often the most valued on the team. Architecture decision records (ADRs), runbooks, onboarding guides.
  3. Conference talks — Start with lightning talks (5 min) at local meetups. Work up to full talks. You do NOT need to be a world expert. You need to explain one thing well.
  4. Postmortems — A well-written postmortem is one of the highest-leverage documents in engineering. It teaches the whole org.
  5. Design docs and RFCs — These are the primary “currency” at staff+ levels. Practice writing them even if your org doesn’t require them.
The compounding effect: A blog post you write today will generate inbound interest for years. A conference talk becomes a YouTube video. Internal docs get referenced in every onboarding. Writing is the highest-ROI career investment most engineers ignore.
The problem: Technology moves fast. You cannot learn everything. Trying to learn everything leads to burnout and shallow knowledge.The system:
  1. Define your T-shape: Deep expertise in 1-2 areas. Broad familiarity with many. Decide what your “deep” areas are and protect that depth.
  2. Weekly learning budget: Allocate 3-5 hours per week. Block it on your calendar. Protect it like a meeting.
  3. Input sources (curate ruthlessly):
    • 2-3 newsletters (e.g., TLDR, Pointer, ByteByteGo)
    • 1 technical book per quarter (not per year)
    • Follow 10-15 high-signal engineers on social media
    • Read 1-2 RFCs/design docs from top companies per month
  4. Output requirement: Learning without output is just entertainment. For everything you learn, produce something:
    • Write a summary in your own words
    • Build a small prototype
    • Teach it to a teammate
    • Add it to your notes system
  5. Prune aggressively: Unsubscribe from noisy channels. Ignore hype cycles. Ask: “Will this matter to my work in 12 months?” If not, skip it.
The spaced repetition principle: Review your notes monthly. You will be surprised how much you forget — and how much sticks when you revisit.
Exercise: Audit your GitHub profile right now. If a hiring manager spent 60 seconds on it, what would they conclude? If the answer is “nothing useful,” pick one project this month and make it portfolio-worthy: add a proper README, write tests, deploy it, and document the architecture.

5. Interview Strategy for Engineers

Evaluating Companies (Not Just Getting Hired)

Remember: an interview is a two-way evaluation. You are assessing whether this company deserves 2,000+ hours of your life per year.Evaluate on these dimensions:
DimensionGreen FlagsRed Flags
Engineering CultureDesign docs, code review, blameless postmortems”We move fast and break things” (without fixing them)
Technical QualityCI/CD, automated testing, monitoring/observability”We deploy by SSHing into production”
GrowthPromotion criteria are documented, mentorship exists”Just keep doing great work and it’ll happen”
Work-Life BalanceSustainable on-call, reasonable hours, PTO actually used”We’re like a family” (meaning: no boundaries)
Team HealthLow turnover, engineers speak positively, candid answersInterviewers dodge questions about culture
Technical DebtAcknowledged and systematically addressed”We’ll fix it later” (they never do)
About Architecture and Engineering Practices:
  • “What does your deployment pipeline look like? How often do you deploy to production?”
  • “How do you handle incidents? Walk me through your last major outage.”
  • “What’s the ratio of feature work to tech debt / infrastructure work?”
  • “How are architectural decisions made? Who has input?”
  • “What’s the oldest, most painful part of your codebase, and what’s the plan for it?”
About Team Culture:
  • “How do code reviews work here? What’s the average turnaround time?”
  • “What does on-call look like? How often are people paged, and how is it compensated?”
  • “How does your team handle disagreements about technical direction?”
  • “What did the last person in this role go on to do?”
  • “Can you tell me about someone who was recently promoted and what they did to earn it?”
About Growth:
  • “What does the career ladder look like for ICs here?”
  • “How are engineers evaluated? What does the performance review process look like?”
  • “What learning budget or professional development support exists?”
  • “How much autonomy would I have in choosing what to work on?”
The power move: “What’s the one thing you’d change about working here if you could?” Genuine answers reveal a lot. Deflection reveals even more.
Core principles:
  1. Never give a number first. “I’m focused on finding the right fit. What’s the range for this role at this level?” If pressed: “I’d want compensation to be competitive with the market for this level in this area.”
  2. Negotiate total compensation, not just base salary.
ComponentWhat to negotiateNotes
Base SalaryThe floor of your compEasiest to negotiate, smallest upside
Equity (RSUs/Options)Often the largest component at tech companiesUnderstand vesting schedule, cliff, refresh grants
Signing BonusOne-time, often used to bridge gapsCan compensate for unvested equity from current job
LevelYour title and scopeA higher level is worth more than a higher salary at a lower level
Scope / TeamWhat you’ll actually work onThe right team can be worth more than extra comp
  1. Get competing offers. This is the single most effective negotiation tool. You don’t have to be aggressive. “I have an offer from [Company] at [Level]. I’d prefer to work here — can you match?”
  2. Negotiate for level, not just comp. Starting at L5 vs L4 has compounding effects on your career trajectory. Fight for the right level.
  3. Everything is negotiable. PTO, remote work, start date, relocation, learning budget, conference attendance. Ask.
Never accept on the spot. Always say: “Thank you, I’m excited about this. I’d like to take a couple of days to review the full offer.” This is expected and professional. Companies that pressure you into immediate decisions are waving a red flag.
Red flags about the company:
  • Interviewers are unprepared or late — shows they don’t value your time
  • They can’t explain what the team is building or why it matters
  • Nobody asks if you have questions — they’re not evaluating mutual fit
  • High turnover they explain away as “culture fit” issues
  • The tech stack is ancient AND there’s no migration plan
  • “We wear many hats” means “you’ll do 3 jobs for 1 salary”
  • They focus entirely on trick questions instead of real problem-solving
Red flags about the candidate (be aware of these in yourself):
  • Cannot explain past projects clearly — suggests limited ownership
  • Badmouths previous employers or teammates
  • No questions about the team, product, or engineering culture
  • Cannot articulate what they want to learn or where they want to grow
  • Over-indexes on compensation without curiosity about the actual work
  • Claims credit for team achievements without acknowledging others
1

First 30 Days: Learn and Listen

Goal: Understand the codebase, team dynamics, and business context. Ship something small.
  • Set up local development environment on day 1
  • Read every design doc, README, and runbook you can find
  • Do 1:1s with every team member — ask: “What’s the biggest problem we’re not talking about?”
  • Ship a small PR in week 1 (bug fix, doc improvement, small feature). This builds confidence and proves you can operate in the codebase.
  • Identify the team’s on-call pain points
  • Understand the deployment pipeline end-to-end
  • Start your brag document on day 1
2

Days 30-60: Contribute and Connect

Goal: Take ownership of a meaningful feature or project. Build relationships outside your team.
  • Own a medium-sized project end-to-end (design, implement, deploy, monitor)
  • Start doing code reviews with genuine, helpful feedback
  • Join on-call rotation (or shadow on-call if the team has a ramp-up period)
  • Meet engineers on adjacent teams — understand how your team’s work fits into the broader system
  • Identify one process improvement and propose it
  • Start forming opinions about the architecture — write them down
3

Days 60-90: Lead and Influence

Goal: Demonstrate ownership and begin shaping team direction.
  • Lead a design discussion or write a design doc for an upcoming project
  • Mentor a newer team member on something you’ve learned
  • Propose a technical improvement based on your fresh perspective (“beginner’s eyes” are valuable — use them before they fade)
  • Have a career conversation with your manager: “Here’s what I’ve observed, here’s what I want to work on, here’s where I think I can have the most impact”
  • Deliver your first significant project

Career Growth Interview Questions

These questions come up in behavioral rounds, manager screens, and skip-level interviews. They test self-awareness, ownership, and career intentionality — not just technical skill.
What they are really testing: Ownership, initiative, and end-to-end thinking. They want to see if you can identify an important problem, rally people around a solution, navigate obstacles, and deliver measurable results. The word “led” is doing heavy lifting — they are evaluating whether you drove the project or just participated in it.How to answer well:
  1. Start with the problem — why did this project matter? What was the cost of not doing it?
  2. Explain how you identified the opportunity (did someone assign it, or did you see the gap yourself?)
  3. Walk through how you built alignment — who did you need to convince, and how?
  4. Describe the execution — what was your approach, what trade-offs did you make, what went wrong and how did you adapt?
  5. End with measurable impact — revenue, reliability, developer productivity, user metrics, whatever is relevant
  6. Briefly mention what you learned or what you would do differently
Common mistakes:
  • Describing a project you contributed to but did not drive — interviewers will probe and the distinction becomes obvious
  • Focusing entirely on the technical implementation without explaining the business context or stakeholder management
  • Not quantifying the impact — “it was really successful” is not an answer
  • Skipping the obstacles — the interesting part is how you navigated problems, not that everything went smoothly
Example framing: “I noticed our deployment pipeline was causing 3-4 hours of developer downtime per week across 6 teams. I wrote a proposal, got buy-in from my manager and the platform team lead, and led a 3-person team over 6 weeks to rebuild the CI/CD system. We reduced average deploy time from 45 minutes to 8 minutes, which recovered roughly 15 engineer-hours per week. The biggest challenge was migrating 30+ services without disrupting ongoing work — we handled this by running both pipelines in parallel for two weeks.”
What they are really testing: Self-awareness about career management, ability to advocate for yourself, and understanding of organizational dynamics. This question also tests whether you understand the difference between being busy and being impactful — and whether you can navigate a situation where the system is not working in your favor.How to answer well:
  1. Show that you know what glue work is and why it matters — reference the concept directly
  2. Explain your approach to making invisible work visible: tracking it, quantifying it, framing it as organizational impact
  3. Describe how you would have the conversation with your manager — proactively, not resentfully
  4. Discuss distribution — how you would create systems so the glue work does not depend entirely on you
  5. Acknowledge the balance — you still need visible technical contributions alongside organizational work
  6. Show judgment about when to push back — if an organization consistently refuses to value this work, that is signal about the org, not about you
Common mistakes:
  • Saying “I’d just stop doing it” — this is immature and shows you do not understand organizational needs
  • Being resentful or passive-aggressive about it — the interviewer wants to see mature problem-solving
  • Not knowing what “glue work” is — if this question catches you off guard, you have not thought about career management deeply enough
  • Pretending it has never happened to you — it happens to almost everyone at some point
Example framing: “I’ve experienced this firsthand. I was doing a lot of cross-team coordination, onboarding, and documentation that wasn’t showing up in my review. My approach was three-fold: first, I started tracking this work in a brag document with quantified impact — ‘reduced new hire ramp-up from 6 weeks to 3 weeks’ is a concrete outcome. Second, I had a direct conversation with my manager about how this work was valued in our promotion framework. Third, I worked on distributing the load — I created onboarding templates and self-serve docs so the work scaled beyond me. The key insight from Tanya Reilly’s ‘Being Glue’ talk is that this work is essential but you cannot let it crowd out your visible technical contributions entirely.”
What they are really testing: Career intentionality, self-awareness, and whether your goals align with what the role and company can offer. They are NOT looking for a specific title — they want to see that you have thought about your growth and that this role fits into a coherent plan.How to answer well (as an engineer who understands the IC vs. management fork):
  1. Acknowledge the fork — show you know there are two paths and you have thought about which one fits you
  2. Be specific about the type of impact you want to have, not just the title you want to hold
  3. Connect your answer to this role — explain why this position is a logical step toward your goals
  4. Show depth over breadth — “I want to go deep on distributed systems and be the person my org trusts with our hardest scaling challenges” is better than “I want to be a tech lead”
  5. Be honest about what you are still figuring out — “I’m leaning toward the IC track but I want to try leading a small project team first to test that assumption” shows maturity
For the IC-track answer: “In three years, I want to be operating at a staff or senior staff level on the IC track. Specifically, I want to be the person who can take an ambiguous, cross-team technical problem — like designing our next-generation data pipeline — and drive it from problem definition through architecture through execution. I’ve seen that the jump from senior to staff is less about writing better code and more about influencing technical direction across team boundaries, and that’s the skill I’m deliberately building.”For the open-ended answer: “Honestly, I’m still exploring the fork between deep IC work and engineering management. I know I love the technical side — designing systems and solving hard problems gives me energy. But I’ve also found that mentoring and cross-team coordination come naturally to me. My plan is to lean into technical leadership over the next year or two and see whether my impact scales more through architecture decisions or through building and growing a team. What I’m certain about is that I want to work on problems at the intersection of technical complexity and real user impact.”Common mistakes:
  • “I want to be a manager” without explaining why or what kind of manager — sounds like you just want a title
  • “I just want to keep coding” — sounds like you have not thought about growth
  • Being so vague that it could apply to any role at any company — “I want to grow and learn” says nothing
  • Giving an answer that this company obviously cannot support — if it is a 20-person startup, do not say “I want to lead an organization of 200 engineers”

6. Common Career Mistakes

The trap: Taking the highest-paying offer out of college or bootcamp without considering what you’ll learn, who you’ll learn from, and how fast you’ll grow.Why it hurts: Early career is when your learning curve is steepest. The difference between a team that pushes you and a team where you coast is 3-5 years of career acceleration. A $20K salary difference at 25 is irrelevant compared to the compound effect of developing senior-level skills 2 years earlier.The rule: In your first 5 years, optimize for: rate of learning, quality of mentorship, scope of problems, and quality of your peer group. After that, optimize for whatever matters to you.Exception: If you have significant financial obligations (debt, family), take the money. Financial stress impairs learning too.
The trap: You’ve mastered your current role. Work is easy. You’re the expert on your team. You get great performance reviews. Everything is comfortable. So you stay. For years.Why it hurts: You stop growing. Your skills become specific to one company’s stack. You become a “big fish in a small pond” whose skills don’t transfer. When you finally leave (or get laid off), you discover the market has moved on.The test: Are you learning something new every month? Are you regularly uncomfortable? Are you working on problems you don’t already know how to solve? If not, you’re coasting.The fix: Either find new challenges at your current company (different team, new project, larger scope) or move. Comfort is the enemy of growth.
The trap: You do excellent work, but you never write it down. Review season comes, and you can’t remember what you did in Q1. Your manager has 8 direct reports and doesn’t remember either. You get a “meets expectations” review and wonder why.Why it hurts: Promotions go to people who can articulate their impact, not just people who had impact. If you can’t demonstrate your value, it doesn’t exist in the organization’s eyes.The fix: Start a brag document today. Update it every Friday. Before review season, send your manager a summary of your impact with quantified results. Do not rely on anyone else to track your contributions.
The trap: “I’m an engineer, I just need to be good at coding.” You avoid writing, presenting, giving feedback, and having difficult conversations. You communicate through code and Slack messages.Why it hurts: After mid-level, soft skills are the primary differentiator. Two engineers with equal technical skill — the one who communicates better gets promoted to senior. The one who can build consensus gets promoted to staff. The one who can influence an organization gets promoted to principal.Soft skills that matter most for engineers:
  1. Written communication — design docs, emails, Slack messages, documentation
  2. Verbal communication — presenting ideas, running meetings, explaining trade-offs
  3. Giving and receiving feedback — code reviews, performance conversations
  4. Stakeholder management — working with PMs, designers, leadership
  5. Conflict resolution — technical disagreements, priority conflicts
  6. Teaching and mentoring — making others better
The fix: Treat soft skills like technical skills. Practice deliberately. Read one book on communication or leadership per quarter. Ask for feedback on your communication specifically.
The trap: You see a 26-year-old staff engineer at a FAANG company on social media and feel like a failure. You read about someone who built a startup in 6 months and exited for millions. You compare your chapter 3 to someone else’s chapter 10.Why it hurts: Comparison leads to either discouragement or reckless career decisions (chasing titles, job-hopping for prestige, pursuing trendy technologies instead of building depth).The reality:
  • You don’t see the 70-hour weeks, the failed projects, the lucky timing, or the privilege that enabled their path
  • Career trajectories are not linear — many successful engineers had “slow” periods that were actually foundational
  • “Staff at 28” at a startup that folds means nothing. “Senior at 35” at a company building meaningful technology means a lot.
The fix: Define YOUR success criteria. Write them down. Review them quarterly. Some people optimize for compensation, some for impact, some for work-life balance, some for learning. All are valid. None should be dictated by social media.
The trap: You learn the basics of many technologies but master none. You can set up a React project, spin up a Django API, deploy to AWS, write a bit of Go, and dabble in machine learning. But you can’t design a complex React application, optimize a Django API for high throughput, architect a multi-region AWS deployment, write production Go services, or train and deploy an ML model.Why it hurts: The market rewards depth. A “full-stack developer who knows a bit of everything” is commoditized. A “backend engineer who can design and operate high-throughput distributed systems” is rare and valuable.The progression:
StageDescriptionValue
BeginnerLearning the basicsLow (but everyone starts here)
Advanced BeginnerCan build basic thingsMedium-low
Expert BeginnerKnows basics of many things, mastery of nonePlateau — dangerous
CompetentDeep knowledge in 1-2 areasMedium-high
ProficientIntuitive understanding, can handle novel situationsHigh
ExpertDefines best practices, others learn from youVery high
The fix: Pick 1-2 areas. Go deep. Spend a year going from “I can use this” to “I understand how this works internally.” Read the source code. Write about it. Teach it. Build something non-trivial with it. Breadth comes naturally over a career. Depth requires intentional investment.
The biggest career mistake of all: not being intentional. Drifting from job to job, task to task, without a plan is how you end up 10 years into a career wondering why you feel stuck. You don’t need a rigid plan. You need a direction, regular reflection, and the willingness to adjust.

Practice Exercises

Take 30 minutes and write answers to these questions:
  1. What are the 2-3 things I’m best at technically?
  2. What kind of problems do I enjoy solving most?
  3. Where do I want to be in 3 years — and what specific skills gap stands between here and there?
  4. Who do I admire in my field, and what specifically about their career path appeals to me?
  5. What am I avoiding that I know would accelerate my growth?
Review this quarterly. Your answers will change — that’s the point.
Look at the last 6 months of your work. For each significant project or contribution:
  1. What was the measurable impact? (If you can’t measure it, figure out how)
  2. Who benefited besides you? (Your team? Other teams? Users? The company?)
  3. What did you learn that you didn’t know before?
  4. What would you do differently if you did it again?
If you struggle to answer these, you have a documentation problem, an impact problem, or both.
Write a promotion packet for yourself — even if you’re not up for promotion. Include:
  1. Current level and target level
  2. 3-5 projects demonstrating target-level scope and impact
  3. Evidence of influence beyond your immediate team
  4. Evidence of mentoring or multiplier effects
  5. Areas of growth and how you’ve addressed them
If you can’t fill this out convincingly, you now know exactly what gaps to close.
Prepare 10 questions you would ask a company you’re interviewing with. For each:
  1. What are you actually trying to learn?
  2. What would a great answer sound like?
  3. What would a red-flag answer sound like?
This exercise sharpens your ability to evaluate opportunities even when you’re not actively job searching.
Pick a technical concept you understand well. Write a blog post, give a team presentation, or record a video explaining it. Target audience: someone one level below you.Constraints:
  • Must include a concrete example or code sample
  • Must explain WHY, not just HOW
  • Must be understandable without specialized knowledge of your specific codebase
If you can teach it clearly, you truly understand it. If you struggle, you’ve found a gap in your own knowledge.

Curated Resources for Career Growth

These are not random links. Each one is specifically chosen because it offers a perspective or framework that is genuinely hard to find elsewhere. Prioritized for quality over quantity.
  • “An Elegant Puzzle” by Will Larson — The best book on engineering management and organizational design. Even if you are on the IC track, understanding how engineering orgs work gives you an unfair advantage in navigating your career. Larson writes from deep experience at Digg, Uber, and Stripe.
  • “Staff Engineer” by Will Larson — The companion to An Elegant Puzzle, focused specifically on the staff+ IC track. Includes detailed interviews with staff engineers about what they actually do day-to-day. Essential reading if you are targeting senior or staff level.
  • “The Staff Engineer’s Path” by Tanya Reilly (O’Reilly, 2022) — The definitive guide to operating as a staff+ IC. Covers the three pillars (big-picture thinking, execution, and leveling up) with practical frameworks drawn from Reilly’s experience at Google and Squarespace. More tactical and actionable than Larson’s book — the two complement each other well.
  • StaffEng.com — A collection of stories from staff+ engineers across the industry, organized by the four archetypes (Tech Lead, Architect, Solver, Right Hand). Read 5-10 of these stories and you will develop a much clearer picture of what staff-level work looks like in practice. Also includes guides on getting the title, operating at the level, and building a promotion packet.
  • Julia Evans’ blog (jvns.ca) — Julia Evans writes about learning, debugging, and demystifying technical topics with infectious enthusiasm and clarity. Her posts on “how to ask good questions,” “things that surprised me about management,” and her zine series on systems concepts are career-growth gold. Her approach to learning in public is a model worth emulating.
  • Levels.fyi — Crowdsourced compensation data across tech companies, broken down by level, location, and company. Essential for understanding where you stand in the market and for negotiation preparation. Also useful for understanding how different companies map their leveling systems.
  • The Pragmatic Engineer by Gergely Orosz — The best newsletter for understanding how the tech industry actually works. Orosz covers compensation, engineering culture, industry trends, and career strategy with insider knowledge from his years at Uber and Microsoft. The free tier is valuable; the paid tier is one of the few subscriptions worth paying for as a career investment.
  • “Don’t Call Yourself a Programmer” by Patrick McKenzie (patio11) — A foundational essay on how the software industry actually works, written over a decade ago but still deeply relevant. McKenzie’s core argument: companies do not hire engineers to write code, they hire engineers to increase revenue or reduce costs. Understanding this reframes every career decision you make. Read this early in your career and revisit it annually.
  • Charity Majors on the IC-to-management journey — Majors has written extensively on her blog and on social media about the transition between IC and management roles. Her core insight — that management is a career change, not a promotion — is one of the most important reframes in engineering career thinking. Search for her posts on “the engineer/manager pendulum” for the key pieces.
  • Tanya Reilly’s “Being Glue” talk — Available on YouTube and as a written blog post. If you have ever felt like your important contributions are invisible, this talk will validate your experience and give you a framework for addressing it. Required viewing for anyone on the IC track and for every engineering manager.
  • The career advice compendium from senior engineers — There is no single URL, but searching for career advice threads from staff+ engineers on platforms like HackerNews, the StaffEng blog, and engineering blogs from companies like Dropbox, Stripe, and Netflix will surface patterns. The consistent themes: write more, build relationships deliberately, own outcomes not just tasks, and make your impact measurable.
Final thought: The engineers who have the best careers are not the ones who write the most code or know the most technologies. They are the ones who consistently solve important problems, make the people around them better, and communicate their impact clearly. Technical skills get you in the door. Everything else determines how far you go.