As part of the future of coding, one of the things...
# thinking-together
o
As part of the future of coding, one of the things we should think about is making learning how to code easier and more effective. Anyone have thoughts on how this could be like in the future? I have been doing the executeprogram.com and I find it pretty effective, definitely more effective than books (books are my primary way to learn, find it hard to concentrate with online lectures). It’s great because the lessons are bite sized, spaced repeated so I’m not stressed about remembering, requires you to write code and be active etc. Any one tried other approaches that worked really well? How would this be different in 10 years? Or what would a vision of the future look like?
r
I think about this a lot! There's a lot of folks in this community making better tools, but less focus on making better users-of-tools. A tough part of this is that learning isn't a domain that technology alone can solve. Learning is social, so improvements will involve people and organizations.
o
Yeah, definitely not just tech but tech can help with gathering data figuring out what’s effective etc. Also reminds me of this -

https://youtu.be/uEFrE6cgVNY?t=1229

. Perhaps more gathering of evidence of what works for learning to code and perhaps systems that are personalised and know about you in particular etc and perhaps even the design of languages in the first place to make them easier to learn
💯 1
k
"design of languages in the first place to make them easier to learn" is the crux of it. Forgetting that leads us to the false dichotomy of "making tools" vs "making users of tools". There's no such dichotomy, because there are no tools without users. What we have today are tools that everybody uses that are unnecessarily hard to learn, tools that are easy to learn but less powerful (dumbed down), and tools that try to be easy to learn but nobody uses. As a learner, it's sometimes worth learning a tool that's easy to learn even if nobody uses it. Because it can give you something more timeless than just the incantation needed to perform some task. Some concept or some way of thinking. I tried to list a few important ones above (https://futureofcoding.slack.com/archives/C5T9GPWFL/p1593722002162200)
❤️ 1
o
Reminds me of this I found yesterday. So much easier to read even though it’s verbose. That’s a design thing - shouldn’t just be optimising for brevity or shortcuts when it makes things harder to learn and grasp - https://tonsky.me/blog/dsl/
k
Indeed. I get polarizing comments on the names I choose in Mu. For example, see http://akkartik.github.io/mu/html/apps/tile.mu.html. Some people say the commands are too long to type. Others love that they can tell what the commands do without having to spend a lot of time with my project.
👍 2
o
It’s also the same thing with stuff like operators in Haskell - how do you pronounce this ‘@&£’ operator (I made it up btw)? Sure it is brief but it’s three characters in my head and doesn’t have a real name(I am convinced with Haskell it should be possible to give operators aliases, funny thing is ‘>>=‘ is ‘bind’. Being able to pronounce things is vital for chunking I think. Again, wish we had a more data driven approach to these questions.
💯 3
👍 3
k
Indeed! Pronunciation is key, and picking up how to say something often requires being inside a community. That's one reason I tend to be skeptical of visual programming. We all use language to reason, and if it's not obvious how a construct translates to language, that can be accidentally excluding.
💯 4
o
Tbh, skeptical too for that reason. Visual programming seems ideal for figuring out stuff in the large (so visual documentation perhaps?) even then probably doesn’t help if you have a huge ball of spaghetti.
👍 1
g
i think an analogy might be that visual programming systems ought be very legible in gif form or similar—there are a few indie games that have gotten really big just because the developers were able to make really compelling gifs that went viral. communicability is really important but i’m not sure spoken language is the only route (although the haskell situation seems like the worst of both worlds)
🍻 1
👍 3
o
Definitely don’t think text is sufficient or good enough on its own. Just that it can be the foundation and other mediums augment it - when I hear Visual Programming sounds like the visuals are the main thing
s
Something I think about a lot is how we can increase software literacy, and I don't know if "learning how to code" is actually what we mostly want. Both my parents and my grandmother learned to code in the 80s, but only one of them is even approaching software literate. People need to be given an understanding of what computers are and what they are capable of, probably through integrating some automation or similar into their ordinary workflows. Advanced spreadsheets you use every day will inform your ability to understand that software exists and can be built and combined and changed a lot more than knowing how to write basic code that you never actually do in real life. I fear that far from building the LOGO or etoys-inspired "computer culture" of Mindstorms we are instead teaching elementary students JS in the same way that the 80s taught highschool students BASIC -- and then none of them actually got any use out of it in their real lives
👍 2
k
That's a high bar. I think nobody is software literate today. Someone literate in english can read any individual paragraph in english and answer some simple comprehension questions about it. And students learn to read two books and compare and contrast features of their prose. Most people don't write novels, but many people can read novels and talk about them with each other. Can anybody do that today with software they didn't write? Even software they wrote a year or two ago? Substitute 'software' with 'spreadsheet' to taste. I sure can't claim anything like it. Any time I try to read somebody else's novel-length code I have to spend weeks to understand what it does. I imagine people from a thousand years ago may have felt the same way, laboriously reading a tablet character by character, tongue sticking out, trying to figure out where the word boundaries are, reading a line over and over again until the meaning sinks in.
4
r
@Garth Goldwater "i think an analogy might be that visual programming systems ought be very legible in gif form or similar—there are a few indie games that have gotten really big just because the developers were able to make really compelling gifs that went viral." Forgive me if I'm reading too much into your response. I don't love this analogy. I think it misses a lot of the subtle issues here. It's important to realize that different methods of communication have a "knowledge bandwidth". Those viral gifs all communicated ideas that "could fit in a gif" so to speak. Your comment implies that we just need to find some better way of making an image that communicates the ideas better, but I suspect representing code might fundamentally be an idea that doesn't "fit on a gif". And that's not necessarily a bad thing! It just means we have to find other ways to communicate those ideas. For the same reason, we didn't just stop writing books after we invented cinema. Different ideas work better in different mediums.
g
damn @Kartik Agaram that really hits home. remembering a few historical figures now who were renowned for their ability to read without speaking—and also that multiplication and division were basically magic or rocket science before arabic numerals.
👍 1
@Ray Imber no disagreement there—I don’t think the gif is the universal form of visual communication or anything (just an example)—but I do think that it’s not surprising that some ideas fit differently in different media. I don’t think I’d be super successful at learning to throw a ball by reading a textbook. I’m just suspicious that “stuff that’s hard to describe with speech” means non-transmissible, unlearnable, simple, or unsophisticated
👍 1
r
@Garth Goldwater Definitely. I believe the future is a hybrid. Text is an important part, but with lots of visual aids (or audio or tactile aids even). "Stuff that's hard to describe with speech" reminds me of the concept of "tacit knowledge": https://commoncog.com/blog/tacit-knowledge-is-a-real-thing/
👍 3
❤️ 1
o
@Ray Imber thanks for that article!
😄 1
x
Duolingo for programming languages: https://getmimo.com/ My wife told me about this (she choose to start with Python). It's an interesting approach. Some people really do well with Duolingo (e.g. my wife has a 1000+ day streak). I was watching her do a lesson and it was quite well structured. The questions were set up to test common beginner mistakes. What I thought was nice about that is that if you get it wrong, the app can tell you exactly why you got it wrong (since they know exactly what bit of understanding they were testing, and control the answer space). If you made the same mistake in e.g. a REPL, the error message might not be as informative.
❤️ 1
👍 1
o
Very interesting discussions and links (thanks @Ray Imber for the Tacit Knowledge article)! 🙂
I agree part the future of coding should think about making learning easier. That is why I like Vue.js and the way this framework is designed with an objective to be easy to learn. The features are very focused, you don't have to use all of them to start being efficient and the documentation is of very high quality (with some decent effort to translate it), one that you can read like a novel (which I did before writing a line of code).
👍 1
o
@Xandor Schiefer thanks for that link! It’s precisely the direction we should heading towards. Imagine, if the results from a large number of students also fed back to language designers so they could make better decisions up front + perhaps trial new features and figure out if they were easy to learn - need to be careful - something might be hard to learn because it’s not taught properly too but sometimes the construct is complicated and perhaps there is a less complicated alternative
👍 1
g
i have such a strong wish that documentation had built-in annotations and questions for that exact reason @opeispo so that students could put their confusion in the docs directly
1
o
Was reading the summary of this book and it’s really good - https://commoncog.com/blog/teaching-tech-together/
❤️ 2
And @Ray Imber I think you were the first to intro me to the common place blog with the link you posted in the thread above. Really really good blog. Thanks!
❤️ 1
k
I just received a copy ❤️
❤️ 1
o
@Nick Smith thanks for this link!

https://youtu.be/CgR5mSAGxtA

. Posting here cos it’s super relevant to this thread
👍 1
n
@opeispo No worries. I probably wouldn't pollute the main channel with this link though (unless you want to post it to #C5U3SEW6A). Perhaps re-post it just in this thread?
o
Don’t think there is any way to undo the sending to the channel. I wanted it called out since whoever that was on this thread would definitely be interested in this too.
n
Delete and re-post should do it. It's definitely right for this thread, but not for the main #C5T9GPWFL feed. (People on the thread get a notification, so will still see it).
o
For next time? I don’t think it’s that big a deal.
n
Sure.
i
Removed :)
👍 1
(OT: @gman Also posted another version of that same talk recently. Fun coincidence.)
1
g
❤️ 2
💯 1
🍰 1
👍 1