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.
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.”
LikeLike
Awesome! I always love reading breakdowns of how people solve problems
LikeLike
Did you mean “improve”
LikeLike
Yup, will fix.
LikeLike
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.”
LikeLike
I also was playing with the idea to put up a Wiki with the most efficient ways to track down performance and memory leaks with free tools. It might be worthwhile to check out the newest https://aloiskraus.wordpress.com/2017/08/17/memanalyzer-v2-5-released/ which should help the average developer also to optimize the memory usage of their application with an easy to use command line tool.
LikeLike
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
LikeLike
Great way to learn, can’t wait for this posts!
LikeLike