Diagnostics everywhere!

For a long time, I’ve believed that diagnostic skills are incredibly important for software engineers, and often poorly understood.

The main evidence I see of poor diagnostic skills is on Stack Overflow:

  • “I have a program that does 10 things, and the output isn’t right. Please fix.”
  • “I can’t post a short but complete program, because my code is long.”
  • “I can’t post a short but complete program, because it’s company code.”

I want to tackle this as best I can. If I can move the needle on the average diagnostic skill level, that will probably have more impact on the world than any code I could write. So, this is my new mission, basically.

Expect to see:

  • Blog posts
  • Podcast interviews
  • Screencasts
  • Conference and user group talks

In particular, I’ve now resolved that when I’m facing a diagnostic situation that at least looks like it’ll be interesting, I’m going to start writing a blog post about it immediately. The blog post will be an honest list of the steps I’ve been through, including those that turned out not to be helpful, to act as case studies. In the process, I hope to improve my own skills (by reflecting on whether the blind alleys were avoidable) and provide examples for other developers to follow as well.

There’s a new “Diagnostics” category on my blog – everything will be there.

9 thoughts on “Diagnostics everywhere!”

  1. Diagnostics for the win!

    One of the main assignments in programming is keep the program running.
    Which, as far as I believe, requires a decent amount of diagnostics being implemented in the program.

    I will be looking forward to your posts especially on subjects about logging.
    Most of all, “when do you log too much or too little?” and “How to not drown in a sea of logs.”

    Like

  2. One of the funniest things I’ve ever heard came to me while I was a teacher’s assistant in college on a programming course. A student came to see me saying “My program should work – it is too short to have any bugs in it.”

    Like

  3. Sounds great.
    A few quick thoughts: establishing a small local repro (often by divide and conquer), contrasting with one or multiple positive cases, using your experience and intuition to list some suspects then rule them out, searching for related issues (bug reports, coworkers experience, recent changes), taking notes as you investigate (writing your understanding and theories as you go),…
    –Julien

    Like

Leave a comment