[HN Gopher] Teaching how to code is broken
___________________________________________________________________
Teaching how to code is broken
Author : neilpanchal
Score : 99 points
Date : 2022-01-12 06:53 UTC (2 days ago)
(HTM) web link (neil.computer)
(TXT) w3m dump (neil.computer)
| hamolton wrote:
| I don't know of any of my peers that took a course that heavily
| relied on a textbook; it feels like most university intro CS
| courses spend most of the time commitment in lectures and problem
| sets. I think many would agree that you learn the most doing
| homework.
|
| It's been common for a decade now to recommend beginners on the
| internet looking for an intro to CS the course Harvard CS50. The
| course has attracted criticism for be overwhelming for a single
| semester, as it requires submitting assignments in Scratch, C,
| Python, SQL, and HTML/JS. However, I think it, like other well-
| acclaimed intro to CS courses do teach problem solving in via
| hand-held labs and problem sets. Perhaps its prevalence suggests
| the course is influential in the way CS is taught, but outside of
| Yale copying the course, I'm not sure.
|
| I think the problem sets in CS 50 are effective for teaching
| problem solving. Looking at examples of problem sets for the most
| recent semester (I did the Fall 2012, so it's changed a bit)
| there is...
|
| - making an animation or game in Scratch which must have have a
| loop, condition, and variable - printing pyramids of # characters
| - caesar encryption - ballot counting - implementing bitmap image
| filters - a spell checker - writing SQL queries against a
| database of movies - writing the frontend of a website - writing
| a basic full-stack web app
|
| I guess the main difference between the course and the post's
| proposal is that it doesn't follow a single narrative, so when
| you apply concepts in your head is only after the first
| introduction.
|
| Looking on other resources I encountered at Georgia Tech, I
| remember both the intro to CS class I saw others take and the
| cool, interactive intro to CS textbook Mark Guzdial showed my
| class How to Think Like a Computer Scientist [1]. They both start
| with python turtle graphics towards the beginning to teach
| variables and loops before venturing off into other concepts. I
| think the first half of Automate the Boring stuff with Python
| actually faces the issues the author cites before diving into
| common applications in the second half; I do wonder now many
| working professionals learned from this text which I've generally
| liked at a glance. I suppose the most influential intro to CS
| materials are for AP CS A, although I'm not familiar with the
| course.
|
| [1]
| https://runestone.academy/ns/books/published//thinkcspy/inde...
| imbnwa wrote:
| As a self-taught, highly agree almost all intro material I was
| coming upon back in 2013/14/15 was basically just a reference
| throwing concepts at you without a context that was incrementally
| increasing in complexity to guide you. I was one for trivia, so
| this was fine to a certain extent, but he's dead right, the _job_
| is not writing code (as much as the JIRA Industrial Complex would
| like to make it out to be), the _job_ is thinking and problem-
| solving.
|
| I only began to understand the _thinking_ needed for doing my job
| after after mentoring by a consultant who fully grasped and could
| communicate this, where all the other in-house seniors were too
| stuck in the Complex for whatever reason to transmit this clearly
| (likely related to the near-unihibited freedom the consultant had
| relative to the in-house seniors).
| DwnVoteHoneyPot wrote:
| Tutorials do exist for absolute beginners. Seems like the author
| is implying they rarely exist which is incorrect. "Hello world"
| is a tutorial/real world example. I learnt the how to code
| through the "Ruby on Rails Tutorial" by Michael Hartl.
|
| The tutorial market is different than the computer science 101
| crowd, so you have tutorials for one, textbooks for the other.
|
| The issue with using tutorials in textbooks is that it's more
| effective to use 1 great example per chapter, than shoe-horn 1
| monolitic project as an example for 13 chapters. And the three CS
| 101 books I've read do have good examples or interesting problems
| to solve. If I remember correctly the Harvard 101 book does use
| cards for objects.
|
| One problem that the Ruby on Rails tutorial has as a CS 101 book
| is that there is so much boiler-plate stuff needed to have a
| functioning monolithic example. To do "hello world", need
| Database -> Code -> Template... when you can do: print("hello
| world"), then move on to next chapter.
|
| The article is much-ado about nothing.
| Apocryphon wrote:
| I was going to make a comment very similar to yours- there's
| been plenty of programming 101 books, though maybe more so in
| previous decades starting in the '90s, which has the author
| present a project or a series of projects and each chapter
| involves building out the project while introducing concepts.
| While those books tend to be about teaching how to use a
| specific framework, SDK, or language rather than programming in
| general, that project-based method of pedagogy is common.
|
| What's annoying about those books is that sometimes you don't
| care to go through the entire project, you just want to jump to
| a specific topic, but you're forced be part of a continuous
| narrative. Though in modern times where every technical book
| has a corresponding repository somewhere with code samples, you
| can at least use that code rather than starting chapter one.
|
| Whether you want to learn from how-to projects, or from
| abstract first principles, there's resources out there for
| both. Teaching how to code is not broken at all. Maybe teaching
| data structures and algorithms could use more work- but that's
| the subject for a different article.
| hateful wrote:
| This reminds me of when I took Java in college. One of the
| prerequisites was Introduction to Computer Programming 1 & 2 (101
| and 102).
|
| 1 was along the lines of what was on the top of this article:
| Chapter 1: Types Chapter 2: Variables Chapter 3: Operators/Math
| Chapter 4: Control structures Chapter 5: Arrays Chapter 6:
| Functions Chapter 7: Structs Chapter 8: Classes and Objects
| Chapter 9: Methods Chapter 10: Inheritance and Polymorphism
|
| And 2 was algorithms (sorts, etc)
|
| Then the Java class was: Chapter 1: Types Chapter 2: Variables
| Chapter 3: Operators/Math Chapter 4: Control structures Chapter
| 5: Arrays Chapter 6: Functions Chapter 7: Structs Chapter 8:
| Classes and Objects Chapter 9: Methods Chapter 10: Inheritance
| and Polymorphism
|
| But not much about what you can do in Java specifically.
|
| I understand going over these concepts briefly and how to do them
| specifically in that class, but to have the whole class focus on
| them was not very useful. Again, 101 was a PREREQUISITE! So there
| shouldn't be anyone in the class who hasn't taken it!
| TaylorAlexander wrote:
| I must share the very wonderful video by Seymour Papert on
| teaching LOGO. He makes a similar observation: imagine if we
| taught people dancing by sitting them at a desk and explaining
| all the steps to them, making them memorize them and write them
| down, but they were never allowed to actually move or try the
| steps. We find when teaching people a language for example that
| immersion works very well. So Papert suggests teaching math by
| immersing students in "Math land", and shows off his computer
| language LOGO designed to do that. It is a wonderful video in
| many ways and a big inspiration for me as I think about hopefully
| teaching in the future.
|
| https://www.youtube.com/watch?v=ZG9cYhekB8A
|
| Youtube link for easy viewing but the entire video series he
| helped produce is here:
|
| https://el.media.mit.edu/logo-foundation/resources/onlogo/in...
| a-dub wrote:
| personally i've always thought the best way to teach is with
| already working code. given a reference (the internet will do
| these days), some well written working code with examples of all
| constructs and idioms in it for a lesson, and possibly a sequence
| of prompts to change what it does with increasing difficulty,
| seems the best way.
|
| most importantly, it must do something that the learner at least
| has some remote interest in and for best results the activity
| should be creative and constructive.
| JoeAltmaier wrote:
| My approach is to employ folks with enthusiasm. If they're
| teachable, they'll figure out whatever pile of tools they get
| thrown into on the first task. Then they'll have some skills and
| the next task will seem less daunting.
|
| Of course some mentoring is useful. But just the stuff that's
| pertinent to the task at hand; concrete help that gets them
| moving forward. Because, somebody is paying for results. And
| because producing results has a very positive effect on
| confidence.
|
| I just offered work yesterday to a young person helping me at a
| big box store. I mentioned I was buying a device to test an
| Android build, and they got excited and started making cogent
| comments about the tool chain and devices available. I game them
| my card, and when they graduate in 3 months (from a local
| community college) I'll find them work on a client's contract.
|
| The first project will cost me more than I earn from
| subcontracting them (because it takes me away from my high-rate
| work I would otherwise be billing). Maybe break even by the 2nd.
| But it's a sort of enlightenened-self-interest thing. If young
| people get into the field, everybody benefits.
|
| And of course as an old guy with resources, I can afford to take
| some risks. Because it's everybody's job to look out for the
| other guy.
| financetechbro wrote:
| I wish there were more people out there like you. You sound
| like a great mentor / boss
| PaulDavisThe1st wrote:
| I still don't any see initial introduction to the art of problem
| decomposition.
|
| We want to do X ... what are the parts of X? How might we
| accomplish them? For each of them, what are their parts? How do
| we take a complex task and break into pieces that we know how to
| do and then compose them back together to meet the goal? What
| kinds of decomposition can we do? What kinds of decomposition
| work well?
|
| Until you understand this high-level sense of what you're trying
| to, type list container map iterate immutable functional lambda
| coroutines are just noise.
| 999900000999 wrote:
| >Why is all this important and what problems does it solve?
|
| Couldn't of stated in better.
|
| My why was creating a few games with my friends.
|
| It's been a real gift to see it turn into a career.
|
| You can teach yourself to code for free with an old laptop (
| Ubuntu with Xfce works) , it's one of the last accessible
| careers.
| friendlydog wrote:
| Teaching everyone the same way is wrong. Everyone has different
| learning styles, education and life experience.
|
| If there is a large enough market share for a topic grouping like
| learners together can be very efficient.
|
| Creating a one sized fits most solution is the default setting
| for many educators and yields an "okay" result.
|
| Allowing learning at your own pace, with community support and
| many styles of consumable content will give a excellent result
| for self motivated individuals.
|
| Students who are not motivated or need help with motivation can
| be handled differently.
|
| Edit:
|
| Learning styles has a broad meaning more than just the "I'm a
| visual learner."
| ratherbefuddled wrote:
| I thought "learning styles" were largely debunked as a myth
| now?
|
| The linked article describes the structure of a reference book,
| identifies it as a structure suitable for a reference and those
| with significant experience, and then decries it as a tutorial
| for newbies. It seems rather obvious - I wouldn't try learning
| a new language by reading a dictionary either. It doesn't
| support the hyperbole in the title. There are many good
| tutorials for learning to code in different programming
| languages, sometimes it's hard to pick them out though.
|
| What works for me, and pretty much everybody I've watched try
| to learn anything, is a simple loop. Conceptual explanations
| (whether written, verbal, or visual), applying the concepts
| with exercises / practice / work with examples to follow,
| digging into the details using a reference, and then broadening
| to the next set of concepts. Eventually the pattern recognition
| kicks in and people can see the connections and predict the
| rest.
| jhjhvhvnv wrote:
| "Everyone has different learning styles" is a common
| misconception.
| dragonwriter wrote:
| > "Everyone has different learning styles" is a common
| misconception
|
| The myth of different sensory orientations to learning is
| definitely, well, a myth; it is probably _not_ justified to
| go beyond that and say everyone learns best with the same
| pacing and other details of approach.
| bob1029 wrote:
| I have always struggled with how to advise my friends & family on
| this path of learning. It seems like _everyone_ wants to be a WFH
| developer these days, but I don 't know how to enable them to
| succeed on that path. "Go build something you want to build!" is
| something I keep reiterating (as does this article). But most
| don't seem to be interested in that for whatever reason
| (presumably because its fucking hard).
|
| Maybe I should just leave it at that - I am getting to a point
| where if someone doesn't have the willpower to go burn a whole
| weekend on a pile of bullshit that won't even compile (i.e.
| because they _really_ want to solve some problem), then maybe
| they won 't have the necessary pain tolerance required to truly
| master the skillset.
| dj_mc_merlin wrote:
| I have never met a programmer I respected skill-wise that
| wouldn't randomly spend a weekend locked in a room solving an
| esoteric problem they felt they had to solve (for no reason).
| Over the Christmas holidays everyone at my company writes PoCs
| or hobby projects, being glad to have some free time away from
| paid programming in order to enjoy recreational programming.
|
| What I'm trying to get at is software engineering is an easy
| career if you're literally obsessed with it, and most software
| engineers are, or at least were at some point (it goes in
| cycles).
|
| If you're not gonna do that, you simply can't assimilate the
| huge amount of knowledge needed to truly excel in even one
| facet of programming.
| rjbwork wrote:
| >or at least were at some point (it goes in cycles)
|
| Indeed. And the periods in which I can be obsessed seem to be
| increasingly less common as I get older, but every now and
| then I get bitten and just have to bang it out.
| [deleted]
| khendron wrote:
| When non-tech folks ask me how to learn programming because
| they want "jump on the money train", I ask them if they ever
| take the initiative to solve a problem with programming. You
| don't have to work in tech to do this. For example:
|
| Work in an office writing documents and making spreadsheets?
| Have you ever simplified your job by writing a Word or Excel
| Macro?
|
| Own a smart TV? Have you dug into its features until you know
| them backwards and forwards and can program it to
| (metaphorically) sing and dance on command?
|
| Have you connected multiple things in your house together so
| you can control them from your phone, just because you could?
|
| These are all examples of taking the initiative AND having
| the curiosity to dig into technical problems, and implement
| solutions. If you are like this, you will likely do well in
| tech and really enjoy it. If you DON'T have the tendency to
| do these sorts of things, you are probably going to have a
| bad time.
| cloverich wrote:
| You can show people the door, but they have to walk through it.
| I learned programming, and a bunch of other stuff later in life
| (now 39). They all have the same process - you decide you want
| to do it, and you start doing it. You will absolutely fail hard
| and regularly at it. You'll pick the wrong course or book or
| language or whatever, but that's all part of the process. If
| people see you doing the work and are able, they'll help you
| out (ideally, not IME).
|
| In a way its kind of nice to get started with something new,
| because you don't need a plan at first. You just start kind of
| doing it, and then when you take breaks, you figure out the
| plan. Its amazing how quickly you can pick things up once you
| get into the habit of doing it very regularly. That initial
| hump is always, ALWAYS a huge pain, but there's no escaping it.
| Failing and flailing for that initial period is how you learn,
| not how you fail.
| 908B64B197 wrote:
| > I have always struggled with how to advise my friends &
| family on this path of learning. It seems like everyone wants
| to be a WFH developer these days, but I don't know how to
| enable them to succeed on that path.
|
| The best advice is to get a proper CS or Engineering degree
| honnestly.
| shagie wrote:
| That pain tolerance bit...
|
| There's a blog post that I really like titled "Find The Hard
| Work You're Willing To Do" -
| http://www.cs.uni.edu/%7Ewallingf/blog/archives/monthly/2018...
| (HN post w/ 76 comments
| https://news.ycombinator.com/item?id=26209541 )
|
| The article concludes with...
|
| > But I had enjoyed working on the hard projects I'd
| encountered in my programing class back in high school. They
| were challenges I wanted to overcome. I changed my major and
| dove into college CS courses, which were full of hard problems
| -- but hard problems that I wanted to solve. I didn't mind
| being frustrated for an entire semester one year, working in
| assembly language and JCL, because I wanted to solve the
| puzzles.
|
| > Maybe this is what people mean when they tell us to "find our
| passion", but that phrase seems pretty abstract to me. Maybe
| instead we should encourage people to find the hard problems
| they like to work on. Which problems do you want to keep
| working on, even when they turn out to be harder than you
| expected? Which kinds of frustration do you enjoy, or at least
| are willing to endure while you figure things out? Answers to
| these very practical questions might help you find a place
| where you can build an interesting and rewarding life.
|
| > I realize that "Find your passion" makes for a more
| compelling motivational poster than "What hard problems do you
| enjoy working on?" (and even that's a lot better than "What
| kind of pain are you willing to endure?"), but it might give
| some people a more realistic way to approach finding their
| life's work.
|
| ---
|
| A lot of people don't have the pain tolerance for the "this
| isn't fun" part of software development that is necessary to
| get past certain plateaus of skill.
| rabuse wrote:
| I've attempted to teach multiple family members/friends over
| the years "how to code", and they give up almost immediately.
| They "just don't get it", and I'd argue one needs to seriously
| find enjoyment in building things, and knowing how long things
| can take, to get started.
| riversflow wrote:
| I'm not trying to level this against your friends and family,
| just an observation that I've been meaning to share, spurred
| by "just don't get it":
|
| When I was in community college I had to take "Critical
| Thinking" as a pre-req for Symbolic Logic.
|
| We spent the first 1/3 of the class, 8 weeks, analyzing truth
| statements, basically and, or and not. I was bored to tears,
| but attendance was mandatory, so I got to see how people
| absolutely struggled with this, and "just didn't get it". The
| average score on the mid-term covering that was a low D after
| 8 weeks of (excruciating for me) examples. I finished in <15
| minutes and got 100%.
|
| When you are in a bubble of people who work in engineering
| fields, especially in tech where logic is fundamental, I
| think it's easy to think that logic comes naturally to
| everybody, but it's far from ubiquitous and reading on here
| it sometimes feels like some people just don't realize this,
| especially those deep in tech.
| andrewzah wrote:
| That's like most hobbies/careers.
|
| People want to learn the guitar|piano|violin, until they
| realize the amount of work it takes.
|
| People want to get fit and jacked, until they realize the
| amount of work it takes.
|
| People want to be a lawyer/doctor/engineer, until they
| realize the amount of work it takes.
|
| Or they realize that they just don't really like it.
|
| Programming isn't any different. One needs a particular
| mindset, and a level of patience to deal with debugging. It's
| not for everyone, and that's fine.
| jholman wrote:
| E'ybody wants to be a bodybuilder, but don't nobody want to
| lift no heavy-ass weights.
|
| https://youtu.be/4UlgXIL0-3g?t=10
| closeparen wrote:
| I know it's a pithy saying, but is it true? People tend
| to report the actual lifting of the weights as pretty
| pleasurable. It's the whole supporting lifestyle grind of
| consistently making it to the gym, only and always eating
| food whose ingredients you have weighed, etc. where you
| lose most people.
| andrewzah wrote:
| It's a pithy saying. It's basically shorthand for:
| "nobody wants to put in the work and adjust their
| lifestyle to achieve that goal of being ripped". But I
| wouldn't say doing 3x or 5x sets of lifting heavy weights
| ever is "fun"- you just get used to it.
| tmountain wrote:
| Applies to learning foreign languages too. I've spoken to
| many people that want to "learn Spanish" without having a
| clue that it's a huge grind to get to basic competency.
| cloverich wrote:
| Only caveat is, and this is where I feel bad, if the person
| hasn't learned something new in a very long time, they
| forget what it feels like to change, or even become
| convinced that they can't. It can be hard to convince
| someone that no, you don't need to have aptitude or be any
| good at it after a few days, weeks, even months. You just
| need to keep doing it. As long as the goal is realistic,
| you'll succeed. Whether you are more or less "talented"
| than someone else affects the timeline (a little) but you
| are going to the same place (again, realistic goals).
| nomel wrote:
| > one needs to seriously find enjoyment in building things
|
| I would say you have to also be happy with/enjoy confusion
| and frustration.
| [deleted]
| ModernMech wrote:
| > I've found that modeling or simulating something real like a
| card game is very effective.
|
| I think the last paragraph of this article should have really
| been blown up to be the entire article. I want to know more about
| this experience the author had.
|
| Because one question I have is: should we even be teaching
| object-oriented programming to beginners? The rationale for the
| modified class schedule is that it answers the question "WHY!?",
| but I still feel myself screaming that question after reading
| this piece.
|
| Let me propose something entirely different: what if trying to
| get everyone to learn Python is too much to ask? In fact, why
| would we use such a niche programming language when there's one
| out there used by far more people: Excel. Why are we reaching
| toward the object-oriented model of program design, when the
| people have spoken as to what works for them? Far and away, the
| masses prefer the reactive, dataflow experience provided by
| Excel, so let's meet them at their level. And SQL to the list.
| There are people in my life who I wouldn't trust to turn change
| the battery on my laptop, and yet they somehow know and
| understand SQL for their job. They are completely mystified by
| Python, yet can write a SQL query like no one's business.
|
| I think it's far past time "learning to code" meant "learning
| Python/JS/C". Let's stop trying to force them to use a tool that
| we developers are comfortable with, and teach them how to code
| using tools they already know how to use.
| macrowhat wrote:
| kenjackson wrote:
| I love the last chapter of "No one teaches the end so lets put
| concurrency here" -- is so true. I feel like I've almost never
| done the last chapter of any textbook I studied in school. And it
| does seem like concurrency shows up in a lot of comp sci
| textbooks at the very end.
| [deleted]
| yawnxyz wrote:
| I don't really see how the proposed way of teaching how to code
| is any better... I do like the idea of use-case based teaching.
|
| Have the student choose what kind of thing they're trying to
| accomplish, then structure the class dynamically based on the
| needs of their choices, or something like that
| dboreham wrote:
| Article seems to be complaining about the typical chapter layout
| for a reference book on a given programming language. Such books
| aren't intended to teach coding. The intended audience is those
| who already understand how to code, in a different language.
| cloogshicer wrote:
| From my experience, many beginner books are structured in a
| similar way.
| systemvoltage wrote:
| Basically, every YT tutorial is exactly like the Chapters
| listed. Corey to Sentdex, or pick your favorite "How to code"
| book from Amazon. It is quite rare to find a book that the
| article describes (use-case based learning). Can you share a
| few if you know?
| wiseleo wrote:
| The Head First series of books. They are available for
| multiple programming languages and use the same set of use
| cases across them all. The books are even written with
| techniques to suggest to the brain it should remember this
| information.
| HPsquared wrote:
| Coding is usually learnt, not taught.
| teeceetime2 wrote:
| An "Intro to Logic" (Pseudocode) class was required at my
| university before you could move on to any of the actual
| programming courses. It was a glorified linear programming course
| - think BASIC or BATCH with a bunch of jumps and goto's.
| qsort wrote:
| This is unironically a good idea. The main stumbling block
| isn't programming per se, it's breaking down a conceptual,
| informal idea of what you have to do in a formal language.
|
| It matters very little whether it's linear programs, ASM
| instructions, LISP forms or C++ classes.
| systemvoltage wrote:
| On the other hand, our University course started with half-
| baked explanation of what "public static void main" means
| (Java entry point) on the first day. It was horrible and no
| one understand anything until a few classes later we go to
| the meat of making/building stuff.
| qsort wrote:
| Yeah, I probably already commented on this some time ago,
| but I think Java is really, really bad as a teaching
| language. The language itself is just fine and much better
| than most people give it credit for, _if you are a
| professional developer_. As a teaching language is full of
| cerimony and it forces upon you an object model that you
| can 't fully understand until much later. It's too much "in
| the weeds", if that makes sense.
| __mharrison__ wrote:
| (Disclosure: I do corporate training (Python and Data Science)
| for a living.)
|
| I generally don't teach coding to newbies, so a lot of the coding
| I teach is correcting poor mental models and teaching features
| (somewhat) unique (or different) in Python.
|
| My best Pandas courses have been when the client opts to use
| their data for the course (instead of my canned data). The
| students are already subject matter experts with the data and
| when they learn some of the tricks to slice and dice, summarize,
| and visualize, they are off to the races. They dig right in.
|
| Teaching as the article suggests is very difficult because
| examples that appeal to some or boring or confusing to others.
| I'm not saying it won't work, but there are cons as well. When
| I'm teaching with my "canned data", I try to mix in a few
| different datasets from different areas so students can see that
| the ideas are generally adaptable.
| lawl wrote:
| I always thought the best way to learn programming is to find a
| program you want to create, and then figure out how to make
| that happen.
|
| This is still how i learn (most effectively) today. If i want
| to learn a new language or something, i write something that i
| always wanted to write in it anyways. That way it doesn't get
| boring.
|
| I think what you're describing might be similar in that canned-
| data is not interesting.
| chmod600 wrote:
| But you need some concept of what kinds of problems are
| solvable with a computer before you could really be inspired
| to program one.
|
| And more than that, you need to have a concept of the
| difficulty of a given problem for a beginner or expert.
| Obviously a beginner will be wildly off, but probably needs
| some concept of the level of difficulty.
|
| For example, lots of people have motivation to write a game.
| But few have the level of obsession to follow through with
| it. Maybe they should do a basic iPhone convenience app or
| something first instead.
| paulryanrogers wrote:
| It's a matter of scope and expectations. Leave your epic
| space opera in your dreams and take baby steps using easier
| tools and concepts. Once you find some fun try product-
| izing it.
| erwincoumans wrote:
| Yes, learning is much easier if you have motivation. How do
| you motivate kids, if they rather play games rather than
| coding (and they even ignore in-game scripted coding such ad
| Minecraft or Roblox coding)?
| wobbly_bush wrote:
| > How do you motivate kids, if they rather play games
| rather than coding (and they even ignore in-game scripted
| coding such ad Minecraft or Roblox coding)?
|
| Do such kids need to start with regular programming
| languages? Wouldn't visual languages be a simpler starting
| point for them to get motivated?
| xmprt wrote:
| Try a game like Factorio or Satisfactory. Even just
| Minecraft can be good enough to train their problem solving
| and critical thinking skills.
|
| They don't need to start with redstone to learn to code.
| They should play the game and naturally realize that
| redstone is a way to solve their problem (like making an
| automatic sliding 2x2 door) and then solve it.
|
| I feel like those skills will take you much further in life
| because now you have an extra tool to solve problem no
| matter what field you end up going into. And since
| programming is so powerful, it's often one of the best
| tools for the job so kids will naturally pick it up.
| asleepawake wrote:
| Having a good mental model of a language seems like one of the
| fastest ways to be more productive in that language. Do you
| have any recommended resources for developing a strong mental
| model of python? For reference, Dan Abramov's course
| JustJavascript [1] provides an amazing mental model of
| JavaScript, and Josh Comeau's css for js developers [2] course
| provides an amazing model for understanding css. I have 5+
| years programming in python but admittedly do not know much
| about the internals so my mental model is pretty weak!
|
| [1]: https://justjavascript.com/ [2]: https://css-for-js.dev/
| hexane360 wrote:
| One way I've found is to dig into C/C++ extensions to Python.
| The Python C API reference is very helpful:
| https://docs.python.org/3/c-api/index.html
|
| It can be quite fun to implement a simple data structure
| (tree, queue, etc.). in C and bind it to Python.
|
| Otherwise, you can get a lot of dirty details by reading the
| source to complicated/magical libraries (e.g. pickle).
| touchngthevodka wrote:
| Have you tried Fluent Python? It really helped to level up my
| knowledge of the language.
| raincom wrote:
| Any teaching, training, has to hook with the experience of
| students. Otherwise, it will lead to cramming, etc; that's what
| we see in grade-driven teaching. You are doing a great service
| by using the client data to solve "mini-problems" of your
| students.
| gumby wrote:
| Structure and Interpretation of Computer Programs follows this
| advice: designed for people who'd never used a computer before
| (no kidding -- this was common in the early 80s), the first
| lecture introduced the idea of procedures and abstraction and
| went on to demonstrate root finding, prime factorization, and a
| little symbol differentiation IIRC. A great way to get started.
| lanecwagner wrote:
| I agree there are so many issues with coding education, (full
| disclosure, that's why I'm building Qvault.io) but I don't think
| the big problems are the ones presented here.
|
| I see the following as the biggest unsolved problems:
|
| 1. Online learning rarely teaches you what you should be
| learning. Resources are useless if you don't know which subject
| matter is right for you yet. 2. Platforms don't give you a feel
| for "completion", e g. when and how should I start job searching.
| 3. You don't get personal mentorship or cohort support like you
| would at school 4. Too many videos, not enough code. Almost all
| learning when it comes to coding should include writing code. 5.
| Healthy mix of guided and unguided learning. Courses are great
| for abstract concepts, projects need to follow so that you can
| apply what you learn on your own
| mzehnder wrote:
| +1 to use-case driven teaching (especially growing the same use
| case to include more complex topics). I would have loved to learn
| this way :)
| enchiridion wrote:
| IMO coding should be taught like a trade. Take woodworking for
| example. Sure you spend some time learning to make straight cuts
| etc, but you quickly move to building thing with a lot of
| feedback.
| dboreham wrote:
| It isn't taught that way?
| habeebtc wrote:
| When I was in school (it's been a while), we built super
| boring things that nobody cared about as our assignments.
| Various inventory systems, which you have to sort/search.
|
| That was a big challenge of mine in school. I wasn't that
| interested in the assignments, because I was building boring
| stuff that didn't really solve problems, let alone ones I
| cared about.
|
| I am pretty prolific in my career, and I'm not even what you
| would call a hardcore dev. Which brings me to my next gripe
| with CS curriculum: It is geared towards training hardcore
| devs and not any other type of engineer.
|
| The types of coders we should have some sort of curriculum
| for, which we to this day mostly do not:
|
| -SRE's -Ops people -Support people -PM's -Accountants/General
| finance -DBA's -SysAdmins -Network engineers -Cloud engineers
| qsort wrote:
| I partially agree, but how isn't the usual CS curriculum
| relevant for Sysadmins, DBAs, network engineers and the
| like?
|
| What CS curriculum doesn't include networks, relational
| theory, hardware architecture, os architecture? How can
| anybody in those roles be successful without at least
| informally understanding the rudiments of big-O notation or
| without having some light scripting skills?
|
| Certainly CS curricula could be improved, but a good one
| doesn't do too bad of a job at preparing you for technical
| roles IMO.
| habeebtc wrote:
| My inclusion of them on the list is from just 2 data
| points:
|
| Those sorts of classes were available when I was in
| school, but it was not a whole track, it was 1 class
| each.
|
| Second data point: These are the types of roles I meet in
| the wild who would benefit from coding, and they usually
| cannot (or can do some very light scripting).
|
| I cannot explain it exactly. They just usually are
| missing that skill.
| Jtsummers wrote:
| In the US, the kind of programming most immediately useful
| for sysadmins and DBAs, and other operations fields, are,
| or were, typically present in community colleges and
| technical colleges, not university programs (where CS
| dominates, or "programming for engineers/statistics" basic
| classes). At least that was the case 10+ years ago, have
| they stopped teaching those classes and providing
| certifications/associates degrees appropriate to those
| fields?
| lordnacho wrote:
| IMHO it should start with some tools, so that changing the code
| is not too cumbersome. How git works, how the IDE works, how some
| basic OS commands work. Everyone starts with a different base but
| often it's the people who messed around with a computer a lot who
| know some shortcuts that to most coders are obvious.
|
| The less pain you have with changing the code, the more code you
| can try.
| travisd wrote:
| I have opinions(tm), but mostly agree with this article. Most
| intro coding classes and course materials read more like a
| glossary than a lesson. This contributes (rather directly) to the
| failure to retain a diverse student base in intro CS program.
| We've gotten a lot better at recruiting CS students from
| underrepresented groups (women and BIPOC chiefly), but numbers
| drop off quickly[1].
|
| Studies in math education have shown that the way material is
| presented/courses are run has a huge impact on reducing
| disparities[2]. This is especially important in CS especially
| when boys are encouraged from a young age to do "techy" and
| "geeky" things in ways that girls usually aren't. Students arrive
| in intro CS courses, are sat next to students who have been
| coding since they were 10, and are rightfully intimidated even
| though they could succeed in the course.
|
| While I was at the University of Michigan, I helped a professor
| develop "Joy of Coding," a mini-course for high school students
| that focuses on sparking desire ("joy") rather than teaching CS
| first principles[3]. By the end of the first lesson, students are
| manipulating images with code - a real "WOW!" moment. It's built
| on Pathbird, a platform that I built (in conjunction with UMich
| faculty) to run more engaging and accessible courses in computer
| science and computational subjects. (Shameless plug: if you're
| interested in Pathbird, or even just to chat, drop me a line at
| travis@pathbird.com).
|
| [1] https://cse-climate.engin.umich.edu/wp-
| content/uploads/sites... (see page 8) [2]
| https://www.colorado.edu/eer/sites/default/files/attached-fi...
| [3] https://continuum.engin.umich.edu/programs/jumpstart-coding/
| skinkestek wrote:
| > This is especially important in CS especially when boys are
| encouraged from a young age to do "techy" and "geeky" things in
| ways that girls usually aren't.
|
| Just be aware that this is not everyones experience.
|
| Many places boys are held back and girls are pushed forward.
|
| And then afterwards boys gets told they are somehow
| "privileged" and would never be were they are if it wasn't for
| "male privilege".
|
| Obviously this goes both ways, but there is at least some focus
| on it when it hurts girls.
|
| If you try to mention the problems young innocent boys have, be
| prepared to get laughed out.
|
| (I'm halfway expecting that even on HN too.)
| JoeAltmaier wrote:
| This seems entirely created out of thin air.
| skinkestek wrote:
| I think that was neither nice nor fair from you.
|
| This is experience.
|
| If you had a cushy life, good for you. But don't tell
| others their experiences aren't real.
| [deleted]
| foxfluff wrote:
| Meanwhile my sister's first programming course at university
| involved making a game using an existing bespoke framework. It
| mostly involved adding graphics and a few methods & some
| properties to objects (which already had physics etc.
| implemented) in an otherwise more or less done project base. I
| don't know about retaining or intimidation but I feel like it
| was way too much "just fill in the gaps, look you have a
| character on the screen now" and that they really failed to
| _teach the basics of programming_ and I got the vibe that
| students finished the course not really having any clue how the
| whole thing works at all. The next course was object oriented
| programming at the deep end.
|
| I feel like she's still struggling with the basics and doesn't
| have much self confidence at all. And she's not dumb.
| stingraycharles wrote:
| > Meanwhile my sister's first programming course at
| university involved making a game using an existing bespoke
| framework.
|
| I had exactly the same exercise on my first day on uni, we
| had to take some robot maze pathfinder game and adjust the
| algorithm a bit.
|
| As someone who had been writing code for over a decade at
| that point (but who was unfamiliar with Java), I still
| remember it was intimidating.
|
| I cannot imagine how it must have felt for people without
| prior coding experience.
| freebreakfast wrote:
| Do you know of any comparative studies with other countries? Or
| is this a predominately US/Canada issue?
|
| For example, do BIPOC students in Botswana drop out at similar
| rates? Do non-BIPOC students in Taiwan experience similar drop
| out rates? What are the classes and course materials like in
| these countries in comparison to the US/Canada?
|
| What about drop out numbers from international students? For
| example, do Polish women studying CS at American universities
| drop out at the same rate as American women? For those who do
| drop out, do they drop out for the same reasons?
|
| If we want to get to the root of the problem we need both more
| breadth and more depth in our understanding. Too often we stop
| at the men/women (in America) or BIPOC/non-BIPOC (in America)
| divides, and then provide generalized solutions which have very
| limit impact.
| tonguez wrote:
| Yes, I remember back in the day the girls would always try to
| come into the computer lab to play video games. My friends and
| I were always like, "GET OUT! WE HATE WOMEN!" Then they left.
| The girls wanted to learn how to code so badly, but we wouldn't
| let them. My friends and I were getting lots of sexual
| attention from women, but we thought that was boring, and
| preferred to spend our time alone on computers. The girls were
| having sex, but they thought it was boring, and wanted to learn
| to code instead, but my friends and I physically prevented them
| from entering the computer lab, using our strong muscles. My
| friends and I all had zero sex drive, and if we had any
| attention from the opposite sex we would have rejected it and
| continued to spend all our time on computers.
| Der_Einzige wrote:
| Is this GPT-3? It looks like it is.
| imglorp wrote:
| This comment covered several hot topics.
|
| 1. Girls in STEM: society needs to quit telling people "math is
| hard, tee hee" and quit shopping in the Pink Aisle at the toy
| store and reinforcing that culture. Buy your kids Lego and
| Raspberry Pi circuit kits and see what happens.
|
| 2. CS is part coding, part science of algorithms, and part
| software engineering. We have to quit intertwingling all terms
| into the catchall "CS" bucket because sometimes "how to run
| excel" gets thrown in there too. Maybe best to drop the term
| altogether and use more descriptive names for each study.
| travisd wrote:
| RE: 2: I think I agree. There are lots of "CS" programs
| targeted towards high-school students which I have mixed
| feelings about. The goal shouldn't be to turn every student
| that walks through the door into a SWE (there's somewhat of a
| conflict of interest here considering most programs are
| sponsored by big tech companies who are desperate for talent
| - Microsoft does a lot in this space). Instead, I think it
| should serve a few roles: expose students to new
| opportunities (learn if you _do_ want to be a SWE); give
| students the skills to understand that computers and
| algorithms are not magic (important from a public awareness
| perspective); and also to teach enough "deep" technical
| skills to prepare them for a world dominated by software
| (e.g., learning how to query databases, write small
| automations, etc.).
|
| But I think most important is that intro courses need to
| serve as jumping off points (i.e., they should be _INTRO_
| courses). Give students a taste and let them decide if they
| like it and want to take another bite.
| throw_m239339 wrote:
| > 1. Girls in STEM: society needs to quit telling people
| "math is hard, tee hee" and quit shopping in the Pink Aisle
| at the toy store and reinforcing that culture. Buy your kids
| Lego and Raspberry Pi circuit kits and see what happens.
|
| Girls in STEM =/= Girls becoming professional programmers.
|
| There are plenty of girls in STEM fields such as medicine,
| biology, geology, physics, Math, civil engineering...
|
| The fact that not a lot of them want to be forced to sit
| before a computer 10 hours a day for the rest of their lives
| certainly isn't an issue if you asks me...
| 908B64B197 wrote:
| > Girls in STEM: society needs to quit telling people "math
| is hard, tee hee"
|
| To me, the very existence of "Girls in STEM" groups is
| sending a weird message to girls (and I'm apparently not
| the only one to think that). Something along the lines of
| "sure you can do STEM, you're just not good enough to do it
| the regular way so we created a group just for you".
|
| Honestly that's the message a lot of diversity initiatives
| end up sending.
| ejb999 wrote:
| couldn't agree more - have STEM groups and encourage
| everyone that wants in, to join, but don't make them sit
| in the 'special class' separate from everyone else.
| another_story wrote:
| True to some degree, but I think it does help girls get
| involved in areas where boys are dominant. In high school
| the comments from boys towards girls interested in such
| pursuits can deter them. Having a space free of that, at
| least until they've developed the motivation to continue,
| is important.
|
| As a high school CS teacher, I've seen how boys can be
| towards girls interested in coding.
|
| All of this swings both ways, of course, and men are
| deterred from positions like elementary school teacher,
| nursing, and secretary roles. Gender being attached to
| jobs is just dumb in general, and keeps a lot of capable
| people from doing what they'd love.
| andrewzah wrote:
| Sitting at a computer for 10 hours a day isn't a gendered
| thing.
|
| There is nothing about computer science or programming that
| is gender specific. It, ideally, should sit around 50-50,
| +-5%. So yes, it is a problem that it so heavily skews
| male.
|
| As to why, it's multi-faceted cultural issue, with how our
| society treats boys and girls starting from birth. In other
| words, a pipeline issue.
| throw_m239339 wrote:
| I never said or implied that programming was sexed, I
| told the parent that just because they are fewer female
| developers doesn't mean the sex imbalance is the same or
| even skewed heavily toward males in every STEM
| discipline.
| hackinthebochs wrote:
| It is not clear that interest in extended computer use
| isn't gendered. For example: https://www.ncbi.nlm.nih.gov
| /labs/pmc/articles/PMC3166361/
| 908B64B197 wrote:
| > We've gotten a lot better at recruiting CS students from
| underrepresented groups (women and BIPOC chiefly), but numbers
| drop off quickly
|
| Are you really better at it if you can't retain them in the
| long run? The stats you shared are interesting, but to me it
| seems to highlight that students are getting "weeded out" at
| the beginning of the course. I would be curious to attempt a
| correlation with High school GPA and SAT scores. Because, if
| lower performing students leave, regardless of gender or race,
| that's to be expected. But if overachieving students of color
| leave and their (white or asian) peers with lower grades don't,
| now that's an interesting issue.
|
| > Students arrive in intro CS courses, are sat next to students
| who have been coding since they were 10, and are rightfully
| intimidated even though they could succeed in the course.
|
| I would argue the solution here is to have different "levels"
| of intro courses. Because the converse is also true; students
| that are coming in with a decade of coding and who already had
| an introduction to programming might assume they will be able
| to "coast out" courses and then suddenly realize they are
| falling behind their peers. And then drop out.
| khaledh wrote:
| Exactly this! To quote myself from a couple of years ago:
|
| I wish the style of teaching complex programming topics walked me
| through the pain of making something work, exploring a few
| alternative solutions, showing the tradeoffs, and then after the
| pain has been experienced by the learner, a proper solution is
| finally introduced and recommended. IMO it's a much more powerful
| technique for teaching if you walk the learner through the pains
| first, then arrive at a solution, and tell them that "you've just
| [discovered how ownership works in rust]"; i.e. the concept is
| given a name at the _very end_, not defined at the beginning as a
| solution to a pain the learner never experienced. Unfortunately
| very few books/tutorials take this approach.
| Gigachad wrote:
| I feel like the average person already knows why. They know what
| they want and they just want the info on how to do it.
|
| I don't think the order of teaching presented in the article as
| bad actually is bad. What I think the problem I and others had is
| learning from a book to start with is really hard. Stuff doesn't
| get retained well or make sense.
|
| Programming finally clicked for me when I did the codeacademy
| class for JavaScript in 2012. What helped was it wasn't just
| shoving walls or text at me. It was "here is a very tiny concept,
| go try it. Now here is another tiny concept, try this"
| nathias wrote:
| 'Typically' better known as the straw man. Teaching to code was
| broken in the 90s, today it is the least broken of anything you
| can possibly learn.
| optymizer wrote:
| I'm a huge fan of Nature of Code and I agree that it's a
| wonderful book, but I don't think it's a book for people who are
| beginners (i.e. they're learning how to code). Daniel Shiffman
| has a ton of resources which are better suited for people who
| want to learn how to code - Learning Processing, the Coding Train
| channel, etc.
|
| Motivation is the primary hurdle when teaching folks how to code.
| Having a goal to accomplish keeps them motivated, especially if
| there's feedback early - games, robots are good starting points.
| wodenokoto wrote:
| From the Nature Of Code, chapter 1:
|
| > If you've read any of the introductory Processing textbooks
| or taken a class on programming with Processing (and hopefully
| you've done one of these things to help prepare you for this
| book)
|
| Yeah, that doesn't sound like a beginner book at all.
| japhyr wrote:
| I've been thinking about this topic for a long time. I was a
| secondary math and science teacher for 25 years, and I taught
| intro programming classes whenever I could. Later I wrote Python
| Crash Course, which was largely informed by my experiences
| working with students - my direct classroom teaching, and my
| attempts to find resources for students who were capable of
| independent learning. I've looked critically at many learning
| resources over the years.
|
| I certainly agree with the author's main point. Giving people a
| series of dry lectures or chapters that focus on syntax, without
| any intentional narrative about what it all means or why we
| should learn it is not particularly effective.
|
| I'll make a brief comparison to the math materials I've reviewed
| for secondary education. There are many curriculum resources that
| are really well structured mathematically - all the math is
| correct, and each new topic builds on previous topics coherently,
| and leads somewhere specific in the end. But most of these kinds
| of resources are fairly dry to students who are not intrinsically
| motivated to learn math. Then there are many resources that
| present things in a fun or interesting way, but lack a coherent
| structure to the math that's presented. These are better at
| catching students' interest, but they still don't bring students
| to a place where they understand math well enough to use it
| effectively in their own lives. There are few curriculum
| resources that truly do a good job of hitting both of these goals
| - well structured mathematically, and with compelling topics.
| It's difficult because the people creating the resources need a
| really strong pedagogical background and a really strong
| mathematical background. People often tend to focus on one or the
| other of these areas.
|
| I see the same issue in how learning resources are developed for
| programming. There are probably thousands of books that have a
| table of contents similar to what the author presents here,
| without a coherent narrative to motivate people through all those
| topics. Many of these books are technically sound, but they don't
| carry people through all the topics because there's too little
| tying all the topics together. Then there are a whole bunch of
| resources that use a specific compelling topic to grab people's
| attention; the author uses the example of card games. There are a
| couple limitations here: if you pick an interesting context, you
| only appeal to the people who like that subject. Also, you then
| have to stretch the context to cover concepts that aren't
| specifically needed for that context. That is, building a card
| game project brings up many topics and ties them together. But
| what do you do with important topics that weren't needed? Do you
| leave them out? Do you present them separately? Do you force them
| into the context?
|
| One of my big frustrations with learning resources, especially
| k-12, is that they do a great job of grabbing kids' attention.
| We've kind of solved that problem - young people are plenty
| interested in learning to code. But to really gain the ability to
| build out your own ideas, you need to work through the list of
| topics that the author of this article presents.
|
| What's the conclusion? There's no one way to teach people to
| code. We need a variety of resources that address all of these
| issues in ways that meet the needs of a variety of learners.
| People who are designing these resources, whether they're
| developing a book, video course, online tutorial, etc, need to
| think through these issues and have a clear and intentional
| approach to how their resource is structured.
| codazoda wrote:
| I created a series of small books that teaches code by making
| art. I give them a chunk of code to type and then I break it down
| after that. This is how I learned long ago.
|
| People tend to learn slowly as they work, understanding more and
| more as they go. Often, they can make minor changes after their
| first project. Change the color? Make it larger?
|
| Splash of Code: Learn Programming by Making Computer Art
| https://www.amazon.com/dp/B082FMPXW6
| nickstinemates wrote:
| I like trade schools like Holberton School
| maerF0x0 wrote:
| Interestingly related to the author's point of teaching using
| cards.
|
| When I used to give coding interviews one of my favorite tasks
| was to implement the scoring rules of poker[1]. People would
| often ask "why ask them about poker?" and I'd show them that
| there is a ton of skill coverage
|
| 1. Decomposition of requirements into sub problems
|
| 2. pattern matching for code reuse and composition
|
| 3. seeing if they can come up with a decent algorithm to
| communicate to and from sub functions the results
|
| 4. seeing if they can come up with an ordering mechanism for
| cards
|
| 5. seeing if they can come up with a for loop that counts if
| there are 5 of something
|
| 6. String parsing to their own intermediate representation of
| cards
|
| All these skills are used basically daily (at least in my
| workplace)
|
| [1]: a good description of the rules, sample IOs, and myself as
| an oracle (ask me anything, no expectation of knowing poker
| itself) served to help keep "poker" from being the subject matter
| tested
| shagie wrote:
| The scoring poker is indeed an interesting problem - and its
| Project Euler #54 ( https://projecteuler.net/problem=54 )
|
| Starting from high card on gets to some interesting
| increasingly complex "can I identify it rules"
| ramses0 wrote:
| If you truly believe that "poker" isn't the subject matter
| being tested, run the same interview question (this weekend)
| with a friend, blind, on scoring hands of cribbage. I'll wait.
| https://bicyclecards.com/how-to-play/cribbage/
| Cupertino95014 wrote:
| "<x> is broken" -- clickbait title. His approach is fine, I like
| it. Let him offer it to paying customers, and see how _they_ like
| it.
|
| There are many different approaches to teaching out in the world,
| some free and some not. There are code boot camps, which survive
| only if they work -- since they only last 12-20 weeks, bad
| feedback would sink them pretty fast (unlike 4-year colleges,
| where the worthlessness of your degree doesn't become apparent
| until years later).
| empressplay wrote:
| When I was in junior high school in the 90s in my computer
| science class we learned Pascal by programming our own Light
| Cycles clone. Everything we learned was in service of making our
| game work. And we each came up with different solutions to
| accomplish the same things, and learned from each other.
|
| This article seems to imply this isn't how things are done now,
| but surely they still are by most?
| spankalee wrote:
| Similar for me. Even though I had already been programming on
| my own, my first school-led programming classes were with done
| with Logo, then Apple Basic, then Pascal, always used to build
| specific and simple programs. I never had an intro class start
| with types.
| shadowgovt wrote:
| I once got to be a fly on the wall (well, a member in the
| audience) to a graduate project presentation where a team had put
| together a simple game development environment to get young
| people excited about programming (Alice, which is still around:
| https://www.alice.org/). They were presenting their (relatively
| positive) results on how much engagement they'd seen getting
| students involved using Alice as opposed to available
| alternatives for learning beginner programming.
|
| One of the professors in the School of Computer Science raised
| the question of why Java was chosen as the backing language for
| the whole project, since it's not a very strongly-typed language
| and for pedagogy, there are much better languages with more
| rigorous type safety.
|
| The student presenting began to get a bit flustered when she
| answered (I believe her answer was something along the lines of
| familiarity of potential mentors and teachers with the language)
| and the professor seemed to reject her answer out of hand.
| Finally, her advisor stepped in and just dead-panned across the
| room "Because elementary-school students are excited about seeing
| cool things on screen, not about computing the Ackermann
| function." General murmurs of laughter all around.
|
| I think those two professors had an ongoing debate behind the
| scenes that the unfortunate student had just gotten caught in the
| middle of.
|
| (Fiction short story related to this topic:
| http://thecodelesscode.com/applicant/2)
| dfdz wrote:
| > Why? Because none of these chapters answer the most important
| question a reader has, the entire time, WHY!? Why is all this
| important and what problems does it solve? When should I use this
| thing that I learned?
|
| When I was an undergrad taking an advanced class about
| probability theory, I asked my professor for help understanding
| the bigger picture. I could solve each of the problem sets, but I
| couldn't see the bigger the picture. Why the hell are we doing
| this? The professor told me something like "Oh don't worry,
| somethings are just impossible to fully understand the first
| time. Once you take a second and third class that uses these
| ideas the bigger picture will come together"
|
| I have found this mindset to be incredibly true. Rather than
| philosophizing about the optimal way to learn to code (or
| anything) just:
|
| 1. read/take a class about the subject
|
| 2. use the ideas you learned
|
| 3. goto 1
|
| While it seems efficient, I think it can be a very natural way to
| learn and avoid all catch-22 situations
| akihitosan wrote:
| I think it is better to learn concept for those who has a hacker
| mindset. Going through examples is for super users at most, imho.
| godot wrote:
| IMO this was why the early web was so powerful as a way to on-
| ramp new developers. I learned coding a little bit before the
| web, from school materials like writing Pascal programs in DOS,
| in early 90s. Those were fun little exercises for school, but
| that was about it. In the late 90s I got the internet and got
| curious about making web pages, did View Source everywhere and
| taught myself HTML and basic CSS/JS (nothing more advanced than
| alert boxes and such at the time) while in high school, and it
| was what really got me to start my career in software
| engineering.
|
| Building a web site gives you all the "why"s. It gave you a
| motivation to learn different aspects of coding. Whether it's the
| presentation layer in HTML, or application logic in PHP and
| Javascript. Conditions, loops, arrays and even data structures
| all make sense when you have all the context of the thing you're
| trying to build.
| systemvoltage wrote:
| Yeah, I built a bunch of things in Macromedia Flash
| (Actionscript 4.0). It was when I realized that I can tie the
| animation with code. Hell, I didn't even know that it is code.
| It is just some structured text to automate thigns. Mind blown.
|
| I also like: https://handmadehero.org/ series but it was too
| much of a time sink.
| paradaux wrote:
| (Disclaimer: I work as an online Tutor for an Irish EduTech
| company which teaches children ages 8-18 to code via after-school
| and weekend classes.)
|
| This article has the right idea. Our style of teaching varies on
| the kids age. Younger kids (8-11) are treated much like school
| children, the teacher presents a topic, kids are given activities
| to do which they screenshare, then we work through them as a
| class. This is done in Scratch, mostly.
|
| As the kids get older we take a more hands-off approach, we have
| tonnes of exercises which take kids through Java via Processing.
| Learning variables by moving shapes, if statements by adding
| constraints to those moving shapes, collision detection by moving
| the mouse around and watching shapes change color as they
| collide, in the hopes to build their confidence to start building
| their own games.
|
| This is a highly adaptable form of teaching, although it's only
| really possible and practical as we have such small class sizes,
| allowing tutors like me to be able to spend ample time with teach
| student when issues arise.
|
| Younger students often have the enthusiasm, but they don't know
| where to guide it, this lends itself well to a lecture then
| activity format where there's at most a 7-8 minute period of
| "lecture" followed by an equal amount of activity time.
|
| The older kids often don't need the "lecture" part at all, rather
| we set them more and more challenging exercises and explain
| things individually as issues crop up, it allows them to use
| their own problem solving and initiative and we have seen some
| excellent programmers come through because of this (some of whom
| have began working with us as Tutors after they turned 18!)
| 0xbadcafebee wrote:
| Yes! I find all of academia to have the same broken teaching
| method. Connect what you're teaching me to something tangible
| that I can relate to!
| _hao wrote:
| I think people are missing the main point here. It's not about
| problem solving.
|
| From my experience people that are good programmers are people
| that like to tinker with things. The logical part of programming
| can be learned by any intelligent person reasonably fast. It's
| not about variables, statements, expressions, ifs, loops etc.
| It's about having a conversation with the machine and trying
| things out. The tools, languages, frameworks are just extensions
| of this.
|
| Computers and the way they work are fundamentally alien to our
| human way of thinking about things. You need patience and
| dedication. One approach might work for person A, but not for
| person B. At the end with time just like everything else in life
| you forge a meaningful "relationship" where you understand each
| other and can work together with the machine.
___________________________________________________________________
(page generated 2022-01-14 23:00 UTC)