Working with systems that are already shipped for real customers. Commited to deliver the best possible software exprience to the end users.
Actively involved in shipping code and building tools. Procative engineers.
Bandwidth to follow up on the references. Enthusiasm to learn more and grow in career.
Patience to understand the impact of ideas being discussed.
Willingness to followup on ideas in daily engineering tasks.
Debugging is more than just attaching a debugger to a running program. Identifying the correct root cause is a skill. In addition, the complexity of distributed systems and multi-language stacks makes debugging even harder.
The key to a long career in software is the ability to build large systems. Large-scale systems cannot be created on a single machine using a single programming 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.
The course takes a generic view of workflows leading to frequently occurring debugging problems in large systems. Intentionally no tool details or deep dives are included. Instead, a guidance framework is provided for the students to explore further in their day job or software projects.
Distributed systems are a challenge in debugging. Not understanding a problem can easily lead one to debug the wrong services and stacks. It is always a communication problem first. Focus on building a generic debugging mental framework instead of becoming dependent on tools like windbg, and gdb as the primary response to any situation.
This course is for people who consider themselves problem solvers ahead of their designation and qualifications. For example, if you believe only developers should debug or only support should talk to customers, then this course is incompatible with your ideas.
Each section represents the debugging consideration for a particular scenario.
[Sept 2022]: Course with rich details and elaborate real-life examples
Who this course is for:
- Engineers working on call rotation for customer support
- Engineering working with SRE teams on a regular basis.
- Engineers looking to grow in roles of senior software engineer, team lead, tech lead
- Active programmers in any language with multiple language based systems or products
- Students looking forward to work in software industry