{"id":5138,"date":"2017-09-13T15:31:59","date_gmt":"2017-09-13T14:31:59","guid":{"rendered":"https:\/\/www.prodpad.com\/?p=5138"},"modified":"2023-04-19T15:52:50","modified_gmt":"2023-04-19T14:52:50","slug":"debugging-techniques","status":"publish","type":"post","link":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/","title":{"rendered":"The 6-Step Technique To Reliably Fix Any Bug"},"content":{"rendered":"\n<p>I defy you to show me a digital product that hasn&#8217;t required <a href=\"https:\/\/www.prodpad.com\/blog\/bugs-and-tech-debt\/\">debugging techniques<\/a> to fix a bug during its development.<br><br><a href=\"https:\/\/www.prodpad.com\/blog\/product-managers-developers\/\">Developers<\/a> are only human so we\u2019ll always be faced with issues and bugs in the systems we build, but&nbsp;we can control how we handle them.<br><br>From my years of working in web and product development, I&#8217;ve found out the hard way that taking shortcuts to squash a bug doesn\u2019t work. In my experience, those bugs continue to haunt you and find new ways to cause problems.<br><br>I\u2019ve now developed a reliable debugging technique that I use to fix all bugs that come my way.<br><br>I find that the more disciplined I am with this debugging process, the less I&#8217;ve had to revisit old bugs that I thought we&#8217;d moved on from. It does sometimes feel time-consuming, but the output has been more reliable over time and is totally worth the effort.<br><br>I hope these steps can be of help to you too.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-fix-any-bug-step-1-replicate-the-bug-yourself\">Fix Any Bug Step 1 &#8211; Replicate the bug yourself<\/h2>\n\n\n\n<p>Take time to replicate the bug yourself, even if someone else has already done this for you. Be sure to make a note of the replication workflow you\u2019ve found, as you\u2019ll need this later when you have to communicate the details with your team.<br><br>Just like a <a href=\"https:\/\/undsci.berkeley.edu\/article\/0_0_0\/howscienceworks_06\">scientist testing a theory<\/a> or a detective proving a case, it\u2019s critical for you to review the evidence and come to your own conclusion. This is your key to prove the before and after: what was broken and what bug now fixed.<br><br>There\u2019s another reason you don\u2019t want to skip this step: You know your way around the codebase better than someone else does, so your angle will always be different.<br><br>If your work results in the same workflow, great! You now have even more evidence zeroing in on the scenario that causes the issue. If not, then you have saved yourself time in the long run because you haven&#8217;t looked into mechanics that aren\u2019t part of the problem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-step-2-make-sure-you-truly-understand-the-problem\">Step 2 &#8211; Make sure you truly understand the problem<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"343\" src=\"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/simpsons.jpg\" alt=\"debugging techniques to fix a bug\" class=\"wp-image-5140\" srcset=\"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/simpsons.jpg 600w, https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/simpsons-300x172.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p>Assumption is the root of all f&amp;#*-ups.<br><br>If you assume what the problem is, this may bite you in the bum later when a linked issue arises.<br><br>So try this instead: When you get information on a new bug, step away from the assumptions and try to interpret the issue by looking at just the facts.<br>From here, you can start to piece the issue together.<br><br>A whole range of different mechanics are likely to be involved when you\u2019re re-creating the bug, so it\u2019s important to pin down exactly where in the code the issue is. By pinpointing where in the code the bug was caused, you\u2019ll have a solid answer when your team says to you &#8220;Great, it&#8217;s fixed! But what was wrong?&#8221;.<br><br>And not just for your sake.<br><br>It also strengthens your team\u2019s confidence in your ability. And it gives you peace of mind that you\u2019ve tweaked the right piece of code that causes the issue.<br><br>This debugging technique means you have a solid way of replicating the bug from a UI perspective. However, it doesn&#8217;t necessarily mean you understand it.<br><br>Avoid running on assumption, even if it happens to be correct.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-step-3-fix-the-bug\">Step 3 &#8211; Fix the bug<\/h2>\n\n\n\n<p>You know what the problem is and you can now reliably prove a fix to others.<br><br>So now&#8230;go fix the bug!<br><br>I can&#8217;t really help you with this, sorry. I know, you read the title and you assumed I could. I couldn\u2019t be more sorry and I\u2019m British, so you know I mean it. I\u2019ll just be here waiting patiently with my tea!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"281\" src=\"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/sherlock.gif\" alt=\"fixed a bug with more debugging techniques\" class=\"wp-image-5141\"\/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-step-4-prove-the-fix\">Step 4 &#8211; Prove the fix<\/h2>\n\n\n\n<p>You&#8217;ve fixed it, well done! Now you can prove you&#8217;ve fixed a bug using the replication workflow you made a note of in Step 2. Perfect, everyone&#8217;s happy.<br><br>Though we\u2019re not quite out of the woods yet\u2026<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-step-5-don-t-test-your-fix-try-to-break-it\">Step 5 &#8211; Don\u2019t test your fix. Try to <i>break<\/i> it.<\/h2>\n\n\n\n<p>Testing is a vague concept in itself.<br><br>Testing a fix in a digital product can mean anything from simply proving the bug doesn\u2019t exist anymore in the original scenario to retesting the whole product.<br><br>Save yourself the confusion. Don\u2019t test the applied fix. Instead, go in and try to break it.<br><br>Here\u2019s why: Even if you have a test suite with 100% code coverage you could still miss a vital scenario that could present issues. Trying to break it gives you a goal and helps you and your team push your work to its limits.<br>In the short term, it may not be very satisfying to discover new bugs or different scenarios that recreate a bug. In the long term however, it gives you and your team a sense of trust in your own work.<br><br>From a developer perspective, these debugging techniques mean you are weeding out weaknesses in the product much more effectively.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-step-6-closing-the-loop\">Step 6 &#8211; Closing the loop<\/h2>\n\n\n\n<p>Did you manage to break it? Oh dear. Go back to Step 1 and try again.<br><br>If you couldn\u2019t break it, congrats! Don\u2019t you feel so much more relaxed knowing that you know exactly what you\u2019ve fixed?<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"360\" height=\"202\" src=\"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/giphy-8.gif\" alt=\"Close the loop\" class=\"wp-image-5142\"\/><\/figure>\n<\/div>\n\n\n<p>Our <a href=\"https:\/\/www.prodpad.com\/blog\/\">product management blog<\/a> has even more articles on a range of PM topics.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.prodpad.com\/downloads\/product-management-handy-guide\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"240\" src=\"https:\/\/www.prodpad.com\/wp-content\/uploads\/2023\/04\/Handy-Guide-banner_Blogs-1280x300-1-1024x240.png\" alt=\"Free Handy Guide for Product People\" class=\"wp-image-80385\" srcset=\"https:\/\/www.prodpad.com\/wp-content\/uploads\/2023\/04\/Handy-Guide-banner_Blogs-1280x300-1-1024x240.png 1024w, https:\/\/www.prodpad.com\/wp-content\/uploads\/2023\/04\/Handy-Guide-banner_Blogs-1280x300-1-300x70.png 300w, https:\/\/www.prodpad.com\/wp-content\/uploads\/2023\/04\/Handy-Guide-banner_Blogs-1280x300-1-768x180.png 768w, https:\/\/www.prodpad.com\/wp-content\/uploads\/2023\/04\/Handy-Guide-banner_Blogs-1280x300-1.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>I defy you to show me a digital product that hasn&#8217;t required debugging techniques to fix a bug during its development. Developers are only human so we\u2019ll always be faced&hellip;<\/p>\n","protected":false},"author":19,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5230,8],"tags":[],"pp_uni_tag":[],"class_list":["post-5138","post","type-post","status-publish","format-standard","hentry","category-most-popular","category-prodpad-news"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Fix Any Bug With a 6-Step Debugging Technique<\/title>\n<meta name=\"description\" content=\"As developers, we\u2019ll always need to fix a bug and face issues of debugging techniques in the systems we build, after all, we\u2019re only human.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The 6-Step Technique to Reliably Fix Any Bug\" \/>\n<meta property=\"og:description\" content=\"We can&#039;t build bug-free products, but we can control how we squash them.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/\" \/>\n<meta property=\"og:site_name\" content=\"ProdPad\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ProdPad\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-13T14:31:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-19T14:52:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/Blog-post-bug-facebook.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Will Newmarch\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"The 6-Step Technique to Reliably Fix Any Bug\" \/>\n<meta name=\"twitter:description\" content=\"We can&#039;t build bug-free products, but we can control how we squash them.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/blog-post-bug-twitter.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@mrwillington\" \/>\n<meta name=\"twitter:site\" content=\"@prodpad\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Will Newmarch\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fix Any Bug With a 6-Step Debugging Technique","description":"As developers, we\u2019ll always need to fix a bug and face issues of debugging techniques in the systems we build, after all, we\u2019re only human.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/","og_locale":"en_US","og_type":"article","og_title":"The 6-Step Technique to Reliably Fix Any Bug","og_description":"We can't build bug-free products, but we can control how we squash them.","og_url":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/","og_site_name":"ProdPad","article_publisher":"https:\/\/www.facebook.com\/ProdPad\/","article_published_time":"2017-09-13T14:31:59+00:00","article_modified_time":"2023-04-19T14:52:50+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/Blog-post-bug-facebook.jpg","type":"image\/jpeg"}],"author":"Will Newmarch","twitter_card":"summary_large_image","twitter_title":"The 6-Step Technique to Reliably Fix Any Bug","twitter_description":"We can't build bug-free products, but we can control how we squash them.","twitter_image":"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/blog-post-bug-twitter.jpg","twitter_creator":"@mrwillington","twitter_site":"@prodpad","twitter_misc":{"Written by":"Will Newmarch","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/#article","isPartOf":{"@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/"},"author":{"name":"Will Newmarch","@id":"https:\/\/www.prodpad.com\/#\/schema\/person\/f0a8a62700666f91319cfad590195195"},"headline":"The 6-Step Technique To Reliably Fix Any Bug","datePublished":"2017-09-13T14:31:59+00:00","dateModified":"2023-04-19T14:52:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/"},"wordCount":917,"publisher":{"@id":"https:\/\/www.prodpad.com\/#organization"},"image":{"@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/#primaryimage"},"thumbnailUrl":"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/simpsons.jpg","articleSection":["Most Popular","ProdPad News"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/","url":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/","name":"Fix Any Bug With a 6-Step Debugging Technique","isPartOf":{"@id":"https:\/\/www.prodpad.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/#primaryimage"},"image":{"@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/#primaryimage"},"thumbnailUrl":"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/simpsons.jpg","datePublished":"2017-09-13T14:31:59+00:00","dateModified":"2023-04-19T14:52:50+00:00","description":"As developers, we\u2019ll always need to fix a bug and face issues of debugging techniques in the systems we build, after all, we\u2019re only human.","breadcrumb":{"@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.prodpad.com\/blog\/debugging-techniques\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/#primaryimage","url":"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/simpsons.jpg","contentUrl":"https:\/\/www.prodpad.com\/wp-content\/uploads\/2017\/09\/simpsons.jpg","width":600,"height":343},{"@type":"BreadcrumbList","@id":"https:\/\/www.prodpad.com\/blog\/debugging-techniques\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Latest Blogs","item":"https:\/\/www.prodpad.com\/blog\/category\/latest-blogs\/"},{"@type":"ListItem","position":2,"name":"ProdPad News","item":"https:\/\/www.prodpad.com\/blog\/category\/latest-blogs\/prodpad-news\/"},{"@type":"ListItem","position":3,"name":"The 6-Step Technique To Reliably Fix Any Bug"}]},{"@type":"WebSite","@id":"https:\/\/www.prodpad.com\/#website","url":"https:\/\/www.prodpad.com\/","name":"ProdPad","description":"Product Management Software","publisher":{"@id":"https:\/\/www.prodpad.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.prodpad.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.prodpad.com\/#organization","name":"ProdPad","url":"https:\/\/www.prodpad.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.prodpad.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.prodpad.com\/wp-content\/uploads\/2018\/12\/blue-full.png","contentUrl":"https:\/\/www.prodpad.com\/wp-content\/uploads\/2018\/12\/blue-full.png","width":2050,"height":400,"caption":"ProdPad"},"image":{"@id":"https:\/\/www.prodpad.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ProdPad\/","https:\/\/x.com\/prodpad","https:\/\/instagram.com\/prodpad","https:\/\/www.linkedin.com\/company\/prodpad\/","https:\/\/www.youtube.com\/channel\/UCXHOx5Ed-6sHPujypIlhdMA"]},{"@type":"Person","@id":"https:\/\/www.prodpad.com\/#\/schema\/person\/f0a8a62700666f91319cfad590195195","name":"Will Newmarch","description":"Brighton based creative technical developer, speed skater, boulderer, symphonic gothic metal lover.","sameAs":["https:\/\/x.com\/mrwillington"],"url":"https:\/\/www.prodpad.com\/blog\/author\/will-newmarch\/"}]}},"_links":{"self":[{"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/posts\/5138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/comments?post=5138"}],"version-history":[{"count":0,"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/posts\/5138\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/media?parent=5138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/categories?post=5138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/tags?post=5138"},{"taxonomy":"pp_uni_tag","embeddable":true,"href":"https:\/\/www.prodpad.com\/wp-json\/wp\/v2\/pp_uni_tag?post=5138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}