10 ms·
I don't think it's even the programming that's the problem. There's a ton of Stupid Computer Shit we all know, mostly from messing around on our own time, that
by ashark 9y ago
I don't think it's even the programming that's the problem. There's a ton of Stupid Computer Shit we all know, mostly from messing around on our own time, that makes programming or doing anything else with computers much easier. A set of skills for navigating and troubleshooting issues, and a hard-earned intuition for where and how to look for answers.
My CS program was really easy and I still don't know how people who hadn't put hundreds to thousands of hours into picking up that stuff in the years before college made it through. Many didn't, I guess. With some programming background on top of that it was pretty much a cakewalk for me, but the poor n00bs....
- ikeyany 9y agoI believe that being in the "engineering mindset" is at odds with what many people are used to. I think it's the culture that some see and get scared away from, even if that perception isn't 100% accurate. People interested in fixing CS "inclusivity" should address this first.
- na85 9y agoGiven that computer science isn't engineering (they are distinct but different disciplines), can you elaborate on what you mean by the engineering mindset?
- throwaway7645 9y agoCan't speak for OP, but the engineering mindset usually comes from those of us who go into the program that tend to be very mathematical and logical, while being obsessed with figuring out how things work. When a group of engineers sits down at a table to eat lunch, they could spend an hour arguing about how the restaurant could be more efficient...etc. These kids are often used to independent problem solving and don't need to have their hands held. We had an economics teacher in college who was famous for asking the engineers to stand up on the first day of class and then stating that they would be excused from the finals as they would all have above a 95 and not have to take it. The only majors that get the math exposure we do are well mathematics and physics. The difference is we also have to do a lot of concrete things like fabrication, CAD, circuit design, and almost every other class gets some level of programming, so your entire world resolves around fixing things and applying problem solving techniques. They parody this in Dilbert, but engineers are weird birds. Comp Sci is similar in a way when you have a student coding for 12 hours straight as they're in the zone and coding an elegant solution. They aren't entirely dissimilar, but engineers often have a more formal math background and will attempt to approach a problem from that side. Someone with a PhD in math will be so far ahead of me, that I'll barely be able to catch a glimpse at the kinds of problems they solve. We do more practical things like design engines and stealth technology, while they work on things like the millennium problems. I once attended a lecture by a notable math professor on the Riemann Hypothesis basics. 1 hour in and I still didn't hear the problem properly stated. He said "the reason the riemann hypothesis is important is because it is the reimann hypothesis" wtf?!? Anyway, although it is somewhat stereotypical, each major seems to have a kind on niche person that is attracted to it.
- xtreme 9y ago> the reason the riemann hypothesis is important is because it is the reimann hypothesis I can see this being a joke. Entire subfields of mathematics have been built on the assumption that Riemann hypothesis is true. He probably assumed that everyone in the audience would know this, which is not unreasonable.
- throwaway7645 9y agoIn 6 years I never thought of it that way! :) Thanks! Now I feel like an idiot.
- d0mine 9y agoTry "Trolling Euclid" book by Tom Wright, to understand why the Riemann Hypothesis is considered by many mathematicians to be the most important unsolved problem in mathematics today.
- throwaway7645 9y agoWill do, thanks!
- aerovistae 9y ago> We had an economics teacher in college who was famous for asking the engineers to stand up on the first day of class and then stating that they would be excused from the finals as they would all have above a 95 and not have to take it. To be honest with you, that teacher sounds like a real tool. All that that can possibly achieve is to breed various subtle forms of animosity, either among classmates or towards engineers or towards the teacher or the course.
- throwaway7645 9y agoNo doubt about that. Really unprofessional.
- kamau 9y agoNot a dig...but questions like this one. I get what you are asking, but I think that people outside of the discipline would be thinking, "You know what I mean. Why so pedantic?"
- ikeyany 9y agoAs an example, being "technically correct" is important for building a design to match a specification or for winning a logical argument. But it is not an important skill for persuading people, or for cheering people up.
- Guyag 9y agoI think GP hits the nail on the head there with the homework analogy, and you with yours. Just talking to my friends in other careers about the work that I do makes me check time and time again just how many assumptions of knowledge I make when talking about anything vaguely technical (which is possibly a criticism of how I explain things, but also/even if so says lots about this issue). What surprises me is the lack of consolidated resources addressing these basic pain points. I don't think it would be hard to come up with a list of examples just by looking at a normal work day and taking a step back; really evaluating where you're relying on basic knowledge to do even the most mundane of tasks. Once you've been doing this for a few years those tasks are just that - mundane - but for beginners it's having difficulty with those basic parts that is a real turn off. "How will I ever be any good at this if I can't even download code off this thing called Github". If someone could point me towards some kind of existing resource covering a bunch of different areas in this way I'd be really interested in having a read. On a related note, I'm reminded of one of Dan Luu's related essays on debugging [1], which I recommend reading if you haven't already. [1] https://danluu.com/teach-debugging/ https://danluu.com/teach-debugging/
- PretzelFisch 9y agoMy Cousin smart kid had to come over at midnight because he had his first java assignment outside the ide. Couldn't compile because class path was not defined right on windows. Things like that scare people or pop their confidence.
- alasdair_ 9y agoI still remember a lab where one of my friends was up all night trying to find an error in his Java (1.0) code that ultimately came down to having a single character lowercase instead of uppercase.
- erikbye 9y agoThat just sounds like the professor didn't teach them about Java classpath before telling them to use a CLI; or this kid didn't read the course materials.
- harryh 9y agoHundreds to thousands of hours? I think you're overestimating a weee bit.
- sopooneo 9y agoMaybe. But I am sure I had put in a thousand hours programing my C64 by the time I had finished 8th grade. And I doubt I'm alone.
- balladeer 9y agoWhen I went to senior secondary school (class 11 and 12; this is before engineering college for 4 years starts here in India) I opted for CS as my 5th subject (4 courses are compulsory and you can opt for 1, or 2 more - you'll be scored on best 5). The teacher was doing it in C++. I still remember my first program was a for loop in C++ and before that I didn't know the C of Computers. I sturggled from the day 1. I had gone there from a village and I had never used a computer before. I just was good in Maths, Physics (or so they said and so I thought) etc and people said I should go for CS and I did. Loop, increments, semi colons, returns, recursive everything was a deterrent. But this wasn't the real problem. The real problems were the teacher and the rest of the class. Pretty much everyone else, most of them were from the that city or other cities and had been doing CS from quite early on - many of them had their own computers to my surprise (it was quite pricey back then), as they didn't face any challenges and the teacher expected me to just go at the same speed and catch up somehow. I tried to seek his attention and get some help with the challenges I faced and he would just say a thing or two and move on, or ask a student to help me who'll help with "no, you have to put a '==' there, not '='" and I would never know why. At that time of of struggles books confused me more. I was shocked to see years later that why they didn't use C&R and why Robert Lafore and some Indian authors. Why? Also, this was also the first time I was introduced to the purely commercial nature of education where the "connection" in the class was missing right from the start which I was used to having been to boarding schools and semi rural schools. I failed. Miserably. Again and again. But I still kept the course throughout 11 and 12, though I had a strong urge to drop it in 12 (just before the board exam; the one that matters and you get a certificate for this) and opt for something familiar and straight like Economics or Sanskrit which was I really good at. I don't remember why but I guess it was the urge to prove myself or get something that will get me or job or so; as that's what I had known about CS. I can't recall. Anyway, for some reason my seat during the board exam (during CS paper; your seats change for all the papers) was diagonally behind my best friend who knew pretty much everythiing in the paper and I ended up scoring 3 marks higher than him out of 100. He's still cross about it. Well, I never recovered from those initial CS trauma days. I still feel daunted by anything new in CS and get stressed. First I try to avoid it and question the need of it in the first place (like I did when I was asked to move to frotend/Angular from Android) and after a few weeks or few months when I have my hands dirty with it and I find it easy like muscle memory I look back and wonder why I was worried about it and it repeats.
- Baeocystin 9y ago>There's a ton of Stupid Computer Shit we all know, mostly from messing around on our own time This, I think, is the core issue. Like most of us here, I started playing with computers as a young child, from a Timex Sinclair 1000 as a pre-teen to a Commodore 128 as a young teen, then an Amiga and beyond. It wasn't work, it was fun, a hobby. And more importantly, by the time I hit college, I had literally thousands of hours of practice just being immersed in how computers work. I started tutoring other students in CS for some beer money, and it was a real shock at how awful otherwise very intelligent people were at what I considered utterly trivial questions. But they weren't trivial. They were only simple if you already had a complex, detailed and well-worn model of how computers work running in your head. Without that, even simple computer tasks may as well be written in cuneiform for all the good it does the genuinely new student. I'm not even sure it is possible to take a young adult who is truly computer illiterate and have them succeed in a technical major. At least not in a standard 4 years. There is simply too much foundational knowledge you need to have before you can even begin the real work of learning what to do.
- YZF 9y agoI should have thought about beer money. But I was such an introverted geek. I do remember watching other people trying to figure out how to use a mouse or the most basic stuff. I've already studied algorithms and data structures and had a paying programming job. Most of the CS work seemed trivial but I did learn some math. The math did get hard so the degree was definitely not a breeze. Even with CS there were areas that were less trivial like computational geometry or numerical methods but I had the advantage that coding was a non-issue so I could focus on the essence. Many many many years later, I still often make the mistake of assuming things that look trivial to me are also trivial to others. It's just so hard to tell whether something is universally trivial or just trivial because you've done it so many times. I wonder if the current generation's "playing" with their phone/computer/tablets gives them an advantage over the previous generation. I do work with quite a few sharp young people but I don't know whether they had programmed before going into CS or not, I guess I should ask...
- smeroth 9y ago
- jacobolus 9y agoOn the other hand, I took a theory CS course in college, and all of the pure math students found it extremely easy with predictable lectures and short obvious homework assignments, while all of the programming-since-they-were-5 but not too mathy students were in way over their heads, and really struggled a lot. It’s all about what you know...
- CydeWeys 9y agoI loaded up with theory classes in college precisely to stretch myself and learn more of the difficult things that I wasn't yet already competent in. I'd been programming since I was 9, and could handle the programming projects just fine (more easily than most other students), but the theory classes were more challenging and I wasn't going to learn that stuff if not in school. It ended up being quite helpful for Google interviews later anyway.
- rjbwork 9y agoI had a much easier time in theory than the other students as well, and ended up being the only non-graduate level student in Quantum Computing, and only CS major in another, Combinatorics. I think a big part of it was that I had a strong maths background, graduating as I did from a Math/Sciences magnet school.
- CydeWeys 9y agoI had the same background of having gone to math/science/CS magnet programs in grades 6-12, which also helped me with the theory courses. Not to the same extent as my programming experience helped with the practical courses, though; theory wasn't something I did outside of school for fun.
- wiz21c 9y agoI didn't go to Google but I can relate to your story. Having reached CS courses after tens of thousands of hours programming was very enlightening. Indeed, the CS course layed down all my hands-on knowledge upon a very nice theoretical foundation. I clearly remember saying to myself "ahhh, all that what I've done so far, now i really get it". I had that feeling when studying algorithm performance (with math proofs) and when studying the Scheme programming language (with all the fun stuff : call/cc, tunks, curification, CPS, immutability, pure function, lazy evaluation,...) This + my hands-on knowledge made me a very enlightened dev :-)
- erikbye 9y agoHmm.... Many CS101 courses are extremely easy; have a look at something like Harvard's CS50, which many people also take online. There's always somewhere to start for people who's hardly used their computer for more than just browsing.
- aerovistae 9y agoI thought that until I saw some of my otherwise very smart friends try to take the course. "extremely easy" is extremely subjective.
- ghaff 9y agoI haven't gone through CS50 but I took the MIT equivalent online. From the perspective of someone who has done a fair bit of programming but is not a professional programmer (and doesn't do a lot these days), it was somewhat time consuming but not terribly hard for me. However, my thought when taking it was that if I were a freshman taking this who had minimal experience with computers, I'd have been pretty lost. Not so much because I couldn't have handled individual aspects of the course but there would have just been too much new from the practicalities of a programming environment to a lot of the basic programming concepts to the more theoretical aspects.
- sah2ed 9y ago> There's a ton of Stupid Computer Shit we all know, mostly from messing around on our own time, that makes programming or doing anything else with computers much easier. Thanks for clearly articulating this in 6 words: "Stupid Computer Shit we all know". This is something many people aren't willing to acknowledge (aka tribal knowledge gained from lots of trial and error). It perfectly summarizes what pg tried to communicate in a 2013 interview [0] where he said founders who have been "hacking for the past 10 years" have an enormous competitive advantage over founders who haven't i.e. female founders when it comes to starting technology companies. Unfortunately, the tech press [1][2][3] went out of its way to grossly misinterpret what pg was trying to say [4]. [0] https://www.theinformation.com/YC-s-Paul-Graham-The-Complete-Interview https://www.theinformation.com/YC-s-Paul-Graham-The-Complete... [1] http://valleywag.gawker.com/paul-graham-says-women-havent-been-hacking-for-the-pa-1490581236 http://valleywag.gawker.com/paul-graham-says-women-havent-be... [2] https://www.theatlantic.com/technology/archive/2013/12/paul-graham-revives-sexism-tech-talk/356541/ https://www.theatlantic.com/technology/archive/2013/12/paul-... [3] https://www.quora.com/Is-it-possible-that-Paul-Grahams-comments-about-women-and-startups-have-been-misinterpreted https://www.quora.com/Is-it-possible-that-Paul-Grahams-comme... [4] http://www.paulgraham.com/ff.html http://www.paulgraham.com/ff.html
- theorique 9y agoExactly right. The unstated but important knowledge of Stupid Computer Shit We All Know was spun by the media as "Evil Bigot Paul Graham Says That Only Suburban White Kids Who Have Used Computers Since Age 6 Can Ever Be Successful Tech Entrepreneurs". Which was not at all what he was saying but ... media gonna media.
- ashark 9y ago> Thanks for clearly articulating this in 6 words: "Stupid Computer Shit we all know". This is something many people aren't willing to acknowledge. I think a lot of us have forgotten how strange and frightening a blank command line was the first time we encountered it. And how long it took to actually get comfortable with it. Even a windowing system is weird if you're not used to it, and lots of people use those for years and years without ever actually feeling like they're in control of them. Knowing where the boundaries lie, how to protect oneself from unrecoverable situations and how to get oneself out of bad-but-recoverable ones puts one at ease in front of the keyboard. The absolute n00b (which we all were, once) gets lost navigating directories. The experienced user loses their boot sector, curses, sighs, then fixes the problem. They aren't put off by finding the solution to their problem is to apply a patch to their kernel and compile, and so on. It takes time to reach that kind of ultra-power-user level of competence and confidence, it's hard to teach, but it's enormously useful for letting you put the concerns of basic (ha!) computing in the background and focus on the task at hand (programming, for example).
- 0xfeba 9y agoI agree. The hardest part of getting my CS degree was the Math and some of the fundamental CS classes. The actual programming classes I enjoyed quite a lot. I came into college with a lot of personal experience with computers, and programming, like you mention. I figured most other classmates were the same. However, the amount of skill variation I witnesses as a lab assistant where intro course students would plead with me to basically complete their assignments after I helped them once was mind-opening. Horrifically formatted code. Unable to use copy-and-paste keyboard shortcuts--or any keyboard shortcuts, really. Unable to run and debug code. Unable to find where in the file system the compiler or their commands were running. Unable to understand file system permissions, etc. There was a huge valley between those with no experience that just wanted the CS degree for a well-paying job, and those that already had CS experience and wanted CS for a well-paying job that they would enjoy* *theoretically
- brightball 9y agoI had a lot of that "SCS" experience from growing up, although in college CPSC 101 was my first experience with programming...and I hit that hypothetical wall really hard. I was worried I was going to have to change majors 2 months into the class. I still remember the moment when I was staring at code for about 3 hours on a bunk bed when it suddenly just made sense...and then I got A's in all of my CPSC classes for the rest of school. I couldn't explain how to make it make sense if my life depended on it. It just happened.
- tryitnow 9y agoThere should seriously be a class on "Stupid Computer Shit" - I think that would make programming, and hence CS, a lot more accessible. There was a good class on Coursera a while back called "Startup Engineering" which did cover some of this even though it wasn't the focal point of the class. Of course, it would be impossible to cover every little detail - but a class dedicated to SCS would still be super useful.