~/blog/the-software-engineers-guidebook-by-gergely-orosz.mdx
blog15 min#books#career

the software engineer's guidebook review

Oct 8, 2024

Similar to an earlier post on Clean Code, this is another book overview! The Software Engineer’s Guidebook (shortened to SWEG below) is written by Gergely Orosz, author of The Pragmatic Engineer newsletter. Curious about his process? He shared his experience authoring the book!

With my education budget, I purchased a copy of SWEG! I’ve considered whether to steer my career into leadership or a more technical track. This book is well worth it, covering multiple aspects of both options. I’ll undoubtedly reference this for many years!

Below, we’ll review the book’s first two sections. They cover career fundamentals and building competence, which I chose to focus on because they are the most actionable sections. I also decided to present this part to my team.

Although I cover a lot from the book, I’ve added my own interpretations and content simplifications. What you see here is only brushing the surface.

If any of this interests you, please purchase a copy for yourself! 👌

In this overview, we’ll cover:

  1. 🎬 The Presentation
  2. 💡 My 3 Big Takeaways
  3. 🔨 Career Fundamentals
  4. 🔧 Building Competence

🎬 the presentation

I recorded a Loom presentation if you’d prefer to hear and/or visually see this information. It’s about 22 minutes long. Here is a link to the slides!

💡 my 3 big takeaways

  1. No one will advocate for your career better than you. Take ownership!
  2. Write it down. Yes, everything!
  3. Each journey is entirely unique.

🫵 no one will advocate for your career better than you. take ownership!

When stated, it seems obvious. You are in control of your own career. In my Power of Career Change post, I talked about “ambiguous ambition,” where I didn’t have direction in my career path. I am happier actively making goals, completing activities toward those goals, and fulfilling a career trajectory.

I bring related topics to my one-on-one meetings. Here’s a terrific read in a collaboration post from High Growth Engineer on working with your manager(s).

📝 write it down. yes, everything!

Documenting accomplishments, challenges, and projects cannot be understated. Don’t forget to add peer feedback! You will better understand what you’re doing now and what’s next. This is also a solid tool when discussing your role. This could be a promotion conversation aid, a resume update reference, or proof if you are in a sticky situation.

Be consistent and store it on a personal device or account to retain access. I have a weekly reminder, tried a few templates, and currently use a Trello board adaptation. (Other options: Brag Document, Notion, spreadsheet(s), etc.)

🦋 each journey is entirely unique.

Through Meetup, I meet women from all over who reside in my state and work in tech. Their stories and tech roles are different, even if they have the same title! The best we can do is learn from other’s experiences and apply their lessons to our challenges.

Whatever advice, suggestions, and feedback you receive, you are responsible for discovering how and whether to apply it. Gergely did an excellent job clarifying that in this book. The information is a reference, not explicit instructions.

🔨 career fundamentals

The book starts with core aspects of career growth and ideas for reflection. We’ll touch on some concepts, but I encourage you to read it to understand them fully!

“Career paths are diverse, and there’s no simple way to define what a “good” career path looks like, as this varies from person to person. The best you can do is figure out which career path is interesting and achievable for you.”

→ I won’t touch on compensation, company tiers, performance reviews, promotions, and switching jobs here, but the book covers these in detail.

🏢 types of tech companies

There are several types of companies that hire technical workers.

With such variety, how do you know what’s right for you? That may take some thought. Narrow realistic options based on your circumstances. Talk with other engineers to learn about their experiences and ask questions!

👟 types of career paths

Once you find a role, how do you determine a path? Each is unique and could change over time, but how do you get there?

☝️ The Single-Track Career Path - In some cases, engineers move from an IC (Individual Contributor) role to management. They may remain long-term or later return to engineering if unsatisfied, possibly moving companies in the process.

Level IC Manager
Level 1 SWE
Level 2 Senior Engineer
Level 3 Staff/Principal Eng Manager
Level 4 Director
Level 5 VP of Engineering
Level 6 CTO

✌️ The Dual-Track Career Path - This is the flexible path; it’s probably more applicable to most because of that flexibility!

Some engineers stick with IC, some follow the single-track path, and some switch between them.

Level IC Manager
Level 1 SWE
Level 2 Senior Engineer
Level 3 Staff Engineer Manager
Level 4 Senior Staff Eng Director
Level 5 Principal Eng Senior Director
Level 6 Distinguished Eng VP of Engineering
Level 7 Fellow Senior VP of Eng
Level 8 CTO

⚖️ cost centers and profit centers

Some teams or projects are considered cost centers, while others are profit centers. Each has valuable experience, and working in both provides a more well-rounded engineering perspective.

📉 cost centers

Cost centers are needed for smooth operation, but they don’t typically generate business income. The challenges tend to be more interesting. Experienced engineers may join a cost center to build creative solutions for more significant problems. A downside is turnover. These teams are often targets when businesses need to reduce costs or engineers seeking career advancement could transfer to a profit center team.

💰 profit centers

Put simply, profit centers directly generate revenue for the business. Promotions can be more achievable in a profit center; it’s usually easier to reward profit! Performance reviews usually get better “scores” and bonuses, too. Engineers may join a profit center team to focus on growth or more straightforward challenges.

✨ career progress alternatives

There’s more to a career than finances and benefits, right? Absolutely! Here are a few to consider in your long-term career.

🎯 owning your career

No one else will advocate as well as you can throughout your career.

🏹 you’re in charge

It’s up to you! Set goals, track goal efforts, and iterate. Managers don’t usually have enough bandwidth to grow individual careers. Here are some ways to take charge:

  1. Tell your manager(s) and peers what you care about.
  2. Share work you did that others may not notice.
  3. Create opportunities for feedback from others.

🏆 be seen as someone who “gets things done”

The easiest way is actually to get stuff done! Ideally, your work is high-quality and completed reliably. Finish the work you commit to and overdeliver when you can.

Spend your efforts on impactful projects. How do you find these? Explore and ask questions to understand team and business priorities. Focus on these essential tasks.

Talk about things you complete! Don’t go overboard, but your manager should definitely hear about it. Share it if there is a measurable business impact, the work was unusually complex, or it took great effort.

✏️ keep a work log

Identify and stick to a solution and a cadence that works for you. What should you track? Significant code changes, code reviews, design docs, discussions, planning, helping others, postmortems, and anything else that takes time and has an impact.

A work log is powerful for identifying priorities and keeping them top of mind. You may feel empowered to say “no” or re-prioritize. Viewing completed work can bring a sense of accomplishment, too. It’s an incredible reference to quantify your impact.

💬 feedback

Give and receive feedback as often as possible!

So, if someone shares constructive feedback with you, remember it would’ve been easier for them to say nothing. Keep this in mind if your instinct is to react defensively.

Receiving:

Giving:

It’s helpful to consider your approach for positive and critical feedback.

🤝 ally with your manager

Your manager will impact your career. It’s a significant workplace relationship! One who believes in, advocates for, and supports your career goals can make a huge difference. How can you foster this relationship? It takes time.

Proactively share your log and accomplishments, ask for specific feedback, and discuss professional goals in regular one-on-ones. They have a lot on their plates!

Show reliability! Build trust by delivering what you agree on and providing updates when you don’t. You should be open, honest, and transparent to your comfort level. Hopefully, it will be mutual. Don’t forget to ask for help when needed!

This relationship isn’t only about you. Take time to understand their goals and challenges. You might help each other, or you may learn more about team nuances to identify opportunities in the future. Try to handle a task weighing on the team, especially if it helps you grow. Your manager is human; empathy can go a long way!

🐢 pace yourself

The “Stretching, Executing, Coast” method can help prevent burnout. These are states of being in your day-to-day. Navigate between them.

🤔 owning your own career advice

🌱 thriving in different environments

There are different modes of work environments. Learning to work in each has a well-rounded result as companies and teams may shift over time.

First, we’ll compare product and platform teams. Rotating between these builds empathy for various “customers.”

Next, we’ll cover company modes: peacetime and wartime.

🔧 building competence

The following are essential things to master to be considered a reliable and “competent” developer from the book’s second part.

These things take time; keep pushing forward!

💪 getting things done

Competent engineers are good at breaking down work, providing realistic estimates, unblocking themselves, and delivering quality work.

How do they do this?

Focus on the single MOST important thing first, no exceptions. Learn to say “no.” Necessary things arise, but this adds up. It’s a balancing act. I like the offered tactic of, “Yes, I’d like to help, but…” to provide context for your “no.”

Unblocking yourself is a skill! Start to identify when you’re stuck, like spending more than 30-60 minutes without meaningful progress.

Leverage ideas to get unstuck:

After a solid solo try, seek help! Asking for help is great, but come prepared to share what you’ve done to avoid wasting others’ time.

What if a person blocks you? This is more common at larger companies, and getting contact help is sensible. You may need to escalate delays, but handle this delicately to retain relationships!

Effectively breaking down work takes thought. Begin at a high level and identify “chunks” of work. Then, narrow “chunks” into straightforward tasks. If they’re unclear, break them down again. Don’t be afraid to add, remove, or change tasks.

Estimations are challenging. You will be asked. Use your (and peers’) experiences with the codebase, language, or similar work to provide estimates. When that’s not possible, prototype and timebox. You can also provide ideal and “worst case” options when there are unknowns, leaning toward the “worst case.”

Find mentors to help you grow. This is a group of people, not one person. You may look to more experienced engineers through a formal work program or informal, ad hoc one-on-one requests for help. Don’t forget about online mentors who share their experiences more publicly in blogs, podcasts, or books.

Retain a positive “goodwill balance” and help others, too. You’ll need help, and this balance level spans a spectrum. You will have a higher balance when you first start (as a junior or during onboarding). People want to help! But, as you take, be sure to give back with your expertise. Give thanks either privately or in a public team setting.

Take initiative when you can. Some of the most productive engineers take on work that wasn’t assigned! Talk with others to learn about projects and opportunities to volunteer. Try to document unclear things, take on investigations, research tools or frameworks your team uses, and talk with your manager about upcoming projects.

⌨️ coding

Practice. Practice more. You need to be proficient to translate your ideas into working code efficiently. Here are some ways to practice:

👀 readable code

Crafting code that others can read (and maintain) is equally important as code that is correct. What readable code actually is may vary by team, company, and language. Ultimately, if you and others you work with can easily understand it, then it’s readable!

You can practice this by revisiting the code you drafted to improve it before asking for a code review. When you receive feedback in code reviews, try to implement and understand them. Coding is a social activity; pay attention to the questions reviewers ask and ask follow-up questions. They might hold clues to improving readability!

writing quality code

Like all of the other advice in this section, this comes with practice. Some things to work on include using the correct levels of abstraction, handling errors well, and being wary of “unknown” states. In any case, you may have to experience these things to learn to do them well.

😎 software development

Wouldn’t you know it? As you go along, there are also software development-specific things you can work on!

👌 become proficient in a language

Learn the fundamentals and work to understand advanced features. You can consult docs, find a good reference, look at code examples, study a book, or watch videos. Then go deeper! Learn about what happens “behind the scenes.” It’s recommended to go deeper before going more broad.

Master the “main” framework you use with a language. You can follow the same approach as learning a new language. Open-source frameworks have the added benefit of a visible codebase to see “under the hood.”

Once you have a good handle on one language, learn a second. It doesn’t have to be done arbitrarily; seek out helpful opportunities! AI as a tool can aid you to learn faster, too. Doing this helps you better compare language strengths and weaknesses and, hopefully, keeps you from repeatedly using the same language.

🐞 debugging

Get to know your IDE. Some of them have really powerful runtime debugging tools! You should also watch more experienced developers debug, perhaps during a paired debugging session.

Although it sounds counterintuitive, learning to debug without tools can be helpful. There’s the well-known console.log method, but you can also use paper to draw/write it out or write unit tests to help pinpoint issues.

♻️ refactoring

This also takes practice! Make this an everyday habit and work on it, starting with your own. After you write code, revisit it and see what you can improve. Some IDEs have refactoring capabilities. Look at yours and give it a shot if yours has this ability. Code reviews can give you more ideas for refactoring. It’s a good idea to give them a shot!

Reading through code should provide new insights: you can deepen your knowledge of the codebase and begin to spot inconsistencies. Make notes as you go along and seek feedback to see if a refactor is worthwhile before diving in. For an easier start, you could look at refactoring tests and the helpers for those tests. It will deepen your codebase understanding; ideally, others will be able to better understand.

🧪 testing

Speaking of tests, competent software developers ensure their code works, plain and simple. Before requesting a code review, they test the code. Preferably, your team will use automated testing to make this more seamless. In any case, reliable developers care deeply about edge cases and work to cover their work as much as possible.

🧰 tools of the productive software engineer

We’ve covered a lot already, but there are a few more things to consider.

I hope that this information is concise and digestible while also being helpful!

The book was excellent, filled with ample stories, examples, and actionable advice I didn’t cover that can be used at any career level in the current tech environment.

Get yourself a copy, too, to reference as you navigate your career!

thanks so much for reading! ✨
🧡support the work

All of this (the podcast, the posts, the projects) happens on nights and weekends. If something here saved you a headache, the tip jar is always open.

ko-fi.com/mindiweik →
// related posts
Feb 20, 2024clean code by robert c. martinJul 9, 2026the job search, honestlyJan 27, 2026building a compassApr 15, 2025the hidden currency of connection

// comments

Loading comments…

    leave a comment

    // subscribe

    New posts and episodes by email. No spam, unsubscribe anytime.