6 ms·
One thing I noticed about CS once I started out in the industry is how boring it was. When I started learning programming I often got the “what” (what is an arr
by _fat_santa 3y ago
One thing I noticed about CS once I started out in the industry is how boring it was. When I started learning programming I often got the “what” (what is an array, what is a floating point integer, etc) but never a “why” (why do we need arrays?).
To folks that code that answer is obvious, but it wasn’t obvious to me when I started. I remember on many occasions going “great, but how does this tie into an actual real world application”.
And I think that’s a big reason so many loose interest. You learn all these concepts but you have almost nothing to tie them together or to tell you why you should care about them.
This is why I think the “Python Music” exercise was so engaging, students now had a “why” behind what they were doing, they could tie it to a larger goal. And I remember back in college when I got really into programming was right around the time we started submitting full blown apps as projects (full blown in terms of a CS student)
- JimtheCoder 3y agoI sometimes think that software/app architecture is something that should be integrated into a students introduction to coding. Having a high level understanding of how the apps you use on your phone actually work, some of the steps that the program is doing (database writes, etc) seems to be interesting. Writing the same, boring functions over and over again so someone can reverse a list of strings...sorta kills the vibe, as the youth might say...
- vel0city 3y agoWhen I was a teenager first learning the basics of coding, I usually found programming books that focused on actually making things to be the best tools for learning. Books like "Beginning C++ through Game Programming" and "Teach Yourself C# in 24 Hours" were way more engaging and picking apart the code samples probably taught me more than what most of my peers did in the intro to CS class in college. When you can actually see the changes to things and have a real interesting project to work on its way more engaging that just going over the theory of things. Obviously, one should follow up with actually learning the theory as well to get a deeper understanding, but I often just can't grok things unless I can play with them.
- pph 3y agoI started "programming" by taking a game server script (template) and building my way around: > Let's spawn a car there! > Let's make a multidimensional array of car types & location to spawn! > Let's load the data from another file! > What is this "database" thing I just heard of? And down the rabbit hole they go.
- phonescreen_man 3y agoI felt like that about a lot of education particularly science and maths, okay so yes your telling me it is a -insert term- but why is it called that, why do we need to know that, how does it fit in with a larger picture…
- randomdata 3y agoThe traditional way of schooling, where it starts with small pieces and works its way up to something grander, is decidedly backwards. In practice, one is best served with starting with something grand and then breaking it up into smaller and smaller pieces until those pieces are digestible. Learning becomes infinitely easier this way. On the surface it may seem like the same thing: The learning takes place around a concept of of small pieces of a larger puzzle. However, the process of breaking down the puzzle is where the most important information is gleaned.
- the_new_guy 3y agoSo, mathematics, for instance.....you'd start with differential equations and work your way down to......addition/subtraction?
- Solvency 3y agoThat's a low effort interpretation. Every kid in the world understands the concept of 3D games, Minecraft, etc. That's a perfect vehicle to begin breaking it down into relevant simple math concepts.
- alistairSH 3y agoOr just a basic web site that has some JavaScript. Or a form/submit.
- inconceivable 3y agoas a middle aged veteran i still get frustrated by the lack of intermediate-level examples in lib/framework documentation. even a link to a suitable github repo showing a full usage of features would be useful. i can stare at the auto-generated API documentation or look at the source (or maybe even your test suite) for hours trying to hunt down features and flags and methods i can override and undocumented tricks i can use but why not just give people a useful example beyond hello world? the best libs start with examples. here's a great one. it covered my entire use case in the first page of documentation. https://tenacity.readthedocs.io/en/latest/ https://tenacity.readthedocs.io/en/latest/ like, how did you actually test this lib? surely you wrote something - anything - that uses some more of these features other than a test harness?
- duxup 3y agoYeah best practices / structure/ strategies beyond the basics are often a mystery.
- sheepybloke 3y agoThis was a huge frustration for me as I got into embedded programming. Once I got beyond the basics, it was incredibility hard to find information to take my engineering to the next level. For example, I was doing some work with ADCs and had a deep question about how to do the conversions properly for a sensor. Google kept taking me to site for beginners using Adafruit libraries or basic tutorials how to connect a sensor to an Arduino. There is so much information on helping people start now days, but not enough helping them get to becoming an intermediate developer.
- duxup 3y agoIn college I wanted to learn how to code. My first class was in C, the instructor read from the book and then we did exercises from the book. I dropped the class, moved on in life. 20+ years later I was between jobs and ready for something new. I had an awesome instructor who was energetic and explained why we do things, we built silly apps, and it all made sense. I’m enjoying my new career a great deal.
- samsolomon 3y agoThis resonates with me. I was always interested in "websites that did things" that was before things were called web applications. I took a couple of CS classes in college, but they were dull, challenging, and left me with uninteresting Java apps. It put me off computer science entirely. A year later, I started tinkering with Wordpress and found it far more fulfilling than my CS coursework. In 2012I joined The Starter League—an early code bootcamp—and began my learning Rails. For me—and probably for many others—the real excitement lies in seeing how we can apply what we learn to build cool things. It makes learning so much more interesting.
- nlh 3y agoI had exactly this problem as a student -- it turns out I need to really grok the WHY before I am able to grok the what (and it only took me about 30 years to figure that out ;). So my best STEM subjects were always physics and geometry (they 'why' is built-in) and my worst ones were calculus et al. The absolute worst I ever did in a class was my first linear algebra class because it was taught in a purely 'what' sort of way (this is a matrix, this is how you multiply a matrix, etc.) and nobody ever explained why you'd need a matrix or what practical applications any of it involved. So it just never clicked and the class to me was a series of memorization and mechanical calculation steps. And THEN, years later....I discovered 3D rendering....:) The challenge is that there are often kids for whom this just doesn't matter, and often enough of them that teachers and educators in general don't feel a particularly strong need to modify the traditional way of teaching.
- the_only_law 3y agoCalculus is unfortunate because I knew it had “practical uses” I just didn’t think those practical uses were for me and couldn’t describe what they were outside of vague references to “engineering”. Fast forwards during Covid, I was doing a lot of work on the side with retro telecom projects and for the first time in my life I wished I had paid much attention to calculus or at the very least anything before it.
- TheOtherHobbes 3y agoWith most STEM you're getting the API reference with no useful sample code or applications. Some people love the abstractions as puzzles. I was fine with calculus and matrix algebra at that level, but I was doing an EE course and the gap between abstraction and real world problems was not huge. But I had a mental block at school about the moment of inertia, because I had no idea what it was for. At some point the penny dropped and I worked out that it was basically the m in F=ma but for spinny things. Until that happened it was a mess of confusing diagrams with no obvious meaning or application, in an uncanny valley between pure abstraction and physical relevance. After it happened it became much easier to do the math.
- alistairSH 3y agoYeah, I didn’t really “get” basic calculus until I started taking economics courses where there was an application.
- snarf21 3y agoEspecially at a younger age, you have to focus on some concrete "thing" with constant little minor improvements. I think most high school kids would be best served building out something like Battleship or Yahtzee (e.g.) in Javascript and the browser. Let the kids pick what part to build next. But doing it in a webpage with the ability to simple add new UI elements one at a time and new small functions, progress is obvious and immediate. At this age, we should be focused on exposure and excitement not inheritance and typing.
- andersa 3y agoI had this problem with math in uni. All abstract concepts, zero explanations why we should care about it in the real world. So it goes in one ear and out the other. That has to be one of the least effective ways of learning about something, like my brain is not wired to retain information if it doesn't know what the use of it is. Now I'm slowly discovering the "why do I need this" for much of it as I learn graphics programming, and it makes me wish I had known to pay more attention back then.
- kitsunesoba 3y agoSame here, but with high school math. Despite my efforts it was almost impossible to pay attention because I had no practical applications at hand, and the teachers didn't really care to change that. They stopped right at teaching the abstract concepts and let the students sink or swim. As a 30-something adult, I think I'd do much better at these classes now simply because of greatly improved self-discipline, but uptake and internalization of information I have immediate use for is still vastly faster than it is for abstract bits and bobs.
- thebigwinning 3y agoThe teachers don't know how it's used either. Math teaching selects for study habits and that's about it.
- screye 3y agoMath education has the same issue. 3B1B videos draw you in with a cool visualization that makes you ask the 'why' of 'why did this happen' first. This maps onto the techniques used by the best professors I've learned from. Hell, it is exactly how competent sales-men sell their product. Start with a cool demo -> confuse the audience -> make them ask why -> this motivates them to want to learn the what -> all the tools learned in the 'what' comes together to teach you the 'how' -> you just made the cool demo happen -> MAGIC. My favorite subjects were ones where the 'why' was obvious to me as I learned the 'what'. I distinctly remember disliking inorganic chemistry, because none of the facts seemed to go anywhere. You learned the facts for the facts. Nothing came together to reveal a grander intuition. I disliked history for the longest time, because I viewed it as some form of culture acquisition and status signaling. Once I started reading real history from an 'early warning system' perspective, I couldn't stop searching for repeating patterns and universal casual links within it. With AI tools gaining prominence, it will actually be possible to build these fully contained dopamine cycles. "Dangle carrot -> difficult task -> reward", all within a single self-contained assignment. But even besides that, too many teachers simply do not have an intuition for how that dopaminergic cycle works.
- tstrimple 3y agoI took all the advanced math classes available to me in high school. This was despite me hating school and being a terrible student. But I enjoyed math as puzzles to solve. This was until I got into calculus. The teacher didn't have a strong grasp of the subject and more importantly it was just memorizing calculus formulas instead of understanding any sort of real-world application. In contrast, my AdMatics (advanced math and physics) class had us doing real-world physics based experiments. The application of the tools was immediately obvious. If I had a calculus lesson that broke down the problem space like this (https://youtu.be/WUvTyaaNkzM https://youtu.be/WUvTyaaNkzM) I probably wouldn't have stopped my formal education in math at that point. When I discovered that video, all the formulas they tried to make me memorize started making a LOT more sense.
- jimbokun 3y agoA long, long time ago, when the only computer I had access to was an Apple IIe in my high school's computer lab, I decided to write a basketball game. Using ASCII characters to draw a basketball court, and literal Xs and Os to represent the players. Then typing in player stats from the newspaper to determine odds of making a shot, etc. I would write BASIC code on my school notebook at night, so I could type it in at school the next day. Not sure how this idea clicked for me, as no teachers suggested it to me. But this basketball game idea was what drove me to learn how to program. I've been programming one thing or another for decades since.
- laiwjrtlai 3y agoIt reminds me of the math professors I had in grad school who were insulted when you asked for examples or even alternate explanations. Ugh. I love learning but I couldn't wait to get out of academia.
- deleted 3y ago[deleted]
- burnished 3y agoI think the real world application angle is a common framing but misses the mark just a little - most people really just want to understand what would motivate someone to develop or need the concept. I only mention it because I felt similarly very frequently and learned to start diffing for that context to learn better, but I have noticed that the 'real world application' framing comes with a lot of baggage.
- hospitalJail 3y agoOn a similar note, I tried learning OOP every year for 10 years, never stuck. Everything always felt like functions at its core, didn't matter the language. Then one day I had a problem where we got a lot of value out of a class. At this point I was a professional programmer, I had already made plenty of websites and apps. When I teach people programming, I basically make this simplification so people can get programming cool stuff immediately. Of course I explain there is OOP, but we don't waste time on it. You don't need to understand it to make a text based video game. EDIT: I started programming when I was 17, I didn't start a programming career until I was 30. I only dabbled as a hobby.
- unethical_ban 3y agoMy one liner for what oop is: Objects are groupings of data (constituting a new data type, in a typed language) with specialized functions that only work on them. I know you know, but it even took me a long time to get the utility.
- hospitalJail 3y agoLets see, what I would describe it as: You would use classes if you have a category of something with similar attributes that you would want to do various manipulations on and get various outputs. My next sentence was going to be an example about a car and calculating the number of seats. Its a shame how quickly I need to move to a real world example, but when talking to a programming noob, I feel bad for saying the word attribute/class/method. I feel less bad about functions, they should know this stuff from 8th grade.
- thebigwinning 3y ago> 10 years Wow thats usually the amount of time it would take to become an expert in a completely new field.
- hospitalJail 3y agoThat is basically my story. Started learning programming in high school. Went to college for engineering. Worked in (real) engineering for 8 years. Now I automate engineering jobs.
- asdff 3y agoIntro to programing courses/classes/etc usually suck. Its hello world and building calculators. It sucks. People want to do stuff like make video games and get turned off immediately from this boring mind numbing stuff designed for beginners.
- dorkwood 3y agoOne thing I really struggled with as a beginner was determining which parts of a tutorial were intrinsic to the language, and which parts were arbitrary text. As an extreme example, I can remember the first programming tutorial I did at about age 15, which was not aimed at beginners at all. It started with something like “Let’s create our first Hello World”. I thought, great, what’s that? No explanation. Straight into printing “Hello World” to the console. I can remember trying to figure out whether Hello World was some sort of special code that did something within the program. And then the tutorial ended, and I had no idea what I’d just done, or why.