Phy-gital Roundtable: Breakfast Roundup from Germany and Netherlands

02 May '15 | Debjyoti Paul

German Shoppers: Meet Them in the Fast Lane to Phy-gital

15 January '15 | Ralf Reich

Shoppers Will Share Personal Information (But They Don’t Want to be “Friends”)

15 January '15 | Anil Venkat

Modernize or Perish: Property and Casualty Insurers and IT Solutions

14 January '15 | Manesh Rajendran

Benelux Reaches the Phy-gital Tipping Point: Omnichannel Readiness is Crucial

13 January '15 | Anil Gandharve

The New Omnichannel Dynamic: Finding Core Principles Across Industries

13 January '15 | Debjyoti Paul

Technology does not disrupt business – CIO day 2014 Roundup

02 December '14 | Anshuman Singh

Apple Pay – The Best Is Yet To Come

02 December '14 | Indy Sawhney

Digital transformation is a business transformation enabled by technology

01 December '14 | Amit Varma

3 Stages of FATCA Testing and Quality Assurance

06 October '14 | Raman Suprajarama

3 Reasons why Apple Pay could dominate the payments space

18 September '14 | Gaurav Johri

Beacon of Hope: Serving Growth and Customer Satisfaction

05 August '14 | Debjyoti Paul

The Dos and Don’ts of Emerging Technologies Like iBeacon

30 July '14 | Debjyoti Paul

What You Sold Us On – eCommerce Award Finalist Selections

17 July '14 | Anshuman Singh

3 Steps to Getting Started with Microsoft Azure Cloud Services

04 June '14 | Koushik Ramani

8 Steps to Building a Successful Self Service Portal

03 June '14 | Giridhar LV

Innovation outsourced – a myth or a mirage or a truth staring at us?

13 January '14 | Ramesh Hosahalli

What does a mobile user want?

03 January '14 | Gopikrishna Aravindan

Debugging – Critical Questions!

Posted on: 11 August '10

Debugging is a very challenging as well as an interesting aspect of Software Engineering. Debugging starts on a somber note when a defect or an issue is detected in a software product and ends on a positive note of identifying the cause. Hopefully fixing the defect follows.

I see project managers sulking at times on not having smart engineers – the so called human debuggers, in a team of bright developers. I am sure every one of you has come across such situations.

Great developers need not be successful debuggers. Sometimes we find QA engineers becoming very successful in debugging as compared to developers. More interestingly, the synergy emanates when a pair of engineers (a developer and a QA engineer) does debugging. We can call it ‘pair-debugging’ and am sure those who have spent days and nights in debugging would appreciate what it takes to debug errors that are very simple but, take huge efforts to debug. More interestingly, when a developer spends several hours on debugging an issue he naturally collaborates or joins hands with a QA engineer to get it straight.

Debugging starts when you raise questions and seek answers. Software engineers have to ask themselves several critical questions to ensure that they are able to take one step ahead in order to improve product quality while debugging. Here are such questions.

1. Is this bug reproducible in all environments (QA, Staging, Dev, and Prod)?

2. Do lookup tables in the development and testing environments have data similar as compared to production environment?

a. Could a fixed defect cause another defect due to data discrepancies?
b. Does the fix require any predefined data or parameters to be ensured at the target environment    (test or production)?
c. Are we including this fact in the release note?

3. Can there be external factor(s) governing this defect? (For example, paper size in case of a defect found in a report)

4. Could there be similar errors in the system? Have we attempted to find similar errors –

a. in other operating systems, databases, browsers, etc?
b. across all combinations of Users and Roles?
c. in other Transactions or User Interfaces or Reports?

5. Have we applied the fix with all necessary components/changes? (Application code changes, additional components, database stored procedures, additional look-up data, and parameter file entries?)

6. What happens when we fix this bug? What is going to be its impact on end-user experience (of all users) or user-experience of business critical users or availability and performance of business critical modules?

7. How can I change my debugging approach to prevent such bugs from appearing again?

8. Does the defect fixing team know the right set of Configuration Items (Programs, Parameter Files, DB Scripts – Table Creation Scripts, Stored Procedures, etc) and related resources/interfaces (Printer, Paper Type, External Interfaces,) that correspond to this defect?

The synonyms of debug include ‘clear up’, ‘correct’, ‘sort out’, ‘repair’, ‘fix’, ‘mend’, etc. In practice, debugging does not stop as soon as a bug is found and fixed. There is more to it. This is just a lighter attempt to debug debugging. Any thoughts or experiences on debugging?

  • Raja

    Good article!

    Another point would be bypass the bugs, this is commonly followed by the developers as some of them kept deliberately to do some reasonable test e.g change in property files etc, To avoid such developers should have document, may be things that needs to be done before goes to testing env. Similar like how you do your time management, its going to take few min but worth to do. Developers may think of implementing this.

  • Sheela Jain

    Hi Raja,

    I enjoyed reading this article and found it very detailed. I am sure if project teams really start applying it, they will definitely reap benefits.

    Good work!

    I have few points,

    1. Continue writing on blog
    2. Continue same post with numbering, if you do have additional points from different aspects role wise(jr. developer, sr. developer, PM, Business Owner, Delivery Head….)
    3. So circulate your blog name to all your contacts working still in IT

    Enjoy!

  • Sheela,

    Thanks! These questions can be used to create a useful checklist for debuggers. I have noted down your observations. Also, I will be publishing more blogs on Software Product Engineering.

    Regards,
    Raja