Live data from Hacker News

Why Don't Schools Teach Debugging?

danluu.com

51–60 of 132 posts

Re: Why Don't Schools Teach Debugging?

#51

I never knew this was a problem in EE, but I know for a fact it's a huge issue in CS. They don't want to teach any "tools" b/c CS professors find teaching people how to be good developers as beneath them. They honest to god think CS is an actually hard science on par with math and physics. You can sum up their attitude with: "It's not an associates degree goddamnit!" (even though it should be) Another source of reluc…

>They don't want to teach any "tools" b/c CS professors find teaching people how to be good developers as beneath them. They honest to god think CS is an actually hard science on par with math and physics.

Despite what you (and a lot developers that I've talked to) seem to think, CS is a hard science. However, CS and software development are not the same thing. Most CS programs are taught by professors who have research degrees in Computer Science, not by people who have ever been (or probably ever claimed to be) professional software developers, so there is a fundamental disconnect between what you seem to think you should be learning and what is actually being taught.

The professional software developer is a fairly new occupation in the grand scheme of things. The people who are most qualified to teach it are people who have actually worked as developers in the industry, but that is difficult because 1) most universities are reluctant to hire (and students can be reluctant to take classes from) adjunct/non-PhD faculty, and 2) it is hard for schools to offer enough to lure many of them away from industry anyway.

Re: Why Don't Schools Teach Debugging?

#52

This is by no means isolated to engineering or mathematics either. Nearly all students, especially in higher education, will have gaps in their understanding of topics they are expected to just know. The classroom simply isn't able to personalise learning to each student in the way that's needed. The only thing that really can help here the is clever application of technology. This is part of the problem that I'm wor…

Um, what you're doing might be super-duper valuable, but "bite-sized personalized social innovative learning", frankly, sounds more like a game of buzzword bingo than like a product description.

That's a valid criticism.

Specifically, we offer courses that are far shorter and more targeted than a "traditional" offering (or one that you'd find on a MOOC). Content is broken down to the concept level, and available in multiple presentations. This facilitates delivering content that is most suited to a learner's personal style, as well as spaced repetition whereby a student exposed to the same information multiple times over a period of time, in an altered format or context. As I mentioned, this is on mobile, a space that's largely ignored aside from educational games in higher learning.

I hope that is a little less buzzword-heavy, though I suspect it may still not be as BS-free as it could be. Learning what messages work best for different audiences is all part of the fun with a startup…

Re: Why Don't Schools Teach Debugging?

#53

Earlier quoted context omitted.

I'm curious - what do the remaining 70% do?

Various things, a common aspiration was to try and fast track to a management position at a consultancy or blue chip where things were are more about spreadsheets than code. Others do technical work, but not strictly development like Q&A or technical support. Some went into academia and some did other things altogether, I know at least one person who became a tree surgeon and another who is a session musician.

Tech support and CS degree?!? It might just be me but I cant really see a person with a bachelor or masters in CS work in tech support.

Re: Why Don't Schools Teach Debugging?

#54
post #9

Ability to debug is really a function of general domain knowledge, "skill" of accessing documentation and/or examples, and good understanding of experimentation. It's difficult to teach, as different coders approach problems in different ways. First, I'll explain what I think makes one good at debugging: 1. Domain knowledge, which I'll consider code that the programmer has either written herself or has otherwise beco…

I wish school taught reverse engineering. Or perhaps I should say breaking things apart. You often need to reuse software written by someone outside your team and soon realize the software either has bugs you have to fix yourself or needs features you must add.

I've never seen a class on reverse engineering.

Re: Why Don't Schools Teach Debugging?

#55
post #9

Ability to debug is really a function of general domain knowledge, "skill" of accessing documentation and/or examples, and good understanding of experimentation. It's difficult to teach, as different coders approach problems in different ways. First, I'll explain what I think makes one good at debugging: 1. Domain knowledge, which I'll consider code that the programmer has either written herself or has otherwise beco…

In the EE/CE program I went to, the first class you were required to take was "Intro to Digital Systems". It consisted of a little bit of classroom basics k-maps, binary/hex/octal math, gate logic, etc mixed with a lab that took a breadboard and applied the knowldge you learned in the classroom to make blinky lights/sounds. Not very impressive, but in the course of making the light blink you learn rules for debugging systems that are applicable everywhere (change only one thing, then test after every change, think about what each change means in terms of expected output given an input, etc). If you know how to do basic electronics going in, you have an easy A and a bunch of free time. If you are learning it all for the first time, you probably spend 10-15 hours a week on a 3 hour lab until it clicks.

The class had something like a 90% pass rate so I don't think this is something that can't be taught with a mixture of normal classroom plus TA+Prof help in labs.

Re: Why Don't Schools Teach Debugging?

#56
post #53

Earlier quoted context omitted.

Various things, a common aspiration was to try and fast track to a management position at a consultancy or blue chip where things were are more about spreadsheets than code. Others do technical work, but not strictly development like Q&A or technical support. Some went into academia and some did other things altogether, I know at least one person who became a tree surgeon and another who is a session musician.

Tech support and CS degree?!? It might just be me but I cant really see a person with a bachelor or masters in CS work in tech support.

There are more jobs available, especially in places without software companies. Or people take those jobs temporarily while they look for other jobs, get promoted and end up following a different career track.

Re: Why Don't Schools Teach Debugging?

#57

Earlier quoted context omitted.

Does anyone have advice for learning this kind of "intuitive, heuristic, holistic way of grokking circuits"?

> 15 years of experience playing around with electronics

Pretty much this. It's a variant of the "10,000 hours rule" http://en.wikipedia.org/wiki/Outliers_%28book%29

I'm like the OP's brother in that when I started EE, I had already been tinkering with circuits for about 7 years. Obviously, in labs it was a huge help, but it also gave the math and all the abstract concepts learned in class some relationship to the real world.

Having the background means you can glance at a circuit and immediately know that a certain resistor is sized too small, or hearing the high-pitched whine of an inductor means that may be the problem with your regulator. In short: build lots of different stuff, have it blow up in your face, and learn something from the experience.

Re: Why Don't Schools Teach Debugging?

#58
Well I guess students are supposed to figure out the things they are not taught for themselves maybe with a little bit of google-fu but i suspect the amount of things the professors require them to figure out requires more time then they have to the next course.

I regard universities as the pace you go when you already know most of what you need and you just need to get the papers to prove it maybe get better in the areas you missed.

But if you into university not knowing most of what they are going to teach you you are going to have a hard time there's just not enough hours in a day.

That's how i see it anyway because every time i learn something i usually end up researching more then i need for that specific assignment and end up spending an entire day on just one thing maybe even more.

Re: Why Don't Schools Teach Debugging?

#59
post #8

Because it isn't fun or exciting.

What do you mean? It is both fun and exciting. It's like solving little mini-mysteries. Hmm, how come this variable is null here? That shouldn't be possible! But it is, so how did that happen? Mystery! You can also learn from it. Often a bug is caused by some misunderstanding, so figuring that out teaches you something. Here's an example where I learned several things finding and fixing a bug: http://henrikwarne.com/…

It does teach you a lot. I spent ages wondering why my inherited class was blowing up on destruction in C++ - the parent destructor was not virtual and I was deleting the object using a pointer to the base type. So working this out has meant that there is a big burn mark in my brain to not do this again. Debugging really is good fun and helps with learning.

Re: Why Don't Schools Teach Debugging?

#60
back when I was CS at JHU; there were some very strange divides in how some professors viewed "programming vs. CS". (that I only got a taste of as an undergrad; the real opinions didn't come out until I was talking to the professors after my tenure as a student) What I would call useful "life skills" (debugging, good code style, VCS, various development workflows), they called "a waste of time getting in the way of their study of PURE CS(tm)". Certain professors foster some of these skills, certain professors pretend none of them exist at all. So it's a grab bag of what skills you'll end up graduating with, aside from those you take the classes for. (which, credit where its due, with the giant qualifier of "within higher end CS", was never terrible.)
Post reply on HN