Fundamentals of Software Engineering
Bridge the gap between writing code and becoming a true software engineer.
Boot camps and universities teach you how to write syntactically correct programs, but being a software engineer is about far more than just coding. There's a gap between what early-career engineers are taught and what they need to know to be successful and advance in their careers.
This book bridges that gap. Whether you're a newly minted practitioner from a computer science degree, an intensive boot camp, or self-taught, this is your onboarding guide to the fundamentals that will set you up for a successful career. You'll learn the skills that separate beginners from experienced engineers—from reading and writing maintainable code, to testing and architecture, to career growth and working effectively with AI tools.
Unlike trendy frameworks or the language of the day, these fundamentals will last a lifetime. Even in the era of AI and agentic coding tools, you must have a solid grasp of the fundamentals to wield them properly and advance to more senior roles.

Status: Coming Soon
Expected publication date: 2025
Format
Digital & Print
Pages
Approximately 370 pages
Authors
Nate Schutta & Dan Vega
Who Is This Book For?
Aspiring Software Engineers
Perfect for those starting their journey in software development who want to build a solid foundation in engineering principles and best practices.
Experienced Developers
Ideal for seasoned developers looking to formalize their knowledge, fill gaps in understanding, or refresh their understanding of core concepts.
Students & Self-Learners
Great for computer science students and self-taught programmers who want practical insights alongside theoretical knowledge.
Team Leads & Architects
Valuable for technical leads and architects who need to establish common understanding and best practices across their teams.
What You'll Learn
This book covers essential software engineering concepts with practical examples and real-world applications.
Reading & Writing Code
Master strategies for understanding existing codebases and writing maintainable, quality code that your team will thank you for.
Modeling & Testing
Learn to use diagrams and models to design systems, and build confidence through comprehensive automated testing approaches.
UI Design & Data Management
Create usable, accessible interfaces and effectively manage data types, storage, and performance in your applications.
Architecture & Production
Understand architectural trade-offs and learn how to deploy and maintain code in real production environments.
Productivity & Learning
Optimize your development workflow and discover effective strategies for continuous skill development as an engineer.
Professional Skills & AI
Master communication, collaboration, career management, and learn how to work effectively with AI tools as a modern engineer.
Table of Contents
Part 1: Core Skills
- 1.Programmer to Engineer - Making the transition from coding to engineering thinking
- 2.Reading Code - Strategies for understanding existing codebases
- 3.Writing Code - Best practices for creating maintainable, quality code
Part 2: Technical Practices
- 4.Software Modeling - Using diagrams and models to design software systems
- 5.Automated Testing - Building confidence through different testing approaches
- 6.Working with Existing Code - Safely navigating and changing unknown code
Part 3: Application Development and Design
- 7.User Interface Design - Creating usable and accessible interfaces
- 8.Working with Data - Managing data types, storage, and performance
- 9.Software Architecture - Understanding trade-offs and architectural decisions
- 10.To Production - Deploying and maintaining code in real environments
Part 4: Professional Development and Growth
- 11.Powering Up Your Productivity - Optimizing your development workflow
- 12.Learning to Learn - Effective strategies for continuous skill development
- 13.Mastering Soft Skills in the Tech World - Communication and collaboration
- 14.Career Management - Planning and navigating your professional path
- 15.The AI-Powered Software Engineer - Working effectively with AI tools