4 ms·
I think you are right when you frame debugging as a scientific process. It really is about observing and measuring while perturbing a system in some way to pro
by bborud 3y ago
I think you are right when you frame debugging as a scientific process. It really is about observing and measuring while perturbing a system in some way to provoke it to provide you with observation.
But as roenxi points out, academia doesn't see programming as something they are supposed to teach. Academia sees programming as a vocational skill. Something to be learned "on the job" - or done by "other people" (whoever they might be). They see it as their job to, mostly, teach you the math that is needed to model behaviors of software and systems.
I think the closest I ever got to something that was practical was system design/modeling. And as to demonstrate how terrible academia is at keeping itself updated, the methods we learned were, without fail, known to be impractical, outdated and wasteful. Nobody who took that class would ever apply anything they had learned in that class later in life.
Computer science is a bit odd. If you become an architect (the kind that draws houses) it is understood that you are not going to be actually building houses. You will probably never even touch a hammer in any professional capacity. You will work with someone who understands the mechanical bits, building code etc and together you produce a package of instructions that someone else has to realize.
However, if you are a CS grad, it is fairly likely that you will be writing software. Which makes the whole thing a bit absurd. It is as if you expected architects (the house-designing kind) to build houses, but never even give them any training in how to nail two planks together.
- jltsiren 3y agoThe academia teaches practical programming. The CS department usually doesn't, as it's not their job. You can see the same situation with the mathematics department. They teach mathematics, not doing calculations. If another department has a need for more practical mathematical skills (physics is the usual example), they often teach their own classes. Like many other biases in the academia, this is mostly a matter of self-selection. If you want a career in software, the industry is clearly the better option. If you want a career specifically in CS, there are not that many good alternatives to the academia. Which means that CS departments are populated by people with no particular interest in software.
- davidgay 3y ago> Which means that CS departments are populated by people with no particular interest in software. This is bunk, from my experience at UC Berkeley (PhD) - the professors I knew/worked with loved to program. One explained to me that teaching+research+academic duties left no time for programming on campus, so he spent another 40 hours a week programming at home.
- randomdata 3y agoYour experience supports the statement. If the professors you knew had a particular interest in software, they would turn their work focus towards that, not focusing on teaching, research, and other academic duties that are at odds with software. They prioritize the latter as those are in line with their particular interest. Software is just a sideline, just like I'm sure most of us here have some kind of other interest that we partake in at home.
- davidgay 3y agoThey were programming language professors. They most definitely had an interest in both programming and academia.
- randomdata 3y agoNobody is questioning their dual interest, but it is clear what their particular interest is (hint: not software).
- sfink 3y agoI see. So anyone flipping burgers at McDonald's must have a passionate interest in and life goal to be flipping burgers. Otherwise, why would they spend so much time on it? If I understand your argument correctly, you're saying that if someone in practice spends their time doing X and not Y, then they cannot actually be more interested in Y. I believe this flies in the face of human experience. If you love software, there are a limited number of careers that involve writing software. If you do not have the privilege of a large trust fund, you're looking at industry or academia. Neither tends to involve just sitting in a room and coding all day. (Those situations that do probably won't satisfy a post-teenaged love of software.) Especially if you have a more academic love of software, academia is not a stupid option, even though you realize that your time is going to be filled with a lot of non-programming duties. Yes, you would probably spend more of your time programming if you got a corporate programming job, but loving software does not mean automatically loving any situation where you are typing code into an editor.
- rtkwe 3y agoThis strikes me as so odd. My CS degree had tons of practical classes but it was all application of things you learned because, being quasi vocational, the best way to learn to program is by doing so the learning to program portion of the degree were the assignments to the classes. We had loads; your standard welcome to Java course, the second level where we had some of the early Google Nexus phones and experimented with building little apps [0], then a whole class on development methodologies which had a lab/group project portion where we were adding to a little digital health document system that was actually passed from class to class taking the best version(s) from each semester and adding to it on the next, and at the end a Senior capstone project. Each semester generally had at least one largely practical class. > It is as if you expected architects (the house-designing kind) to build houses, but never even give them any training in how to nail two planks together. Well architects don't build houses, they design them. The learning of computer programming is best to learn by doing after an introduction to the basics of some language. I have a hard time believing programs just fail to mention the existence of debuggers over the entirety of their program. There's a lot of the programs that expect you to figure out the precise tools you want to use for yourself. [0] The core assignment of this actually kind of failed because it was flawed from the beginning but it was still quite useful. We were supposed to build a lock screen that "locked" the phone when we went above a configurable speed. The main issue was the GPS data available to the apps in that early version of Android was very spotty.