Level Up Your Debugging
One of the most frustrating things about bugs is you get a bug report, someone is breathing down your neck to get it fixed, customers are upset, and everyone thinks it should be easy to find and fix. And you have no clue where the issue is.
We’re lucky if we have enough details to even know where to begin looking. Often we are stuck having to dig into the code while trying random things to figure out where the actual issue is. It’s never as easy as just jumping to a code line everything points to and changing something.
This is even more stressful when we aren't familiar with our debugging tools or don't know any processes to effectively debug. I remember when I first started out trying to fix issues by going all over the place, trying every random thing, and becoming completely lost. It was stressful and I often felt like I had no clue what I was doing. Level Up Your Debugging contains all the tips, tricks, and processes I picked up over my 10+ years as a developer that I wish I would have known when I first started.
Why Should You Get This Book?
This is currently an early access book that will still be a work in progress while I gather more feedback. It will be complete with all content but will need feedback and edits to make it a 100% complete and polished book. Since it is early access, I am offering it as a pay what you want for now.
You should read this book if you are actively involved in writing and debugging software. This is especially true if you find debugging frustrating and stressful. If you want to learn different processes, tools, and tricks to make debugging less stressful and more efficient, this book will help.
After reading this book, you should be able to:
- Know the features debuggers offer and how it is beneficial to take the time to learn and set them up
- Move away from relying on console.log and print statements for debugging
- Have a process for debugging issues
- Know how to debug locally and in production
- Know how to ask for and receive help while debugging
- Know about monitoring tools that help catch issues in production
- Be more relaxed and efficient while debugging
Who Is This Book For?
Any developer that gets frustrated when debugging and wants to improve their debugging process. This will help beginner to senior developers that don't know their debugger inside and out and aren't already experts at debugging.
What type of software you write or the language you use does not matter. If you still use console.log, debug.log, or print statements as your only means of debugging, this book will help you. Or, if you fix bugs with ad hoc processes or by poking around the code, you will still find helpful advice inside.
Who Is This Book Not For?
This book will not help you if you are a Sherlock Holmes of debugging. Any developers who are already expert debuggers who can quickly and easily solve any bug probably won't find much value in this book. If you know your debugger inside and out or already have processes that work, this book will probably be below your skill level.
Table of Contents
- Introduction
- Thank You And Asking For Feedback
- What Is This Book About?
- Who Am I?
- Why Am I Writing This Book?
- Why Should You Read This Book?
- Introducing Debugging
- What Is Debugging?
- How Do Most Developers Start Debugging?
- Local VS Production Debugging
- How To Find The Problem?
- Gather Details
- Reproduce The Problem
- Ask Someone Else
- Debugging Tools
- Instrumentation
- Stack Traces
- Debugger
- Processes
- Backtracking
- Start At The Entry Point
- Problem Simplification
- Divide And Conquer AKA Binary Search
- Form A Hypothesis
- Bug Clustering
- Rubber Duck Debugging
- Learn Your Debugger
- Why Using A Debugger Is Important
- Getting Started With A Debugger
- Advanced Debugging
- Tips For Specific Types Of Errors
- Syntax And Type Errors
- Runtime Errors
- Logic Errors
- Data Errors
- Errors Across Multiple Systems
- Race Conditions And Performance Issues
- Make Production Debugging Easier
- Replicating Production In Lower Environments
- Remote Debugging
- Monitoring Tools
- More Debugging Tips
- Take A Break
- Google The Problem
- Ask For Help
- Make sure you know what code should do
- Don’t Make Assumptions
- Avoid Fixing Symptoms
- Don’t Ignore The Basics
- Focus On One Bug At A Time
- Only Change Enough To Fix the Bug
- Test Your Fix
- Add Automated Tests
- Document Everything
- Don’t Swallow Exceptions
- Refactor Code When It Is Hard To Debug Or Maintain
- Conclusion
Who Am I?
Hi, my name is Kevin Hicks and I am a software developer that has been writing code for over 10 years. I primarily work as a senior software engineer leading teams on big enterprise projects at a day job and freelance for clients on the side. I've worked on many things from an iOS game to web applications but my primary focus is on writing custom web applications and SaaS apps. I'm now looking to give back to the dev community and transition into teaching and helping other devs.
You can find me at the following places:
You'll get an e-book full of tips, advice and processes to make debugging easier