A Facebook Messenger exchange that might be useful to others … (edited out some of the shocking language!)
Parent 1: D [14 years old] is in Robotics and has to learn Java. Did they mean Java or Javascript? S [11 years old] wants to learn a language. Should it be Java or Python or Swift or something else?
Me: JavaScript and Node.js; Then he can do front end and server side.
Parent 1: [Professional programmer friend] said robots are not programmed in JavaScript.
Me: That will change.
Parent 2: Ok so no Java please. It is a formally much better language. But the simplest programs take pages and pages of code before one can do anything. The APIs are verbose beyond belief. I hate it. It is a language of an Enterprise software architect who doesn’t really code but costs $250,000 a year. Javascript ist truly a piece of s***. Inconsistent and dirty but the kids do not care – they can learn that quickly. There are a lot of good libraries for JS now. So I would agree with Philip that JS is a better choice. Python is probably close second, but no frontend then.
Parent 1: You said JS was s*** but then you said learn it?
Parent 2: I think Java will put him to sleep. And he needs to be able to tinker and experiment fast. You have to consider his age. My kids completed three programming courses in JS in Khan academy this summer. He should be spending as little time as possible on learning syntax. And as much time as possible on f-ing around with his code to learn design patterns so to speak. Like loops, how to find the largest/smallest number in an array using a loop. Without digging in documentation or using Max/min functions to set bounds on a variable that he is changing. JavaScript has an advantage that is has C-like syntax which is similar to that of Java. If he God forbid wants to learn it later.
Parent 1: So JS is s***and Java is worse?
Parent 2: Our general advice here is to learn one high level scripting language (Python or Perl, but everyone hates Perl now and one low level language like C++ or Java. But I just don’t think a teenager has patience to learn Java. I don’t think anyone who respects himself or herself as a programmer should build a career around JavaScript. But everyone has to know it.
Parent 1: Ok. Sounds like S should do python and D should do whatever his teacher says.
Parent 2: Consider courses available. The content and engagement in the course trumps language.
Parent 1: D has already started Java.
Parent 2: Ok, then Godspeed. Look up a hello world application in java. So, teacher what is a class. What does public mean. What is static void. This is seven chapters of a textbook just to say hello world. Including a f-ing array of strings as an argument. And a dot notation. What is System. What is out?
Parent 2: Teachers who start teaching anyone under 18 in Java are either idiots or are teaching a group of ultra-motivated MIT students Also try setting up an IDE and compiling this baby of a program. You will pull your hair out. Once it outputs hello world to console, your normal child will rightfully look at you in disbelief and think “who the f*** wants to do this every day”? Don’t get me wrong. My crawlers are written in Java. But it would be like watching a pornstar do an hour-long **** video, then trying it with your college girlfriend for the first time and wondering why it didn’t go the same way.
Parent 2: (Actually our crawlers are written in Kotlin, which is a script-like language built on top of java (compatible in both directions). The Russians developed it to make Java more bearable and increase the speed of development.)
me: Haskell if he wants to learn about computation, but JavaScript is the real world power due to libraries and APIs.
Parent 2: Perl IS still #1 in terms of libraries. Python and JS are catching up. Kotlin is like Python with Java power (which also has libraries for almost everything). Plus everyone has to know JavaScript. Python is cleaner and more logical, for sure. Their philosophy is anthetical to Perl: there should be only one way to do it. So they spend time fighting which function to keep. This is good for large socialist enterprises where everyone is a cog in the machine. So that mediocre programmers don’t get confused. I started teaching my kids Python and quickly ran out of energy. I then moved to Khan Academy and their JS based courses, which are about programming, and not JS per se. That was quite successful, but the difficulty accelerated very quickly and I needed to be behind them to give hints and challenge them at key junctions.
Parent 1: [another programmer friend] says Java is the new COBOL.\
…
Parent 2: Most computer nerds are wrong when it comes to how to teach programming. It has to be now taught just like mathematics: slowly, painfully, step by step to build foundations. Can’t get to cool or useful s*** quickly without several years of work.
…
Parent 2: in order to make a clone of Tinder you’d need to know: 1. app development for iOS. 2. HTTP server programming, 3. databases, 4. image storage and processing, 5. file I/O, 6. APIs. That’s at least two programming languages. SQL and a bunch of other s***.
Parent 2: One has to keep doing it. My buddy put his 2nd grader in front of Khan Academy and she went all the way to the end of the Javascript track. I asked him to test her after 6 months – she forgot nearly everything. She obviously retained concepts, but that was about it. That’s not surprising because adults are exactly the same way.
Parent 1: The thing is – they remember that they could do it. So it helps them later. I haven’t forgotten C programming because i did it for so many years. But I have forgotten iOS programming.
Full post, including comments