Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Is debugging a lost art ?

Is debugging a lost art ?

Scheduled Pinned Locked Moved The Lounge
visual-studiocsharptutoriallearningcom
34 Posts 25 Posters 4 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B BillWoodruff

    The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

    G Offline
    G Offline
    GuyThiebaut
    wrote on last edited by
    #12

    Being a 1970 model I learnt to debug Cobol code using hexadecimal dumps on reams of paper. Sounds awful but in practise it was not too bad, it was just a case of being methodical when one went through the 90+ pages of paper.

    “That which can be asserted without evidence, can be dismissed without evidence.”

    ― Christopher Hitchens

    1 Reply Last reply
    0
    • B BillWoodruff

      The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

      W Offline
      W Offline
      W Balboos GHB
      wrote on last edited by
      #13

      New? Wellllllllll - in the 1980's I had a FTIR* from Hewlett Packard - the software was written in England on IDRIS. The software was rev. 5 and buggy as hell. We got updates - rev 6, 7, . . . etc. - and rarely was a bug fixed. Not contesting what you mention, above, there's also the problem of coders so arrogant that they don't check for bugs. If we go into the current climate, it's beyond coding: so much is manufactured as cheaply as possible and it's left to the consumer to get a replacement. As it turns out, it's cheaper to do no Q/C and replace the items that fail. So, why not with code? After all, how many innocent marks users bring their PC in for a repair due to software problems and the solution is to reload the operating system - trashing all of their data and non-OEM apps. Not debugging? Perhaps it's because it's what has come to be acceptable. * Fourier Transform Infrared Spectrometer

      "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

      "As far as we know, our computer has never had an undetected error." - Weisert

      "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

      1 Reply Last reply
      0
      • M Member 11683251

        I think that debugging is something that is skimmed on when it comes to programming education. I'm not very good at it myself but I've picked up a few tips and tricks that tends to help me. I think a lot lies in recognizing errors and utilizing error codes. A missed semicolon or bracket might not generate a error where the error code by itself will help you but you tend to recognize the structure of the error in your ide fairly quickly. This is the most basic of stuff but too common. I think it should be mandatory when studying programming to early on have a course in debugging to learn how to take advantage of different tools and learn some debugging methods.

        K Offline
        K Offline
        kmoorevs
        wrote on last edited by
        #14

        Member 11683251 wrote:

        I think that debugging is something that is skimmed on when it comes to programming education.

        Agreed! When I went through programming classes (98-00) we were never taught how to debug. I got a part-time programming job in my junior year and remember finding out about breakpoints and the magical F8 (now F11) key! I also remember starting in classic ASP and javascript and having to get creative on the debugging using alerts or response.writing variable values to see what was happening. It's sooo much easier these days! :)

        "Go forth into the source" - Neal Morse

        M 1 Reply Last reply
        0
        • B BillWoodruff

          The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

          K Offline
          K Offline
          Kevin Marois
          wrote on last edited by
          #15

          Wait.. are you implying that posting questions in QA ISN'T debugging??

          If it's not broken, fix it until it is

          B 1 Reply Last reply
          0
          • B BillWoodruff

            The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

            M Offline
            M Offline
            Matthew Dennis
            wrote on last edited by
            #16

            Its not the art of debugging that is missing, its the whole process of problem solving for which debugging is a tool. Most programming quickie course teach how to write code, but not how to 1 methodically analyze problems, 2 review the evidence, 3 read the code, 4 formulate an hypothesis for the primary cause, 5 use the debugger and other available tools to prove or disprove the hypothesis, 6 repeat as required. This is stuff you had to do when compiles took many minutes and had to be submitted to a mainframe, possibly on punch cards. Now, with a couple of seconds to compile massive solutions, you see them hacking at the code and re-running to see if it is fixed, not checking to see if their changes have 'suboptimal' side effects.

            G S 2 Replies Last reply
            0
            • B BillWoodruff

              The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

              D Offline
              D Offline
              Dan Neely
              wrote on last edited by
              #17

              Got my CS degree in 03. The only how to debug education I was given was in HS; a number of my peers in college at the time appeared clueless about debugging. The situation with lack of debugging training was made worse by the fact that someone with pointy hair had settled the MSVC vs GCC holy war by mandating that freshman C++ 1/2 were to be taught using Borlands Tools. Neither of my profs, nor any of the student TAs in the labs really had a clue with Borland's stuff and weren't able to show us how to use any of the debuggering tools (Freudian slip, the Borland IDE was horrible at the time). More than a few basically said that for grading they normally just used their favorite compiler and only tried running in Borlands if it didn't work in theirs. Beyond freshman year the general req was just to state what compiler you used when you submitted.

              Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt

              1 Reply Last reply
              0
              • B BillWoodruff

                The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

                R Offline
                R Offline
                RJOberg
                wrote on last edited by
                #18

                When I was in HS taking CS we had an entire section on learning to use the debugger. That was because we were taught by someone who knew it was important to understand the entire process no matter the language. Starting with Pascal, then moved into C++, Delphi, Java, etc. In college, one of the required courses for all CS majors was Logic. Imagine requiring someone know how to think through a problem! More often than not, when I get called over to help fix someone else's code because it won't run they have done zero debugging. If I ask if they have added breakpoints and stepped through the code all I get is a blank stare like I've grown a second head. Gotten some of them trained because I stopped helping them if they hadn't. Some of the logic I've seen just hurt my brain. Why on earth would you fire a request to get all the information for a record for each and every page during onload? If you don't need it or it doesn't change, why do you get it again? Are you worried that the database fairy decided to play a prank on you? Along with debugging, I question if orders of efficiency (Big O notation) are taught. It is like when computers got powerful, all the basics got tossed out the window. :sigh:

                G A 2 Replies Last reply
                0
                • B BillWoodruff

                  The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

                  E Offline
                  E Offline
                  Erik Burd
                  wrote on last edited by
                  #19

                  I agree - this seems to be a bit of a lost art. I've noticed many new software engineers focused on tools as opposed to understanding what really goes on, so when they run into a problem they often run to me to help them. I think this is part of the "coding is easy" mindset that so many of them have. It takes a lot of practice to debug very well. Learning the basics is relatively easy.

                  "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music." -- Marcus Brigstocke, British Comedian

                  1 Reply Last reply
                  0
                  • M Matthew Dennis

                    Its not the art of debugging that is missing, its the whole process of problem solving for which debugging is a tool. Most programming quickie course teach how to write code, but not how to 1 methodically analyze problems, 2 review the evidence, 3 read the code, 4 formulate an hypothesis for the primary cause, 5 use the debugger and other available tools to prove or disprove the hypothesis, 6 repeat as required. This is stuff you had to do when compiles took many minutes and had to be submitted to a mainframe, possibly on punch cards. Now, with a couple of seconds to compile massive solutions, you see them hacking at the code and re-running to see if it is fixed, not checking to see if their changes have 'suboptimal' side effects.

                    G Offline
                    G Offline
                    Garth J Lancaster
                    wrote on last edited by
                    #20

                    I like this general discussion - and your post struck a chord - now, I'm not so good at this yet (because I know how to debug & use logging etc so to some extent I 'get away with it' ), but I believe using 'tests'/a testing framework appropriate for whatever dev toolchain is being used, would assist greatly - not sure where it fits in 1-6 but its another 'tool' somewhere in the mix

                    M 1 Reply Last reply
                    0
                    • R RJOberg

                      When I was in HS taking CS we had an entire section on learning to use the debugger. That was because we were taught by someone who knew it was important to understand the entire process no matter the language. Starting with Pascal, then moved into C++, Delphi, Java, etc. In college, one of the required courses for all CS majors was Logic. Imagine requiring someone know how to think through a problem! More often than not, when I get called over to help fix someone else's code because it won't run they have done zero debugging. If I ask if they have added breakpoints and stepped through the code all I get is a blank stare like I've grown a second head. Gotten some of them trained because I stopped helping them if they hadn't. Some of the logic I've seen just hurt my brain. Why on earth would you fire a request to get all the information for a record for each and every page during onload? If you don't need it or it doesn't change, why do you get it again? Are you worried that the database fairy decided to play a prank on you? Along with debugging, I question if orders of efficiency (Big O notation) are taught. It is like when computers got powerful, all the basics got tossed out the window. :sigh:

                      G Offline
                      G Offline
                      Garth J Lancaster
                      wrote on last edited by
                      #21

                      I agree on 'efficiency' - what data structure to use where, knowing its 'general' characteristics with respect to lookups, traversals etc - Im just not how to express the relevant characteristics - I guess thats why Big O is important - it just seems pretty 'dry' as a topic

                      1 Reply Last reply
                      0
                      • B BillWoodruff

                        The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

                        G Offline
                        G Offline
                        Garth J Lancaster
                        wrote on last edited by
                        #22

                        its a great discussion - so what do 'we' ie 'we as a collective group of (cough) more senior programmers/... do about it ? do we collaborate on an article series ?

                        1 Reply Last reply
                        0
                        • K Kevin Marois

                          Wait.. are you implying that posting questions in QA ISN'T debugging??

                          If it's not broken, fix it until it is

                          B Offline
                          B Offline
                          BillWoodruff
                          wrote on last edited by
                          #23

                          Kevin Marois wrote:

                          Wait.. are you implying that posting questions in QA ISN'T debugging??

                          With alarming frequency ... yes. :)

                          «Tell me and I forget. Teach me and I remember. Involve me and I learn.» Benjamin Franklin

                          1 Reply Last reply
                          0
                          • G Garth J Lancaster

                            I like this general discussion - and your post struck a chord - now, I'm not so good at this yet (because I know how to debug & use logging etc so to some extent I 'get away with it' ), but I believe using 'tests'/a testing framework appropriate for whatever dev toolchain is being used, would assist greatly - not sure where it fits in 1-6 but its another 'tool' somewhere in the mix

                            M Offline
                            M Offline
                            Matthew Dennis
                            wrote on last edited by
                            #24

                            Unit, Integration, and Acceptance Testing is a whole other discipline with the aim to prevent errors and prove the code meets requirements and works. Debugging is what happens when something slips through the Testing. Both have the goal of creating bug free code, but Testing is proactive and Debugging is reactive. Testing usually has the pointy-haired manager complaining about all the effort the doesn't create new code. With debugging there is usually panic and pointy-haired managers demanding status every 10 minutes. Poor PMs will try and save time/money by doing a poor job of Testing and then blame the programmers when they more than pay for it with bugs, debugging, and large code update/rewrites. Ideally, when you are trying to fix a bug you should write a Unit Test to verify the bug, and validate the fix. Then fix the bug. The Test will tell you when you are done and the pre-existing Tests will tell you that you didn't break anything else.

                            A 1 Reply Last reply
                            0
                            • B BillWoodruff

                              The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

                              W Offline
                              W Offline
                              WoodseyAU
                              wrote on last edited by
                              #25

                              I learnt debugging back in the early 80s for R/Basic, an interpretive language from an OS called Pick. There was no such thing as an IDE back then, pretty much a suck-it-and-see approach. That's where I also learned that what I really did was 85% plan, 5% code and 10% debug. I also learnt that I could move those goalposts to as much as 93% plan, 5% code and 2% debug. Debug back then was embedding print and input statements to step through the code throwing the values of variables to my screen (or lineprinter) as I went. Now, with all the wondrous tools I am probably doing 45% plan 10% code and 45% debug because the tools have made it easy. I think they try and rephrase what I do as 'Agile'. I simply call it lazy (and, yes, I know that infers I am lazy, lets remove the inference. I am http://codeproject.cachefly.net/script/Forums/Images/smiley\_wink.gif )

                              1 Reply Last reply
                              0
                              • K kmoorevs

                                Member 11683251 wrote:

                                I think that debugging is something that is skimmed on when it comes to programming education.

                                Agreed! When I went through programming classes (98-00) we were never taught how to debug. I got a part-time programming job in my junior year and remember finding out about breakpoints and the magical F8 (now F11) key! I also remember starting in classic ASP and javascript and having to get creative on the debugging using alerts or response.writing variable values to see what was happening. It's sooo much easier these days! :)

                                "Go forth into the source" - Neal Morse

                                M Offline
                                M Offline
                                Member 11683251
                                wrote on last edited by
                                #26

                                We did learn about break points but they are so basic that its almost criminal leaving them out of education. I think learning by doing is fairly important when it comes to debugging, having a small course where you learn about the most common tools and have to solve a few problems via finding bugs in code isn't something that's too difficult. I mean I could prepare several cases in a short order to be used. Similar with your experience with asp and javascript I did some programming with unity and monodevelop a few years back. We were having trouble getting the IDE's tools to work with Unity and was pressed for time so there was some creative logging and peak functions written to work around that. We also got a lot better at looking at the code more attentively.

                                1 Reply Last reply
                                0
                                • M Matthew Dennis

                                  Its not the art of debugging that is missing, its the whole process of problem solving for which debugging is a tool. Most programming quickie course teach how to write code, but not how to 1 methodically analyze problems, 2 review the evidence, 3 read the code, 4 formulate an hypothesis for the primary cause, 5 use the debugger and other available tools to prove or disprove the hypothesis, 6 repeat as required. This is stuff you had to do when compiles took many minutes and had to be submitted to a mainframe, possibly on punch cards. Now, with a couple of seconds to compile massive solutions, you see them hacking at the code and re-running to see if it is fixed, not checking to see if their changes have 'suboptimal' side effects.

                                  S Offline
                                  S Offline
                                  sir_download_alot
                                  wrote on last edited by
                                  #27

                                  That's a very nice summary and I fully agree with it! What a glorious time when we had to read memory dumps in order to find a bug that was caused by a module written in Assembler :-)

                                  1 Reply Last reply
                                  0
                                  • B BillWoodruff

                                    The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

                                    M Offline
                                    M Offline
                                    maze3
                                    wrote on last edited by
                                    #28

                                    not sure if on same line of QA that your talking about, however one team member that I am trying to 'train', mostly is an issue with getting them to understand what the actual Issue is and see past the symptoms, and fix the issue at root (if possible)

                                    1 Reply Last reply
                                    0
                                    • B BillWoodruff

                                      The more I comment on, or answer, QA questions here, the more I think that, apparently, having no knowledge of how to debug seems a common feature of posters. Of course, that conclusion could just be an artifact of the fact that a major reason for the use of CP QA is because the posters are: 1. here because they are tolerated here ... in comparison similar questions on StackOverFlow would be quickly closed ? 2. they're not getting any education about how to debug ? no one showed them how to debug ? they just didn't think of it ? 3. for whatever reasons, they never bother to study the wonderful (to those of us who remember coding in the ancient days) tools in Visual Studio for debugging ? Of course, we could also take the most negative general view: CP QA attracts the lazy, the ignorant, gimme-codez beggars, and the homework-shirking; but, I choose not to take that view, although it's obviously true, to me, that some posters could be described that way. I think we, "older," programmers (from before ... 1991 ... the time of VB with an IDE) had no choice but to learn how to debug, because: we didn't have CodeProject, StackOverFlow. Although, remembering those early days of VB and the UseNet forum ... and the Microsoft UseNet forum for VB ... where people like the amazing Nicholas Paldino (back then's equivalent of OriginalGriff) seemed to be providing support 24/7, there certainly was some support, and community. Microsoft did start providing some MSDN content on how to debug about the time of .NET 3.0; for example: [^]. But, I would assert that valuable material on how to debug was available early on ... to those who looked for it. Well, what to do with/for/to people who do not have a clue about debugging ? I could fantasize there's a forum on CP that is really an on-line course on debugging that takes the user through a series of coding "challenges," demonstrating/educating-about debugging in Visual Studio. But, I doubt the people that actually needed it would use it. And, I'd estimate the "technical cost" to CP to implement that would be prohibitive. On the most general level, I wonder if the expectation of many new programmers ... an expectation driven by marketing that portrays programming as "easy" if you just get the latest whatever ? ... is that they simply don't need to know about debugging ? I'd call that: a "weak hypothesis." When I have students (private, th

                                      K Offline
                                      K Offline
                                      Kiriander
                                      wrote on last edited by
                                      #29

                                      I can only speak for myself. I never really learned debugging, I just knew that debugging is that thing that pops up when you press "Go" in your IDE. This was my starting point. Now, I don't want to miss my debugger. I've learned everything on the go, I've learned how to watch values, set breaking points, watch memory (those pesky C coders in my team hate symbolic debugging and love calculating pointers instead of using them as references). I will never ever touch a development environment without a debugger again. Except Arduino, but this I do as a hobby, not during work. Debugging is, I think, never obsolete. All documentation out there won't help jack if my code misbehaves. As for what to do for them, well, if you enconuter a question answerable by debugging, don't give the man the fish, teach the man how to fish. That is, don't answer the question right away, but write a longer post about how to find it yourself. This isn't easy, first it takes much longer, second it will be shot down by people who just love giving hungry fish instead of teaching them to fish. But hey, if someone wants to learn, then he will read!

                                      1 Reply Last reply
                                      0
                                      • M Matthew Dennis

                                        Unit, Integration, and Acceptance Testing is a whole other discipline with the aim to prevent errors and prove the code meets requirements and works. Debugging is what happens when something slips through the Testing. Both have the goal of creating bug free code, but Testing is proactive and Debugging is reactive. Testing usually has the pointy-haired manager complaining about all the effort the doesn't create new code. With debugging there is usually panic and pointy-haired managers demanding status every 10 minutes. Poor PMs will try and save time/money by doing a poor job of Testing and then blame the programmers when they more than pay for it with bugs, debugging, and large code update/rewrites. Ideally, when you are trying to fix a bug you should write a Unit Test to verify the bug, and validate the fix. Then fix the bug. The Test will tell you when you are done and the pre-existing Tests will tell you that you didn't break anything else.

                                        A Offline
                                        A Offline
                                        Andreas Mertens
                                        wrote on last edited by
                                        #30

                                        This topic struck a note with me as well, as I find that most new developers have next to no skill in doing any sort of deep debugging. I find myself in the group that learned debugging in the "old days" - I actually honed my skills in the '70s on the early hobbyist computers, teaching myself machine language/assembler programming (side note - first processor I programmed on was an 1802 :-D ). Back then there wasn't a lot of good programming documentation - you were lucky to get a description of the ports/memory map locations and a brief description of each. And there was internet as such, so unless you were part of a user group or had access to a good local BBS, you had to figure these things out for yourself. So often, you would have to really think through how to solve a problem, find the write approach for the hardware you were using, and then write a test case you could work through in a debugger to see what was actually happening. You would learn something, update the code, and try again. This iterative approach was great in getting a deep insight into your computer environment, and it really made you think through the problem you were trying to solve. (side note - I remember loving Microsoft CodeView, and how you could bring up the application in your EGA display, and the debugger on your monochrome display). Yes, today we do have test frameworks to help catch problems before they occur. But it is next to impossible to anticipate every possible situation. Especially when you have to integrate 3rd party libraries and frameworks, which may or may not work precisely as documented. There will always be times when something goes awry, and you better know how to dig into the deeper levels of the code with a debugger, isolating the issue, and coming up with a reasonable fix. I don't think debugging per se is a lost art, but there are certainly degrees of expertise to debugging. I know that when I have an customer support issue that needs to be fixed, the first thing I do is not to pull up the debugger, but think about the problem, trying to think about what the issue is, and the approaches that might be required - in short, come up with a plan. I find that in doing this first, I tend to have a better idea of where in the code to look at first, and what hints at issues I should be paying attention to, and what approach I should take to debugging the code. A lot of this is simple experience. Those of us from "the old days" didn't have a lot of choice, and had a lot of experience in debug

                                        1 Reply Last reply
                                        0
                                        • B BillWoodruff

                                          OriginalGriff wrote:

                                          Debugging isn't just a skill, it's a state of mind

                                          Hi Griff, I like those words ! But, I keep thinking that the situation vis-a-vis debugging knowledge would be equivalent ... for automobiles ... to someone who only uses one forward gear in the gearbox, and tries to go backwards by making a full-circle turn ... then wonders why they get stuck in traffic.

                                          «Tell me and I forget. Teach me and I remember. Involve me and I learn.» Benjamin Franklin

                                          A Offline
                                          A Offline
                                          agolddog
                                          wrote on last edited by
                                          #31

                                          Griff's right, in that it's a systematic approach to finding the problem. That's not new or old developer, it's more of "does developer understand the problem, and approach a solution in a logical manner" versus "let's try to hack some stuff together, and see how it goes."

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups