[HN Gopher] Ask HN: It's 2022. Where should I direct the youths ...
       ___________________________________________________________________
        
       Ask HN: It's 2022. Where should I direct the youths to learn about
       programming?
        
       So... Child #2 (18 yo) is interested in learning programming. Good
       "with computers" and proficient in level-appropriate math but
       didn't grow up as a hacker like his old man (I'll refrain from
       making him learn turtle graphics and BASIC). Where should I point
       the kid to learn the basics?  I'm afraid that if I show him how to
       download (or, better yet, build) emacs, how to build SBCL, install
       SLIME, etc... and hand the kid copies of SICL and PCL someone will
       call child protective services on me. I imagine there was a time
       when the answer would have been java/awt, but those days seem long
       gone. Maybe there was a let's do it all in javascript phase, but
       that doesn't seem to be the answer today.  So... modern starter
       pack? VS Code and Python? Tell him to learn Pandas/SciPy/NumPy?
       Are there any highly recommended online courses for learning this
       stuff?
        
       Author : slyrus
       Score  : 54 points
       Date   : 2022-04-29 19:29 UTC (3 hours ago)
        
       | taurath wrote:
       | > Maybe there was a let's do it all in javascript phase, but that
       | doesn't seem to be the answer today.
       | 
       | Whats the child's actual goal though? Is it to be able to gain a
       | useful workplace skill that will actually provide financial
       | support for their lives (something that their peers who don't end
       | up in tech will struggle with heavily)? If so web dev is honestly
       | a really good path, and quite useful, and will touch on things
       | they already know.
       | 
       | If they're a gamer see if they can make some mods - minecraft is
       | good for it, but the best one is something they're already into.
       | 
       | If they care deeply about some world issue like say climate
       | change, try to have him make some visualizations and do some data
       | science on climate data to understand whats going on.
       | 
       | What you do with coding is imo a bit more important than how you
       | code. Does the kid want to take apart toasters and put them back
       | together again? What actually motivates them?
        
       | osener wrote:
       | The book "Automate the Boring Stuff with Python" [1] and the
       | course with the same name is a pretty good.
       | 
       | It is a practical introduction to programming using the type of
       | projects that got many of us into this field and manages to
       | capture the spirit of what makes writing your first program so
       | special.
       | 
       | [1] https://automatetheboringstuff.com/
        
       | Snowworm wrote:
       | I'd definitely recommend freecodecamp for learning whatever
       | language you'd like to get him started with. After watching one
       | of their tutorial videos, your son could have a look at other
       | videos for the particular language if there's something in
       | particular he'd like to do.
       | 
       | Python is great for beginners, it's usually the first language
       | taught in schools.
       | 
       | Web development is also really easy and rewarding, which makes it
       | a particularly good route to get someone started in programming.
       | Just remember to guide him through JavaScript libraries after
       | learning html, CSS and JavaScript. When I first started learning
       | web dev, I didn't know about frameworks like react and angular
       | which caused me to waste a lot of time rewriting things which
       | could have been made as react components. It was a lot more
       | difficult to maintain the website I already made at that point.
       | 
       | Like you said replying to someone else's comment, game
       | development is good for getting into programming. Although, make
       | sure he is aware of the other routes, as game development isn't
       | always the best career path even though it might sound fun at
       | first.
       | 
       | Finally, let him make choices. You shouldn't have to decide
       | everything for him, it's a good skill as a programmer to be able
       | to look things up yourself. Maybe ask your son to find out what
       | he would prefer to do, although if you already have some
       | experience, of course let him know if there's anything that could
       | help him get started in programming quicker.
       | 
       | Enjoy the rest of your day!
        
       | charcircuit wrote:
       | Google
       | 
       | Starting from there you can learn almost anything for free.
        
       | arturhoo wrote:
       | I highly recommend Processing and The Coding Train [0]. The
       | visual feedback is both engaging and illuminating to folks who
       | have no prior experience with procedures or spreadsheets.
       | 
       | [0] https://youtube.com/c/TheCodingTrain
        
         | duck wrote:
         | Just to add to this great recommendation, https://p5js.org/ (JS
         | port of Processing) is really great as they can get started
         | right away and the docs are super simple. Dan uses it in most
         | of his videos and really starts at a basic level, but works up
         | to really complex concepts as well. My kids are younger, but
         | they like the graphical part of it way more than me showing
         | them the terminal and Ruby.
        
       | wagslane wrote:
       | I've been working on https:/boot.dev in my spare time, trying to
       | go full-time on it soon.
       | 
       | Wont't say it's the best but I've been trying to fix a lot of
       | things I don't like about existing content/platforms.
        
       | ejASIM wrote:
       | so you should go te read about anything in programming also you
       | should ask any question in your mind
        
       | sthu11182 wrote:
       | If he was younger, I would have recommended scratch. I
       | recommended that to my then 11-year old cousin and he is now an
       | engineering undergrad student.
       | 
       | At your son's age, there are plenty of how to program python
       | courses using udemy and the like that show to build progressively
       | harder apps for a complete beginner. From there, he could
       | probably try to do one of those google certificate courses on
       | android development or the like.
       | 
       | I remember having to check out BASIC programming books from the
       | library as a kid to learn. These days, people have made fortunes
       | on creating videos on how to program.
        
         | mattrighetti wrote:
         | > These days, people have made fortunes on creating videos on
         | how to program.
         | 
         | Correct, and it's great! Unfortunately most of them are in
         | English (and probably mandarin?) and not every 11-year old
         | knows it at that age.
         | 
         | I remember the 12-year old me studying English on XDA forums
         | talking about custom ROMs for the good old HTCs. That's what
         | got me into programming and computer science, so many good
         | memories.
        
       | albertzeyer wrote:
       | I usually recommend everyone who wants to learn programming:
       | 
       | - to write some games,
       | 
       | - or alternative to write some tools to be used for themselves to
       | automate or simplify some of their tasks.
       | 
       | Writing games can be so much fun, and is incredibly deep such
       | that you can pretty much touch upon all topics of programming,
       | networking, computer science, algorithms and data structures,
       | artificial intelligence, 3D graphics, GPU programming, low level
       | programming, multi threading, etc. But also, you can start very
       | shallowly and simply.
       | 
       | Writing tools gives you the feeling how useful and productive
       | this can be.
       | 
       | What languages to use depends a bit on taste, background
       | knowledge, and how steep the learning curve can be. I think
       | Python is a good general purpose starting language.
       | 
       | Also, in any case, you should start actively coding right away. I
       | know people who wanted to learn programming but just kept reading
       | books and watching tutorial videos all the time while not really
       | trying it out, and in the end they obviously did never really
       | learn it. You need to have projects, or just random playgrounds.
       | Also, don't start with a big project right away. Do many small
       | projects. Play around.
        
         | tootie wrote:
         | https://24a2.routley.io/
         | 
         | This is the most basic of javascript game engines but also
         | challenges you to be creative.
        
         | TobTobXX wrote:
         | Yes, agree about the last paragraph 100%. I'm only 19 and got
         | into programming maybe 7 years ago. At the time I was gifted a
         | Raspbery Pi. Next to the infamous Scratch, there were about 10
         | pygame examples. I got the itch to modify them. Trough trial
         | and error I somehow found the source files and I just started
         | removing code and changing numbers. At some point I started
         | copying lines I've seen and recomposing them.
         | 
         | As I wasn't allowed to just go on the internet (yet), some time
         | later I also got a CS book. By studying that, I finally was
         | able to "program" what you would call it.
         | 
         | I agree all the way: Don't read about programming. IMHO, taking
         | a (veeery easy, in my case it was Super Simon in ~200L Python)
         | program, game if you wish, and starting to just change stuff
         | around. This gets you comfortable with the concept of coding.
         | "Formal" education (ie. books etc.) are only required once you
         | already are fascinated.
         | 
         | This is the advantage of the young: They are not afraid to try
         | out and break things. I'd suggest using this phase of life as
         | it is intended.
        
         | sefrost wrote:
         | XNA was great for this.
        
           | guilherme-puida wrote:
           | Monogame (https://www.monogame.net/about/) is nice too.
        
         | coderdd wrote:
         | Tic80.com - might overgrow it quickly, but excellent for start.
         | Has Lua, Fennel.
        
           | corysama wrote:
           | Check out https://www.lexaloffle.com/pico-8.php
        
             | cellularmitosis wrote:
             | I'll second the recommendation for PICO-8 to get started
             | with making games. The built-in game browser, combined with
             | being able to easily see the source for those games is
             | fantastic.
             | 
             | https://gist.github.com/cellularmitosis/6e191bf6b6f062e5f55
             | 8...
        
       | logicalmonster wrote:
       | Perhaps looking into some game engine might be a fun thing for a
       | young person? Phaser.io or Love2d or something along those lines.
        
         | slyrus wrote:
         | Yeah, that's a good idea. He's pretty handy with blender and
         | those skills might come in handy here.
        
       | balls187 wrote:
       | Swift Playgrounds is pretty cool.
        
       | giantg2 wrote:
       | I think I'll go against the advice of others here.
       | 
       | I would first start him on some guided C++ projects that
       | illustrate basic syntax, data structures, explain libraries,
       | pointer, how memory works, etc. I wouldn't spend a lot of time
       | here. Some simple but neat console games that also showcase some
       | math coolness (like guess a number between 1-100, then say you
       | can guess it in 7 or fewer guesses).
       | 
       | This is how I learned, and was very helpful in understanding some
       | of the why and how of programming. This gave me a deeper
       | understanding of what was going on when I was introduced to
       | easier languages. It also gave me enough understanding to ask how
       | things worked in the easier languages.
       | 
       | After that brief learning period, then I would put him Python.
       | There are lots of powerful libraries and it's easier to build
       | more advance projects. There is also great support for physical
       | stuff like Pi hats if he wants to so robotics, sensors, etc.
        
       | harikb wrote:
       | I will tag along here - with some details on my experience as
       | well as looking for better answers.
       | 
       | Things like Scratch, Python+Pygames etc make the initial hello-
       | world style apps too easy and then there is a gigantic learning
       | curve for anything better. It is very hard to keep the motivation
       | going.
       | 
       | We tried codehs.com . Kids spend an excruciating amount of time
       | trying to make the print statement's literal output match with
       | whatever the code-checker is expecting. It is frustrating even
       | for me to try to debug their code. I feel any kid who is learning
       | coding without an IDE such as VsCode will get discouraged from
       | this field.
       | 
       | I am just about to start a session for 8th grade graduates to
       | introduce them to 'advent of code'. At least here, the right
       | answer is just a number. No more worrying about the quote
       | character being in unicode or text.
       | 
       | The one that got real interest from my students was a world-
       | puzzle solver - to cheat the phone game "LetterPress" (free on
       | iPhone and Android). They finally understood how a bot (official
       | bot that you play against) could be so smart.
       | 
       | I am still on the lookout for such good examples that they can
       | actually use in real life.
        
       | AnimalMuppet wrote:
       | The thing about BASIC was that you could just _do_ something. You
       | could try things easily and quickly. You could fiddle with
       | things.
       | 
       | Of current environments, Python may come the closest. (Other
       | environments have a REPL, which is a great environment, but "REPL
       | + harsher learning curve" is not what you're looking for.)
        
       | digitallyfree wrote:
       | There's something the "old hackers" know that many CS students
       | don't, and that is actually how a computer operates. Don't spend
       | a lot of time on this unless he's really interested, but it's a
       | good idea to sit down with him for a few hours and teach him what
       | really goes on inside a computer.
       | 
       | I'm talking about the concept of instructions, registers,
       | addressable memory, etc. - with block diagrams, not with full
       | circuits unless he's into that kind of stuff.
       | 
       | Then when he moves onto one of the high level languages that the
       | other commenters are talking about the concepts will naturally
       | stick. E.g. a variable is stored in memory, when we add two
       | variables in the HLL we are copying those values to registers and
       | using an ADD instruction, then we are writing the result back to
       | memory. When there is an IF statement the computer will jump to
       | either block of code depending on the conditional operation.
       | Pointers become intuitive. And so on.
       | 
       | I've explained this to laymen and people who are interested in
       | computers and have gotten a pretty positive reaction from them -
       | so it's worth a shot. To a programmer who generally focuses on
       | HLL it also allows them to get some idea of how their code is
       | executed in the real world under all that abstraction.
        
         | sudosysgen wrote:
         | It's a first year CS assignment in my university to modify the
         | VHDL source of a MIPS CPU to add an instruction as well as to
         | program in assembly. It's not that uncommon either.
        
         | aleksiy123 wrote:
         | What formal CS education doesn't cover how computers work at a
         | low level? It would seem like the opposite. Most self-taught
         | programmers are probably missing foundational knowledge that
         | doesn't directly apply to their day to day.
        
         | sacrosancty wrote:
         | It depends if his motivation is to build something or to learn
         | stuff. Personally, when I was that age, I couldn't care less
         | about learning anything unless it directly helped me achieve my
         | immediate goals of whatever I was building. Turned out that was
         | quite a lot. I learned about registers because I had to to
         | optimize part of a game I was making. I wouldn't have sat down
         | and studied some dry theoretical crap just for the sake of it.
         | Block diagrams were a strong turn-off because you knew there
         | would be no actionable information in them. Why do I care how
         | this unit is connected to that unit? I just want to use the
         | units! I'd naturally infer the structure of things once I was
         | using them.
        
         | beebmam wrote:
         | That's what I learned in CS, along with many other topics.
         | 
         | There's no way in hell I would learn about registers or
         | assembly languages if I was learning about programming in 2022
         | outside of a CS program.
        
       | TheGrkIntrprtr wrote:
       | I took CPSC 110 at UBC with Gregor Kiczales (who worked at Xerox
       | PARC). It was the best course I've ever taken.
       | 
       | The course can also be completed for free:
       | https://www.edx.org/bio/gregor-kiczales
       | 
       | How to code - simple data, and how to code - complex data
       | together make up the material in CPSC 110 (though there are
       | probably some differences). They're completely accessible with no
       | background requirements.
       | 
       | The courses are based on this curriculum, which uses HTDP:
       | https://programbydesign.org/
       | 
       | The programming language used is based on scheme.
        
       | b20000 wrote:
       | why learn programming? also, an 18yo is an adult
        
         | mjochim wrote:
         | Because it's fun. For some, at least. One of several valid
         | answers.
        
         | pjbeam wrote:
         | An 18yo might be a legal adult in the US but I certainly was no
         | adult at 18. I strongly suspect I'm not alone in that.
        
         | bear8642 wrote:
         | To build a solution to a problem you have
        
           | b20000 wrote:
           | probably not the motivation here
        
       | omarhaneef wrote:
       | As many others have pointed out, something relevant like games is
       | a good starting point.
       | 
       | On your main question about how to make the (now painful) dev
       | environment setup easier I have some suggestions:
       | 
       | 1. Just use javascript
       | 
       | 2. Just use python/pygames (yes it has to be installed)
       | 
       | 3. Just use a hosted environment (like replit.com)
       | 
       | 4. Just use swift if you are a mac user
        
       | ilaksh wrote:
       | There is nothing wrong with BASIC or turtle graphics. Those would
       | probably be awesome places to start at least for a few sessions.
       | Google for online turtle graphics or basic or emulators.
       | 
       | The main thing is that he finds something that is interesting and
       | approachable. Build up small achievements. Let him start with
       | simple examples and then figure out how to change colors or the
       | number of iterations in a loop. Don't rush too many things at
       | once. Some things that seem simple like recursion may actually
       | take a bit of time to grasp solidly. Encourage him to be patient
       | and persistent and expect challenges like that.
       | 
       | Don't try to pile on too many things at once.
       | 
       | Dictating which language etc. is not going to help him learn
       | programming.
       | 
       | He needs to be motivated by something and generating his own
       | questions and Google searches.
       | 
       | If he is waiting for you to tell him what to do then your job is
       | to train him to be a proactive learner. Help him find interesting
       | mini projects. Start very simple. But keep trying to build
       | gradually towards something he is really interested in (such as
       | game programming etc.).
       | 
       | No reason it has to be one thing. If you want to hand hold it
       | could be literally 100 different things to play with, show him a
       | different thing every week based on his actual progression and
       | interests.
        
       | bananamerica wrote:
       | I'm not a programmer. I tried Python many times, but honestly the
       | best time I had was in an algorithms class that used C.
        
       | Mikeb85 wrote:
       | Godot (with GDScript). JS + a browser. C++ and an IDE like Gnome
       | Builder or QtCreator. Ruby and Rails. Ruby and command line.
        
       | dgb23 wrote:
       | How you start almost doesn't matter, it's the stuff that happens
       | after, such as actually take the time to answer questions and do
       | stuff together.
       | 
       | After some initial experiments it should be more clear where the
       | journey goes. Some learn better bottom up, meaning few
       | abstractions are suitable. Some like bells and whistles, UI or
       | games. Some like domain specific stuff like math or robotics.
       | 
       | There's plenty to explore. The big realization has to be ,,I can
       | do pretty much anything!" and off they go. Just be there when
       | needed and it's going to be fine.
        
       | redredrobot wrote:
       | Python is a great option because it is high-level, easy to pick
       | up, powerful and has a library for anything they are interested
       | in pursuing. Something like streamlit is cool because you can
       | write a small amount of code to build a useful web app that you
       | can interact with. For data viz related things, Jupyter + Python
       | (maybe Pandas, not SciPy or NumPy unless that sort of math is
       | specifically interesting to them)
       | 
       | Javascript and webdev is also a decent option since you can build
       | such interesting and shareable web apps quickly, but the
       | frameworks and scaffolding can be intimidating and painful.
       | 
       | I would work backwards from a project/interest and pick a high-
       | level language where it's easy to get a good enough solution and
       | create something that feels like an accomplishment. I would want
       | to teach both programming as well as the joy of programming.
        
       | AussieWog93 wrote:
       | >point the kid to
       | 
       | >Tell him to learn
       | 
       | >online courses
       | 
       | You're their mum/dad, no? You know their interests, you know
       | their abilities. This is an amazing opportunity to form a
       | lifelong bond. Sit down with them and work it out together!
        
       | dsowerby wrote:
       | I'm 18 I'd go with game dev It's fun and will teach you basic
       | concepts with instant feedback
       | 
       | Unity is a decent start, and from there I got more into the fun
       | stuff, OpenGL, assembly Lots of tutorials online.
       | 
       | From there you'll have the background to quite easily transfer to
       | whatever area is of interest.
        
       | belkarx wrote:
       | Make him install an easy Linux distro (I recommend LMDE). Give
       | him an IDE (start with VScode, if he enjoys Linux he'll switch to
       | vim/emacs soon enough), some Leetcode problems, a browser, and
       | have him figure it out. Advise him on compiling if his language
       | of choice* requires it, as it's a pain to figure out when you
       | don't know anything about programming. Should probably also find
       | a basic syntax guide on the language.
       | 
       | *This really depends on his goals. AI/general scripting ->
       | python. Sysadmin -> C/Perl. Games -> C#/Java if Minecraft. Etc.
        
       | acqbu wrote:
       | I think CS50 (edx) and Nand2Tetris (coursera) would be great
       | courses to start with. Also, freeCodeCamp has some great
       | introductory courses to Python (computing, data, ML etc) as well
       | as web dev (js, react, html/css and even a bit of node).
        
       | khadgar25 wrote:
       | Perhaps approaching from the point of view of programming as a
       | means to end might be helpful? If they have any hobbies or
       | academic projects that could benefit from automation or using
       | computers, that might be a good starting point?
       | 
       | For example, when I started studying engineering, it was great to
       | see solutions of differential equations and ways to solve them on
       | computers. Others have suggested games which could be great if
       | they enjoy gaming and want to know more behind the scenes.
       | Basically my approach would be to find a problem or two and use
       | programming to show that computers can do wonderful things once
       | we learn how to interact with them in various ways.
        
         | Snowworm wrote:
         | Yes, I completely agree. One thing I'll add as an example; I
         | used programming as a way to learn about mathematical concepts
         | too. I made a program to render an image of the Mandelbrot set,
         | which helped me learn both some new things in JavaScript (what
         | I was using) and mathematics (complex numbers and limits).
         | You'll probably be able to find a similar sort of project for
         | your son.
        
       | SCUSKU wrote:
       | Speaking from own personal experience, I tried to learn
       | programming by buying a book on Ruby on Rails in 9th grade, as
       | well as Visual Basic. Obviously it didn't stick. I programmed
       | turtles in middle school, and took a intro to CS class in high
       | school.
       | 
       | But what really did it for me was buying an Arduino Starter Kit
       | and working through the example projects in that book. I was a
       | freshman in college and $100 was a lot of money for me but I told
       | myself it was an investment in myself, and boy was I right. It
       | was also immensely fun because you get to also interact with a
       | physical object (circuits, buttons, etc) whereas most software is
       | on a screen.
       | 
       | I would highly recommend Arduino or Raspberry Pi :) Best of luck!
        
       | sharemywin wrote:
       | Personally I would start with one of these:
       | 
       | https://bubble.io/how-to-build
       | 
       | or scratch
       | 
       | then build some things. then search on the internet and see if
       | there's any tutorials on how to do it with code.
       | 
       | I think the first step is to think about what he would like to
       | build.
        
         | slyrus wrote:
         | Interesting. I'm scarred from spending years learning how to
         | sharpen axes and shave yaks. Maybe the kids today don't need to
         | do nearly as much of that anymore.
        
           | unityByFreedom wrote:
           | I like Scratch. I'm not sure about Bubble's idea of teaching
           | code _" without a single line of code."_
           | 
           | Eventually you need to write code. Spreadsheets are code, and
           | functional to boot. Everyone can do something in them, and
           | fewer are proficient. It's not that hard to get started
           | coding anything, however it may be hard if you don't know
           | where to start, which is where Scratch comes in handy.
        
       | jonahbenton wrote:
       | 18yo is college/transition age. Are they attending college or
       | continuing with education, or do they need to/are motivated to
       | get a job, and see coding as a means to that end? What to
       | recommend depends entirely on the context.
       | 
       | Agree though- do not under any circumstances introduce/subject
       | them to the toolchain bullshit we have to deal with.
        
       | qualudeheart wrote:
       | Get them a copy of K&R C.
        
       | jay_kyburz wrote:
       | Unity.
       | 
       | It's "cool" and relevant.
       | 
       | The coding part is C# so a nice language and environment.
       | 
       | You don't really need to understand all the low level stuff, you
       | can write some scripts and just press play!
       | 
       | There are heaps of official and community tutorials. API Quite
       | well documented too.
       | 
       | Its not just code. There is a big editor to learn and become good
       | at. Your kids may decided they like other aspects. Modeling,
       | Lighting, Effects, Audio, UI, VR even?
       | 
       | I think there is plenty of Unity employment around, not just in
       | games but all kinds of "multi media" businesses.
       | 
       | Jay
        
       | _tom_ wrote:
       | He might have a look at NAND2tetris and see if that grabs his
       | interest.
       | 
       | Arduinos are also fun.
        
       | Decabytes wrote:
       | If you still want to use a Lisp, consider using Racket. It comes
       | with Drracket, which is an editor for the language which has a
       | repl embedded in it. It has the standard cut, copy, paste
       | shortcuts (though you can use Emacs key bindings in it) and is
       | simple enough not to be overwhelming (like other more robust
       | editors can be)
        
       | adverbly wrote:
       | I'd throw everything at them and see what sticks. Try web,
       | gaming, hardware, ML, puzzles... find a place of passion and grow
       | out from there.
       | 
       | Try to give them a tour of what can be done in each domain, and
       | see what they'd like to try.
        
         | wccrawford wrote:
         | I'd do the opposite. I'd find out which of those things
         | interests them, and then guide them strongly towards a popular
         | solution for it. If they change their mind, that's fine. But
         | too much choice can make it really hard to approach.
        
       | catsarebetter wrote:
       | Do you know what he wants to build?
       | 
       | Probably has lots of different things that he wants to learn so
       | help him explore each.
       | 
       | Python for command line stuff and backend stuff, vanilla JS,
       | html, css for blogs or web pages.
       | 
       | There's also either online classes like Udemy or in person camps
       | or summer programs that would be great, he can meet ppl his own
       | age trying to code too.
       | 
       | I know a few years back iOS coding classes were the rage, now
       | it'll probably be something with blockchain...
       | 
       | In terms of code editor maybe just sublime or atom, no need to go
       | super complicated, he'll figure out what he needs as he builds
       | expertise.
        
         | cinntaile wrote:
         | I agree with the parent that the focus should probably be on
         | something he wants to build or a problem he wants to solve.
         | It's easier to stay motivated that way.
        
       | smiley1437 wrote:
       | Harvard's CS50x (taken through edX) is absolutely amazing as an
       | intro to computer science. Professor David Malan is really
       | engaging.
       | 
       | I cannot recommend it highly enough.
       | 
       | And, if you don't care for the certificate at the end of the
       | course, it's free
        
       | shaunxcode wrote:
       | Dr Racket is easy to install and makes it easy to get pixels on
       | the screen. After that moving on to common lisp or clojure|script
       | is an easy next step.
        
       | Xavdidtheshadow wrote:
       | As another commenter notes, programming with a specific goal in
       | mind is a good way to start. People can't sit down and learn
       | "math", it's too broad a subject. Instead, you sit down and learn
       | how to do a specific task (solve for x in an equation) and build
       | from there. A lot of younger engineers today learned things like
       | HTML/CSS/JS to customize/exploit Neopets and Myspace. It's not
       | that they were interested in programming, they just wanted a
       | result and figured out how to make it happen.
       | 
       | So to that end, I'd probably start with a project-oriented book,
       | or give them tasks that require programming to solve (e.g. tell
       | me the distribution of words in this Shakespeare play. What are
       | the most common ones?).
       | 
       | Editor wise, VSCode is great, but may be too many bells and
       | whistles. Sublime Text may be a better place to start, since
       | it'll do highlighting, formatting, etc without being
       | overwhelming.
       | 
       | Language wise, Python, JS, and Ruby all have ample beginner
       | resources. Depending on what else they're into, JS is probably
       | the most widely useful (since it's on most web pages and the
       | sandbox is built right into the browser).
       | 
       | Good luck! Let us know how it goes!
        
       | downrightmike wrote:
       | Local community college. Hands on help and smaller class sizes.
       | VS code and code runner plugin will run just about everything.
       | Maybe also a subscription to pluralsight or oreilly's online
       | catalog safari.
        
       | guessbest wrote:
       | Rather than making him learn a language to build a simple,
       | possibly tedious tool, let him figure out how the "social" side
       | of the tech sector works by allowing to tool makers to explain
       | the tools. There are lists like this on github. He doesn't have
       | to be a computer hacker to get in to the industry.
       | 
       | https://github.com/bayandin/awesome-awesomeness
       | 
       | https://github.com/sindresorhus/awesome
       | 
       | Also, there is always nocode/lowcode solutions he can put
       | together.
       | 
       | https://github.com/kairichard/awesome-nocode-lowcode
        
       | dmarcos wrote:
       | A-Frame (https://aframe.io/) + glitch
       | (https://glitch.com/~aframe)
       | 
       | Code interactive 3D apps / VR / AR starting with HTML and dive
       | into the entity / component API as you progress. Super rewarding
       | to get something visual than can be shared with an URL to show
       | off or ask for help.
       | 
       | With glitch one can start coding right away with zero tooling to
       | install no account required. Glitch doesn't hide details and
       | knowledge transfers directly if one wants to start developing
       | locally.
       | 
       | I recommend also the A-Frame docs as learning material:
       | 
       | https://aframe.io/docs/1.3.0/introduction/
       | 
       | I help maintain A-Frame and seen plenty of success with people
       | learning how to code while having fun. Also advanced capabilities
       | available as you learn. Very accessible but not just a toy.
       | 
       | Very welcoming community.
       | 
       | edit: typos
        
       | adamredwoods wrote:
       | My son started with Scratch.
       | 
       | https://scratch.mit.edu/
       | 
       | Why Scratch? It has assets available immediately, it's simple to
       | draw and import images, and has a built-in audio editor.
        
       | exdsq wrote:
       | I'd suggest picking something relevant to the things he's already
       | interested in like modding video games. Obviously this is
       | personal to us all but I learn best building things, and I'm most
       | likely to stick to building things I'm interested in.
       | 
       | SICP is great for those who want to learn more about programming
       | _after_ they have some experience programming. If someone gave me
       | that book as my first one I think I 'd have picked a different
       | career field, even though I am now - 8 years later - working
       | through it :)
        
       | tayo42 wrote:
       | Just use Javascript and make some games with canvas or something.
       | It's pretty fun, you can iterate fast and web based things are
       | easy to share so your kid can show all their friends their cool
       | stuff. Then if you need to torture your self you can learn how to
       | serve websites with Linux and web servers
        
       | pcdoodle wrote:
       | Xojo is a nice modern IDE that is very close to Visual Basic 6.
       | It runs on Win/Mac/Linux. Something about being able to place
       | buttons, canvas, etc and write code directly into them and
       | hitting play, makes it more engaging.
        
       ___________________________________________________________________
       (page generated 2022-04-29 23:01 UTC)