This weekly roundup thread is intended for all culture war posts. 'Culture war' is vaguely defined, but it basically means controversial issues that fall along set tribal lines. Arguments over culture war issues generate a lot of heat and little light, and few deeply entrenched people ever change their minds. This thread is for voicing opinions and analyzing the state of the discussion while trying to optimize for light over heat.
Optimistically, we think that engaging with people you disagree with is worth your time, and so is being nice! Pessimistically, there are many dynamics that can lead discussions on Culture War topics to become unproductive. There's a human tendency to divide along tribal lines, praising your ingroup and vilifying your outgroup - and if you think you find it easy to criticize your ingroup, then it may be that your outgroup is not who you think it is. Extremists with opposing positions can feed off each other, highlighting each other's worst points to justify their own angry rhetoric, which becomes in turn a new example of bad behavior for the other side to highlight.
We would like to avoid these negative dynamics. Accordingly, we ask that you do not use this thread for waging the Culture War. Examples of waging the Culture War:
-
Shaming.
-
Attempting to 'build consensus' or enforce ideological conformity.
-
Making sweeping generalizations to vilify a group you dislike.
-
Recruiting for a cause.
-
Posting links that could be summarized as 'Boo outgroup!' Basically, if your content is 'Can you believe what Those People did this week?' then you should either refrain from posting, or do some very patient work to contextualize and/or steel-man the relevant viewpoint.
In general, you should argue to understand, not to win. This thread is not territory to be claimed by one group or another; indeed, the aim is to have many different viewpoints represented here. Thus, we also ask that you follow some guidelines:
-
Speak plainly. Avoid sarcasm and mockery. When disagreeing with someone, state your objections explicitly.
-
Be as precise and charitable as you can. Don't paraphrase unflatteringly.
-
Don't imply that someone said something they did not say, even if you think it follows from what they said.
-
Write like everyone is reading and you want them to be included in the discussion.
On an ad hoc basis, the mods will try to compile a list of the best posts/comments from the previous week, posted in Quality Contribution threads and archived at /r/TheThread. You may nominate a comment for this list by clicking on 'report' at the bottom of the post and typing 'Actually a quality contribution' as the report reason.
Jump in the discussion.
No email address required.
Notes -
A couple things stand out to me from your post. I consider myself a very good programmer, and after managing around 100 other ones I've gotten some experience as to what makes good ones. Note that my market is east coast enterprise software for whatever that's worth.
First, I find it surprising you've never met a great female coder. I think you need to work with more people. They're rare, absolutely, but if you're not in a place that hires women because they're women then the bell curve of their quality is the same as men from my experience.
I was trained in the "intuition" method. While I've met phenoms that were self-taught or bootcampers my guess is around 2% of them are good enough for me to want to hire, vs around 10% that have gotten a degree (and those degree programs were, when they got them, using an early focus on data structures etc.).
That being said, I did find so much theory for so long to be incredibly frustrating. It's not a stretch to say that I learned more about coding in the monthlong training put on by my first company than I did in a whole year of school. I think the theory matters, but the current CS and SWE accreditation requirements need some major adjustments, IMO. I would have killed for a databases class and requiring the use of source control.
I agree with you that trying to dumb down coding instruction seems like a win but isn't. You may keep freshmen around long enough to sink into the program where they can't get out without burning money, but they'll be shittier programmers. Your brother's professor using Processing seems almost unbelievably stupid for so many reasons. Java and C# are already high level enough for a newbie to take a crack at them, much less something like Python. Why on earth would you waste a semester not developing exposure to a valuable language?
I am actually, however, grateful that my C/C++ class was second year. The place I was taught had a brutal class that was supposedly just 1 hour but was easily the hardest single programming class I took. Because of it I was able to wipe the floor with other students at a different school when I transferred, but I honestly don't know if I would have fallen in love with programming if my only runtime error messages were just
segmentation fault
.Agreed that C and C++ bloooooow as starter languages. You want something with reasonable error messages and stack traces. And good IDE support-- I think statically typed is actually lower-frustration than dynamically-typed while learning because the compiler tells you if you've fucked up in a particularly obvious way before even running the program.
EDIT: Also if I never again have to write a conversion function between (pick any two) char *, wchar_t *, _bstr_t, CComBSTR, CStringA, CStringW, basic_string, and System::String it'll be too soon.
Oh god. Oh god no. All those repressed memories are coming back. What have you done?! I don't have enough whiskey in the house to make this go away!
More options
Context Copy link
More options
Context Copy link
gdb --args !!
You can even set the SIGSEGV handler to automatically attach gdb to the running program.
GDB is
not easy to learn
even less easy to learn if you are a part of the modern GUI/webapp/the-fuck-is-a-shell generation (so, the problem statement at hand)
doesn't even scale to larger projects, so you can hardly say you'll use it in a real job
Compare it with, let's say, the chrome debug console. Or the vscode debugger for python. They're far more intuitive than
x/10g
info all-regs
,b 0x1234
,ni
×100, etc.Sure, but just
bt
andq
already gets you 50% of the benefit.More options
Context Copy link
You can just run a nodejs program with
--inspect
and the chrome debugger will automatically find it and connect (green icon, top left corner), and then you can debug it just like you would a website! It's much nicer than gdb.More options
Context Copy link
More options
Context Copy link
More options
Context Copy link
I took the theory-and-math-heavy track at school because I figured it would be interesting. It's true that I learned more during an internship than in any of those courses. In programming in particular, degrees definitely are signaling and gatekeeping.
Still, I think programming is in its infancy. Whenever discussions about "is it really engineering or not" come up and the inevitable comparison to bridges and EE happens, people point out that software is bad and buggy, and lots of people don't follow "best practices."
It could be that in a hundred years or so, they will look back and laugh at how primitive we were. Maybe training catches up and programmers become everydaymen like plumbers instead of passionate autists.
I've had that conversation and I'm not sure we'll ever be able to get to that level of "best practices" because the need for software so heavily outstrips the supply. If we needed 100 bridges tomorrow or the world was going to end I'd assume there'd be some that aren't able to handle heavy trucks. See chinese physical engineering corner cutting.
Plus, getting a great gay sex app together is less important than a bridge. Software isn't as consistently life-critical as designing roads is (and when it is, the standards are really high).
Finally, there's the fact that we're dealing with building things that at some level don't have simple and constant physical constraints to box us into "standards". Nobody can build a bridge that corkscrews up to the moon on their own, but you can do things with software you can't do with any other type of engineering.
More options
Context Copy link
More options
Context Copy link
More options
Context Copy link