I suggest you read this blog with Firefox 3.0 or later. There appear to be problems with the line numbering of code samples when using Internet Explorer.

Friday, January 16, 2009

Introduction

I'm Jim Babka, and have been a software engineer for 24 years. Over the course of my career, I have often been called upon to debug some very difficult problems, both in the office and at customer sites. This has given me a good perspective on designing code in the first place to make debugging easier. However, as I reflect upon my career, and as I have talked to many other highly skilled software engineers, I have realized that there is a wide disparity in practical debugging skills, even when people are otherwise equally skilled at writing code.

The reason for this is that many software developers have been left to their own devices to learn debugging. So, they have learned to use a “gunslinger” approach to debugging. This approach works well for class projects. However, it is unsuitable for professional development. The professional developer needs to put aside their early training (or lack thereof), instead incorporating a more disciplined and thorough approach to debugging that starts with good serviceability development techniques and ends up with deliberate methodology for debugging hard problems. While this may cause debugging to take longer in some cases, it will pay huge dividends when difficult problems get much scrutiny.

So, I decided to start this blog to discuss the serviceability and debugging techniques that are required for any enterprise software developer to be truly successful. It is my hope that some of the ideas here may eventually lead to improvements in the education and training of software engineers.