Earlier quoted context omitted.
> I'm not a talented developer > [uses F#] That has to be humblebragging. The average .net developer is terrified of or doesn't even know about F#.
Is the average .net developer terrified of F# because they're not talented enough, or because it's different?
The Missing Semester of Your CS Education (2020)
291–300 of 347 posts
Re: The Missing Semester of Your CS Education (2020)
#292Earlier quoted context omitted.
The key thing about print debugging for me, that I've never seen a typical debugger handle well, is what I like to think of as "temporal debugging": Taking a program trace from the print debug statements, grepping through it repeatedly to filter down to certain events of interest, looking at the interleaving of those events, and figuring out the order that things happened in to cause it to go off the rails. That sort…
> I can't imagine sitting and stepping through in a debugger 100+ times in the hopes that maybe this time, it will be the run that's just different enough to trigger the bug Isn’t that where things like breakpoint conditions, data breakpoints (“break whenever X value/field changes”), and dependent breakpoints, work pretty dang well? You just set up the appropriate situation and let it run until it breaks
But one thing that I have found helpful in the past has been aggregating the information from the traces across runs. Comparing good with good and bad with bad to classify the commonalities, and then compare good with bad to see how they differ.
Re: The Missing Semester of Your CS Education (2020)
#293Earlier quoted context omitted.
Thank you for making the point about accreditation, it's sort of a pet peeve of mine. I taught "intro to C++" last year at the Harrisburg campus of PSU. The students were a mix of non-CS majors who didn't know what a file was, a handful of students who already knew how to program and a bunch in the middle. Re: accreditation... the admin is very reluctant to change anything about the courses. Even specific textbooks h…
> I would experiment and try to re-word homework questions so that interesting StackOverflow answers appeared in search results. That's a really interesting pedagogical approach, I like it a lot.
Though I hate Chegg and the like with a passion, since this sort of thing takes a lot of work (over the course of teaching same class a few times) and then w/ Chegg you immediately find the answers.
Re: The Missing Semester of Your CS Education (2020)
#294Earlier quoted context omitted.
Thank you for making the point about accreditation, it's sort of a pet peeve of mine. I taught "intro to C++" last year at the Harrisburg campus of PSU. The students were a mix of non-CS majors who didn't know what a file was, a handful of students who already knew how to program and a bunch in the middle. Re: accreditation... the admin is very reluctant to change anything about the courses. Even specific textbooks h…
C++ needs a “missing semester” around tooling. Most material I see focus on the core language but leave out setting up build systems, package management, clang tidy, testing etc.
I ended up suggesting those who don't know how to setup a tool chain use VS Code. Not out of any particular affinity for it, but because of the good documentation covering Windows, Linux and macOS.
Re: The Missing Semester of Your CS Education (2020)
#295Earlier quoted context omitted.
go on indeed, search for "software engineer", look at how often those things crop up in the "essentials" section
I’m just not sure how jot knowing these thing practically stopped you from getting a job. Did they specifically ask about them in an interview?
Also, since I wasn't using git (and hadn't even heard of git or github until after I graduated; mind you, this was in 2012), I didn't have any visible work to highlight when responding to job listing. I also didn't have any demonstrable ability to collaborate, dive into existing projects and find my way around, or do things like make PRs.
I didn't have anything to say about my ability to work with software tooling, using an operating system beyond just opening a web browser, notepad, Borland C++... I think I used netbeans for a group Java project also.
I definitely wouldn't have been able to demonstrate editing a file on the command line. Most tutorials were too dense for me without significant head-desk banging, because they assumed you knew how to compile a file, or run make.
Yes, we did do a lot of these things in a very limited way for our classes, but the teacher would always tell us exactly what we needed to do, and the very small amount of actual programming we did in our program didn't require me to know how to do something like debug the code, enable linting or error highlighting in the IDE (it was mostly simple enough that I could get it right, or close to right, with a few tries anyway).
I know these things contributed to me not getting a job, because I spent almost a year learning them and more, and was able to get jobs after.
All that said, I didn't do an internship, I didn't have a good GPA, and my school wasn't considered good. I was about as unattractive a candidate as I could be while still having a CS degree.
Re: The Missing Semester of Your CS Education (2020)
#296Hmm, my education must have been better than I give it credit: I definitely was taught all of these concepts at uni.
Which uni was this? Presumably you're a proud alumni, even if you don't want to donate money to them, you might at least consider repping them in this context for having taught you this stuff. Fwiwi, many CS programs focus on the science end of things like Big Oh notation, and utterly fail to discuss any day-to-day, practical applications of things.
Wouldn’t say I’m a particularly proud alum. They dropped the ball on a wide swath of other topics that I would consider integral. For instance, distributed computing should be a more common undergrad elective, not something you get blindsided by when you get out of school. “Sorry, you said Who-bernetes?” Now, I get that Kubernetes is a relatively young project, as is Docker and other containerization tech, but it is nonetheless staggering how school felt like it was 10 years behind the ‘cutting edge’ when I was there. They seemingly had no interest in educating engineers to go out and join the web community unless that individual sought self-guided study.
Re: The Missing Semester of Your CS Education (2020)
#297Earlier quoted context omitted.
> I do not know many others who implemented something like that. the school I did in france, ENSEIRB-MATMECA, started with three weeks where you only learn shell commands, emacs, LaTeX etc before doing anything else. Here are the slides (in french sorry, although they all have useful reference cards at the end): - intro: http://mfaverge.vvv.enseirb-matmeca.fr/wordpress/wp-content/... - unix, shell: https://cours-mf.g…
Thank you for the links... I actually read enough French to get by, so those are great to look at for more ideas.
Re: The Missing Semester of Your CS Education (2020)
#298Earlier quoted context omitted.
I agree you should know how to use a debugger, however will also note that some companies mandate use of a specific IDE (or heavily encourage). I have seen devs scoff at the thought of print debugging, but I recall that in systems programming there are many times you can’t use a debugger or need to rely on other tool. I’d rather schools teach the concept of step debugging vs runtime debugging. Teach students to try t…
> I have seen devs scoff at the thought of print debugging Next time they do, ask them to recommend a better method of debugging that works across generally all languages, compilers, IDEs, and platforms with next to zero configuration.
Re: The Missing Semester of Your CS Education (2020)
#299Earlier quoted context omitted.
C++ needs a “missing semester” around tooling. Most material I see focus on the core language but leave out setting up build systems, package management, clang tidy, testing etc.
How do you do package management in C/C++? I have only used pip, cargo, npm (well yarn and pnpm mostly) and composer. Big off putting aspect of learning C/C++ is that I can’t grok how shared libraries work very well
Re: The Missing Semester of Your CS Education (2020)
#300Earlier quoted context omitted.
I sat with a talented developer whilst we wrestled with a threading issue this past week. I wanted to inspect the value of a variable within a method during execution and asked him to set a breakpoint. He didn't know how to do that in the IDE, which he'd been using for over a year. Debugging is indeed a skill which needs learning.
I agree you should know how to use a debugger, however will also note that some companies mandate use of a specific IDE (or heavily encourage). I have seen devs scoff at the thought of print debugging, but I recall that in systems programming there are many times you can’t use a debugger or need to rely on other tool. I’d rather schools teach the concept of step debugging vs runtime debugging. Teach students to try t…
Not just systems programming, but fixing issues in scaled production systems as well. Have fun attaching a debugger to the process that got killed twenty minutes ago when the spot instance it was running on got reclaimed. If you don't collect telemetry, you're blind. Debuggers are a luxury that you get to enjoy for issues you have before you ship.