3 ms·
I'm an undergrad TA for an introductory programming course, and I believe it is one of the most important skills that is not taught in the actual syllabus. Most
by unreal6 6y ago
I'm an undergrad TA for an introductory programming course, and I believe it is one of the most important skills that is not taught in the actual syllabus. Most every student runs into road blocks at some time. When I work with them, I try to work through a process of debugging. Even for me, it took me a number of years to have a rigorous concept of what debugging entails, and often still takes me some time before I decide to attack the issue in a systematic way, even if beginning the debugging process formally would be a much more efficient use of my time.
- 908B64B197 6y agoIt's controversial, but I'm not certain it's possible to teach someone how to debug. Some folks seems to naturally "get it", some other will try every possible permutation possible or start frantically copy-pasting code and some other seems to just get stuck and are basically awaiting instructions.
- P_I_Staker 6y agoI was gonna say something similar, but more pretentious. Debugging can't be taught, it must be learned. People can go from the "awaiting instructions person" to getting things done, but they need to have spent the hours in the trenches. It's kinda like saying teach me to be a great live musician. You have to practice, jam with people, and eventually do lots of gigs. You can't teach that in a classroom.
- shagie 6y agoI'm going to absolutely agree with you on that. A number of years ago, I wrote http://the-whiteboard.github.io/coding/debugging/2016/03/26/debugging.html http://the-whiteboard.github.io/coding/debugging/2016/03/26/... > I’ll admit to being a bit hazy about the exact homework problems and lectures in intro to CS all those decades ago. I’ll even admit to it being in Pascal (the other choices were C or Fortran 77). I suspect the first homework problem was a “get familiar with writing in the IDE” and the second assignment was your typical “basic control structures.” > If I could go back in time, I know what that third assignment would be. An intro to the debugger. I mention it in the post, and I also really like the set of essays for How To Be A Programmer ( https://github.com/braydie/HowToBeAProgrammer https://github.com/braydie/HowToBeAProgrammer ). I don't think its a coincidence that the first skill listed is Learn To Debug - https://github.com/braydie/HowToBeAProgrammer/blob/master/en/1-Beginner/Personal-Skills/01-Learn-To-Debug.md https://github.com/braydie/HowToBeAProgrammer/blob/master/en... > Debugging is the cornerstone of being a programmer. The first meaning of the verb "debug" is to remove errors, but the meaning that really matters is to see into the execution of a program by examining it. A programmer that cannot debug effectively is blind.
- alain94040 6y agoFully agreed. Debugging skills are not that hard to teach, while of course practice makes perfect. Debugging is not limited to EE/CS courses of course. The sound on the TV doesn't work? But you still get a picture? So the HDMI cable is carrying the video correctly. Sound goes through the same cable, so it's not a cable issue. Do you hear sound if you switch to another input? Then the speaker is working fine. And so on. Divide and conquer. Debugging (figuring out problems) relies on a handful of basic principles: - having some understanding of how the system works - looking for differences. A works, B doesn't. What are the differences between A and B? - tracing issues through components (the data we care about makes it to the database, but the UI doesn't show it) That's about it. Definitely teachable.