Gergely Orosz's book, "The Software Engineer's Guidebook," takes readers on an enthralling exploration of the realm of software development, working in various companies, and startups.
A software engineer in a startup or Big Tech company traces the journey in this book, starting from a beginner developer to a principal engineer.
This book serves as a comprehensive guide, especially beneficial for new engineers and individuals with limited work experience in a few companies.
While I was perusing this book, memories of the days when I embarked on my software engineering journey flooded back to me. I reminisced about the various challenges, emotions, and setbacks I encountered, and reflected on how I managed to overcome them.
Title: The Software Engineer's Guidebook
Author: Gergely Orosz
Genre: Technical Fiction
The Software Engineer's Guidebook
Summary of Each Section
Part 1: Developer Career Fundamentals
- In the Career Paths chapter, explores a range of captivating subjects, including the different types of technology companies, career paths in software engineering, compensations and company "tiers," cost and profit centers, and diverse perspectives on career progression.
- In the Owning Your Career chapter explores a range of captivating subjects. These subjects include taking charge of your career, achieving excellence in completing assigned tasks with the utmost quality, maintaining a work log, providing and receiving feedback, cultivating a healthy relationship with your manager, and adopting the model of pacing yourself as a software professional through stretching, executing, and coasting.
- In the Performance Reviews chapter explores several intriguing subjects, such as comprehending the factors that drive companies and establishing goals, exploring the influence of habits, outlining the necessary activities to be completed before conducting a performance review, and effectively analyzing and utilizing feedback to foster constructive growth.
- In the Promotions chapter explores various aspects such as how to make decisions for promotions, the procedures for promoting individuals, the terminal level, the strategies that major tech companies use to promote individuals, recommendations for securing a promotion, and the importance of adopting a long-term career perspective.
- In the Thriving in diverse environments chapter discusses how to do well in different workplaces with different cultures and teams. It explains how to understand and succeed in various organizations, including the roles of platform and product engineers. The chapter also mentions the importance of recognizing the differences between "Peacetime and Wartime" mindsets and provides insights into different company cultures.
- In the chapter about Switching Jobs discussed the right time to consider new opportunities. We talked about waiting for a promotion instead of changing jobs, preparing for technical interviews, considering down leveling or up leveling your title, and joining a new company.
Part 2: The Competent Software Developer
- In the Getting Things Done chapter covers various topics such as how to prioritize important tasks, how to overcome obstacles, how to break down work and estimate time, how to seek guidance from mentors or experts, how to maintain a positive reputation, and how to take proactive steps.
- In the Coding chapter, we discussed the importance of extensively practicing coding and the methods for writing code that is both readable and of high quality.
- In the Software Development chapter covers topics such as how to become proficient in any programming language, how to master the art of debugging, how to enhance code quality through refactoring, and how to perform testing.
- In th chapter on Tools for productive software engineer covers how to set up the local development environment, the commonly used tools, and the methods for fast iteration.
Part 3: The Well-Rounded Senior Engineer
- The chapter "Getting Things Done" discusses the responsibilities of a senior engineer. It covers topics such as task management, understanding perception versus reality, handling personal work and team dynamics, and considering the bigger picture about the product.
- The chapter on Collaboration and Teamwork covers various aspects of being a senior engineer. It explains how to conduct Code Reviews, engage in Pair Programming, provide Mentoring, give Review Feedback, collaborate with other engineering teams, and inspire others through leading by example.
- The experienced engineers excel in different areas covered by the Software Engineering chapter, such as languages, platforms, and domains. The chapter also discussed the importance of debugging skills, managing tech debt, and the significance of documentation. Additionally, it emphasized that a team should implement and scale best practices.
- The Testing chapter covered the importance of testing in software engineering. It discussed various areas that software engineers should focus on, such as Unit tests, Integration Tests, End-to-End tests, models for automated testing, testing in production, and the advantages and disadvantages of automated testing.
- The Software Architecture chapter discussed the significance of Design Documents, RFC's, and architecture documents. It also highlighted the importance of prototyping and proof of concept (POC), implementing domain-driven design, and the final software architecture that is delivered.
Part 4: The Pragmagtic Tech Lead
- The Technical Lead or Lead Engineer in relation to Project Management tasks such as Project Kickoffs and milestones, "Software project Physics", daily project management, risk and dependencies, and project completion were discussed in the Project Management chapter.
- Companies use various methods to ship their products in the Shipping to Production chapter. They understand the significance of verification and protections. They also embrace the idea of taking calculated risks to expedite the process. Additionally, they consider factors when defining a deployment process and choosing the appropriate approach.
- The Stakeholder Management chapter covers stakeholders' roles and responsibilities, ways to identify them, how to handle problematic stakeholders, and how to learn from them.
- The chapter on Team Structure discusses how to enhance team focus, the methods used for team processes, and the different roles and titles within a team.
- The chapter on Team Dynamics discusses the role of a technical lead in maintaining a positive and motivated team, resolving conflicts, and enhancing team dynamics.
Part 5: Role-Model Staff and Principal Engineers
- The staff and principal engineer explain the roles in the Understanding Business chapter. They understand business parameters such as Key Performance Indicators (KPIs), Objectives and Key Results (OKRs), their team, product, company, and the industry domain they work in, including public companies and startups.
- The Collaboration chapter covered topics such as internal politics, influencing others, working with managers, staff, and peers, the significance of growing one's network, and assisting others.
- The Software Engineering chapter emphasized that coding skills are significant for staff and principal engineers. It highlighted that these skills aid in engineering processes, educate engineers on using tools for greater efficiency, ensure compliance and privacy, and promote secure development practices.
- The Reliable Software Systems chapter discusses various methods for creating and managing dependable systems. These methods include Reliability, Logging, Monitoring, Alerting, OnCall Support, Incident Management, and Building resilient systems.
- The Software Architecture chapter discusses important areas that planners and solution finders should consider when dealing with complex projects and issues. These areas encompass the significance of simplicity, the management of architecture debt, the creation of scalable architecture, the balancing of architecture with business priorities, and the traits of a software architect.
Part 6: Conclusion
- As a beginner or seasoned software engineer, you should always seek continuous learning. You should stay curious, push yourself, stay updated with the industry, and remember to take regular breaks.
In a nutshell, Part 1-6 which is applicable to all engineering levels, from novice software developer to principal engineer and above engineers and part 2, 3, 4, and 5 applicable mainly for senior engineering levels.
Recommendation
I strongly suggest that fellow developers and individuals with an interest in programming and problem-solving consider "The Software Engineer's Guidebook" as a valuable resource.
This book effectively combines technical expertise with an intriguing narrative, resulting in a distinctive and pleasurable reading experience.