• Post category:StudyBullet-8
  • Reading time:5 mins read


Debugging is about identifying the root cause of an unexpected behavior in a software system. It’s more than a bug.

What you will learn

Debugging as a deductive process

Things to consider in production system analysis

Methods to isolate root cause without rushing to attaching debuggers

Understanding systems as permuatation of components

Factors to consider while dealing with systems with components owned by different teams

Different engineering communication channels that dictate the scope for debugging

Description

Debugging is more than attaching a debugger to a running program. Identifying the correct root cause is a skill. The complexity of distributed systems and polyglot stacks makes debugging even harder.

This course is meant for people who consider themselves problem solvers ahead of their designation and qualifications. In case you believe only developers should debug or only support should talk to customers then this course is incompatible with your ideas.

The key to a long career in software is the ability to build large systems. Large-scale systems cannot be built on a single machine in a single language. Hence one has to evolve into a generalist engineer to lead such efforts. Irrespective of role, understanding complexity and ability to navigate it during production fire fighting is a growth accelerator in the industry.


Get Instant Notification of New Courses on our Telegram channel.


The course takes a generic view around the workflows leading to frequently occurring debugging problems in large systems. Intentionally no tool details or deep dives are included. A guidance framework is provided for the students to explore further in their day job or software projects.

Each section represents the debugging consideration for a particular scenario.

Course Outline

  • Section 1: Introduction to communication flows in the industry
  • Section 2: Ecosystem Overview
  • Section 3: Production and Maintenance
  • Section 4: Deployment
  • Section 5: Integration
  • Section 6: Implementation
  • Section 7: Conclusion
English
language

Content

Introduction

Introduction
Communications in software lifecycle
Communications: Overall Workflow
Customer Support Workflow
Bug Workflow
Production Support Workflow
Feature Workflow
Product Workflow

Basic System Overview

Understanding the scope
Data boundaries
Challenges

Production and Maintenance

Alerts
Handling Production issues
Log Files
Core Files
Debug Binaries
IMPORTANT : Security

Deployment

Platform Compatability
Scale
Fault Tolerance
Disaster Recovery
Upgrades and rollbacks
Configuration Management

Integration

Integration Tests
Third Party Frameworks

Implementation

Unit Tests
Design and Debugging

Conclusion

Conclusion