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. Debugging and diagnosis is not being taught

Debugging and diagnosis is not being taught

Scheduled Pinned Locked Moved The Lounge
debuggingc++delphivisual-studiocom
39 Posts 27 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.
  • D Dominic Burford

    As one of the senior developers where I work, I am tasked with mentoring the junior members of the team. This is a part of my role I really enjoy, as I get to pass down my hard won knowledge and experience to the next generation of software developers. What I have found over the years is that they all seem to lack one vital ingredient. How to debug / diagnose a problem. I have seen many of them struggle to use the debugger, set breakpoints, step through code, use the F12 browser tools etc. Even those with First Class honours degrees have struggled with this. I remember when doing my own degree (many years ago) we were taught these basic skills (using a Borland C++ IDE). Is this vital skill no longer being taught to new graduates? I feel this is a vital skill in any software developer's tool chest.

    "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

    C Offline
    C Offline
    Chris Copeland
    wrote on last edited by
    #6

    I wasn't taught anything related to debugging when I was at University. In fact, when I got my first job I had support tickets with the customer claiming something was happening. I fell into the trap of asking my team leader "X says this is happening, can you think of a reason why?" It was only after being constantly told "Can you reproduce it? If so, have you debugged it to see why it's happening? If not, then we obviously need more information" that I really fully embraced debugging. It seems silly, but up until then I'd only worked on personal projects which were less complex and the bugs were self-explanatory so I only debugged rarely. If they don't teach it in College/University then I don't have a problem with senior developers teaching more junior developers the values. We have a few developers at my current place who, while being really adept and forward-thinking, sometimes forget to debug and inspect. A gentle nudge every now and then gets them back on track. But you're right, while there's plenty of material on building code taught at Uni, there doesn't seem to be much in the way of properly debugging and diagnosing code. And I don't think anything prepares students for those situations where a client or customer has made something up!

    MQ / Tor.NET / Angry Potato

    1 Reply Last reply
    0
    • D Dominic Burford

      As one of the senior developers where I work, I am tasked with mentoring the junior members of the team. This is a part of my role I really enjoy, as I get to pass down my hard won knowledge and experience to the next generation of software developers. What I have found over the years is that they all seem to lack one vital ingredient. How to debug / diagnose a problem. I have seen many of them struggle to use the debugger, set breakpoints, step through code, use the F12 browser tools etc. Even those with First Class honours degrees have struggled with this. I remember when doing my own degree (many years ago) we were taught these basic skills (using a Borland C++ IDE). Is this vital skill no longer being taught to new graduates? I feel this is a vital skill in any software developer's tool chest.

      "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #7

      making stupid and glaring mistakes isn't taught either - but they're damn good at that. so why the difference?

      CPalliniC 1 Reply Last reply
      0
      • D Dominic Burford

        As one of the senior developers where I work, I am tasked with mentoring the junior members of the team. This is a part of my role I really enjoy, as I get to pass down my hard won knowledge and experience to the next generation of software developers. What I have found over the years is that they all seem to lack one vital ingredient. How to debug / diagnose a problem. I have seen many of them struggle to use the debugger, set breakpoints, step through code, use the F12 browser tools etc. Even those with First Class honours degrees have struggled with this. I remember when doing my own degree (many years ago) we were taught these basic skills (using a Borland C++ IDE). Is this vital skill no longer being taught to new graduates? I feel this is a vital skill in any software developer's tool chest.

        "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #8

        I don't think that lack of debugging knowledge is the issue, so much as an inability even to understand what steps to take in problem analysis. Look at some of the questions here and you can see that some so called developers do not really understand the code they may even have written themselves. I suspect there are far too many people following a career into IT because they think it pays well, rather than because they have an interest in problem analysis and finding solutions.

        D D T 3 Replies Last reply
        0
        • L Lost User

          I don't think that lack of debugging knowledge is the issue, so much as an inability even to understand what steps to take in problem analysis. Look at some of the questions here and you can see that some so called developers do not really understand the code they may even have written themselves. I suspect there are far too many people following a career into IT because they think it pays well, rather than because they have an interest in problem analysis and finding solutions.

          D Offline
          D Offline
          Dominic Burford
          wrote on last edited by
          #9

          Richard MacCutchan wrote:

          I suspect there are far too many people following a career into IT because they think it pays well, rather than because they have an interest in problem analysis and finding solutions.

          I would tend to agree. Many people coming into IT are career professionals rather than following a true passion for the industry.

          "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

          1 Reply Last reply
          0
          • L Lost User

            It's even worse than that: debug-by-printing is often explicitly recommended.

            D Offline
            D Offline
            den2k88
            wrote on last edited by
            #10

            It's the only cross platform and cross environment mode, and can be implemented in the release code itself to catch bugs. It is not bad in itself, it's just a tool - also GDB sucks, the only decent debugger I used is VisualStudio, which is usable basically only on Windows platforms.

            GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

            L 1 Reply Last reply
            0
            • L Lost User

              I don't think that lack of debugging knowledge is the issue, so much as an inability even to understand what steps to take in problem analysis. Look at some of the questions here and you can see that some so called developers do not really understand the code they may even have written themselves. I suspect there are far too many people following a career into IT because they think it pays well, rather than because they have an interest in problem analysis and finding solutions.

              D Offline
              D Offline
              den2k88
              wrote on last edited by
              #11

              This is true for many careers. Many mechanics can't find problems in cars because they don't know how they work, they simply follow the company's instructions. So do many electricians. If you know how the thing you made works, you also know where and what to look at to discover problems. If you don't, i.e. you copy-pasted code without minimal knowledge, you can know every single debugger function and still be useless as a bike to a fish.

              GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

              OriginalGriffO 1 Reply Last reply
              0
              • D den2k88

                This is true for many careers. Many mechanics can't find problems in cars because they don't know how they work, they simply follow the company's instructions. So do many electricians. If you know how the thing you made works, you also know where and what to look at to discover problems. If you don't, i.e. you copy-pasted code without minimal knowledge, you can know every single debugger function and still be useless as a bike to a fish.

                GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                OriginalGriffO Offline
                OriginalGriffO Offline
                OriginalGriff
                wrote on last edited by
                #12

                den2k88 wrote:

                be useless as a bike to a fish.

                Well...[^]

                Sent from my Amstrad PC 1640 Never throw anything away, Griff Bad command or file name. Bad, bad command! Sit! Stay! Staaaay... AntiTwitter: @DalekDave is now a follower!

                "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
                "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

                1 Reply Last reply
                0
                • D Dominic Burford

                  As one of the senior developers where I work, I am tasked with mentoring the junior members of the team. This is a part of my role I really enjoy, as I get to pass down my hard won knowledge and experience to the next generation of software developers. What I have found over the years is that they all seem to lack one vital ingredient. How to debug / diagnose a problem. I have seen many of them struggle to use the debugger, set breakpoints, step through code, use the F12 browser tools etc. Even those with First Class honours degrees have struggled with this. I remember when doing my own degree (many years ago) we were taught these basic skills (using a Borland C++ IDE). Is this vital skill no longer being taught to new graduates? I feel this is a vital skill in any software developer's tool chest.

                  "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

                  F Offline
                  F Offline
                  F ES Sitecore
                  wrote on last edited by
                  #13

                  "If you hear hooves, think of horses not zebras" is another of my favourites. Had one guy at a place I used to work always assumed every database issue was due to faults in the NAT firmware in the routers or maybe the network cards were dropping packets so needed updating. He'd spend his time researching new drivers etc etc, and when he still couldn't get it working I would take a look and nine times out of ten he had misspelled the server name in the connection string, or omitted the instance name or something like that.

                  1 Reply Last reply
                  0
                  • D Dominic Burford

                    As one of the senior developers where I work, I am tasked with mentoring the junior members of the team. This is a part of my role I really enjoy, as I get to pass down my hard won knowledge and experience to the next generation of software developers. What I have found over the years is that they all seem to lack one vital ingredient. How to debug / diagnose a problem. I have seen many of them struggle to use the debugger, set breakpoints, step through code, use the F12 browser tools etc. Even those with First Class honours degrees have struggled with this. I remember when doing my own degree (many years ago) we were taught these basic skills (using a Borland C++ IDE). Is this vital skill no longer being taught to new graduates? I feel this is a vital skill in any software developer's tool chest.

                    "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

                    R Offline
                    R Offline
                    Rage
                    wrote on last edited by
                    #14

                    I found that so .. straight-forward that I could not have imagined it is something that needs to be taught.

                    Do not escape reality : improve reality !

                    G 1 Reply Last reply
                    0
                    • D den2k88

                      It's the only cross platform and cross environment mode, and can be implemented in the release code itself to catch bugs. It is not bad in itself, it's just a tool - also GDB sucks, the only decent debugger I used is VisualStudio, which is usable basically only on Windows platforms.

                      GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                      L Offline
                      L Offline
                      Lost User
                      wrote on last edited by
                      #15

                      It is bad. GDB is also bad. Tools can be bad, and often are. I've heard that RemedyBG isn't bad, but I haven't tried it yet.

                      1 Reply Last reply
                      0
                      • L Lost User

                        making stupid and glaring mistakes isn't taught either - but they're damn good at that. so why the difference?

                        CPalliniC Offline
                        CPalliniC Offline
                        CPallini
                        wrote on last edited by
                        #16

                        :-D

                        In testa che avete, signor di Ceprano?

                        1 Reply Last reply
                        0
                        • R Rage

                          I found that so .. straight-forward that I could not have imagined it is something that needs to be taught.

                          Do not escape reality : improve reality !

                          G Offline
                          G Offline
                          glennPattonWork3
                          wrote on last edited by
                          #17

                          Me too, I only tend to debug my own code these days, the single step function is the one I use the most...

                          1 Reply Last reply
                          0
                          • L Lost User

                            I don't think that lack of debugging knowledge is the issue, so much as an inability even to understand what steps to take in problem analysis. Look at some of the questions here and you can see that some so called developers do not really understand the code they may even have written themselves. I suspect there are far too many people following a career into IT because they think it pays well, rather than because they have an interest in problem analysis and finding solutions.

                            T Offline
                            T Offline
                            theoldfool
                            wrote on last edited by
                            #18

                            :thumbsup: Agreed. There is a big difference between being able to use debugging tools and being able to do problem solving. Kinda like the super intelligent person who lacks common sense. A course in OR (Operations Research) could help. Working with real time systems will really test those skills. :)

                            If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.

                            1 Reply Last reply
                            0
                            • Kornfeld Eliyahu PeterK Kornfeld Eliyahu Peter

                              It seems that problem solving at all is not a skill taught to anyone anywhere... Actually - 'you have a problem' is considered rude to tell a student, as it implies the need to take responsibility, which totally uncommon these days (and to force it on someone is unforgivable)...

                              "The only place where Success comes before Work is in the dictionary." Vidal Sassoon, 1928 - 2012

                              R Offline
                              R Offline
                              raddevus
                              wrote on last edited by
                              #19

                              Kornfeld Eliyahu Peter wrote:

                              It seems that problem solving at all is not a skill taught to anyone anywhere..

                              Agreed. And even more broadly, critical thinking skills simply aren't taught. That's the nature of schooling being based upon multiple choice and t/f exams.

                              M 1 Reply Last reply
                              0
                              • L Lost User

                                It's even worse than that: debug-by-printing is often explicitly recommended.

                                N Offline
                                N Offline
                                Nelek
                                wrote on last edited by
                                #20

                                harold aptroot wrote:

                                It's even worse than that: debug-by-printing is often explicitly recommended.

                                And why is that so bad? I have found a lot of bugs just adding a couple of messageboxes / wprintf in places of the code If you are programming things that might have a timing component, debugging alters the real world use case when you hit the stop points. Saving a couple of values there and printing them later on the screen doesn't screw your performance or timing relational so bad. And as de2k88 said... you might use it always. You can even "debug" the release version with it. I think this is like the "goto"... it is not bad per se. But I can agree with you that it might get messy pretty fast.

                                M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

                                K 1 Reply Last reply
                                0
                                • D Dominic Burford

                                  As one of the senior developers where I work, I am tasked with mentoring the junior members of the team. This is a part of my role I really enjoy, as I get to pass down my hard won knowledge and experience to the next generation of software developers. What I have found over the years is that they all seem to lack one vital ingredient. How to debug / diagnose a problem. I have seen many of them struggle to use the debugger, set breakpoints, step through code, use the F12 browser tools etc. Even those with First Class honours degrees have struggled with this. I remember when doing my own degree (many years ago) we were taught these basic skills (using a Borland C++ IDE). Is this vital skill no longer being taught to new graduates? I feel this is a vital skill in any software developer's tool chest.

                                  "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

                                  M Offline
                                  M Offline
                                  Marc Clifton
                                  wrote on last edited by
                                  #21

                                  It's worse than that. The code the junior devs write is often so algorithmically and/or architecturally wrong that debugging won't actually solve the problem. Abstracting the problem, breaking the problem down into smaller problem sets, asserting on inputs, writing try-catch handlers, none of this taught. As a result, debugging something that is broken from the get-go is pointless. And debugging existing code that hopefully someone with more experience wrote? Forget it. Simple syntax like null continuation, generics, lambda functions, LINQ, callbacks...it's all Greek to them because they were never exposed to real programming. The mantra my mentee kept repeating over and over again was "oh my god, why didn't they teach us that in school???" :sigh:

                                  Latest Article - A 4-Stack rPI Cluster with WiFi-Ethernet Bridging Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                                  D 1 Reply Last reply
                                  0
                                  • R raddevus

                                    Kornfeld Eliyahu Peter wrote:

                                    It seems that problem solving at all is not a skill taught to anyone anywhere..

                                    Agreed. And even more broadly, critical thinking skills simply aren't taught. That's the nature of schooling being based upon multiple choice and t/f exams.

                                    M Offline
                                    M Offline
                                    megaadam
                                    wrote on last edited by
                                    #22

                                    raddevus wrote:

                                    critical thinking skills simply aren't taught

                                    You are wrong. I was taught to contradict everybody!

                                    "If we don't change direction, we'll end up where we're going"

                                    R 1 Reply Last reply
                                    0
                                    • M Marc Clifton

                                      It's worse than that. The code the junior devs write is often so algorithmically and/or architecturally wrong that debugging won't actually solve the problem. Abstracting the problem, breaking the problem down into smaller problem sets, asserting on inputs, writing try-catch handlers, none of this taught. As a result, debugging something that is broken from the get-go is pointless. And debugging existing code that hopefully someone with more experience wrote? Forget it. Simple syntax like null continuation, generics, lambda functions, LINQ, callbacks...it's all Greek to them because they were never exposed to real programming. The mantra my mentee kept repeating over and over again was "oh my god, why didn't they teach us that in school???" :sigh:

                                      Latest Article - A 4-Stack rPI Cluster with WiFi-Ethernet Bridging Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

                                      D Offline
                                      D Offline
                                      Dominic Burford
                                      wrote on last edited by
                                      #23

                                      Marc Clifton wrote:

                                      And debugging existing code that hopefully someone with more experience wrote? Forget it. Simple syntax like null continuation, generics, lambda functions, LINQ, callbacks...it's all Greek to them because they were never exposed to real programming.

                                      I have to regularly explain how the code works at both the architectural level, as well as the code level. This is to get them to understand the underpinning design decisions, as well as the detail of how the code itself works. Generics and LINQ were completely brand new to them. It took several sessions to get them to understand the problem that Generics solves, nevermind understanding the syntax behind it.

                                      "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

                                      1 Reply Last reply
                                      0
                                      • D Dominic Burford

                                        As one of the senior developers where I work, I am tasked with mentoring the junior members of the team. This is a part of my role I really enjoy, as I get to pass down my hard won knowledge and experience to the next generation of software developers. What I have found over the years is that they all seem to lack one vital ingredient. How to debug / diagnose a problem. I have seen many of them struggle to use the debugger, set breakpoints, step through code, use the F12 browser tools etc. Even those with First Class honours degrees have struggled with this. I remember when doing my own degree (many years ago) we were taught these basic skills (using a Borland C++ IDE). Is this vital skill no longer being taught to new graduates? I feel this is a vital skill in any software developer's tool chest.

                                        "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

                                        abmvA Offline
                                        abmvA Offline
                                        abmv
                                        wrote on last edited by
                                        #24

                                        or u could just hire guys who know how to debug ..

                                        Caveat Emptor. "Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long

                                        We are in the beginning of a mass extinction. - Greta Thunberg

                                        1 Reply Last reply
                                        0
                                        • L Lost User

                                          It's even worse than that: debug-by-printing is often explicitly recommended.

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

                                          Debug by printing can be useful at times. That's the whole point of having log files. It shouldn't be the only tool in the box, but it shouldn't be completely discarded.

                                          D 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