901 words I've been really interesting in Dan Abramov's Just JavaScript course. The course (so far) takes the approach of treating the rules of JavaScript as natural laws, and a lot of the explanatory effort so far has been about aligning your mental model to those laws (there is a long running idea of the connection between variables and values as 'wires', for example). As it's been introductory so far, it hasn't exposed me to a lot of new thinking, but it has strengthened my understanding of how object properties work. This was not something that tripped me up a lot, but I realized after going through the JJ explanation that it had been weighing on me as I wrote code -- I'd been working around the gaps in my knowledge to an extent and I'd also been actively defending against bugs related to those gaps. So if I wrote code I was unsure about I would save and test it in the middle of writing, versus feeling confident enough to finish out the function I was trying to make. I was surprised how much of a benefit that 'in-world' knowledge of javascript provided. I felt on much surer footing while writing code (even though the new knowledge had very few direct effects on the code I wrote). It was a feeling of comfort, I keep wanting to call the feeling 'being on sure footing'. It wasn't that I could access new places exactly, but I felt a lot more grounded and confident writing the usual stuff, which made writing code a more pleasant experience. It was also like having less drag -- especially as I built a larger app, where accumulated uncertainty kind of weighs you down as you go (some expectation that something is going to break and you're not going to know the reason). So I"ve been enjoying that experience and also thinking a lot about what it means on the meta-level. Because along with that course, most of my thinking about code lately has been focused on learning more about how a computer itself workers. This really got kickstarted with reading _Code: A Hidden History_. The idea behind all that, I think, was that these languages are leaky abstractions, and that the only way to feel on truly solid ground would be to really understand it from the ground up. I'm not done with that approach, but it Just JavaScript is causing me to reassess it a bit. Maybe there is no tension between the two projects, it just depends on what you're doing, but it definitely feels like there's something to be productively explored there. The question is maybe just at what level of abstrac tion do you want to explore things. That seems like the central question for any tool. Closely related to it is what level of primitives do you want to expose to your user (and there is lots of nuance in that, maybe you expose one level of primitives, but there is an escape hatch to let people go even lower-level than that). That is something I want to think about. I want to think about why ithat decision is important, too (what are you ultimately trying to enable)? People to create things (yes)? People to create things where they feel in control (on solid ground) (yes, I think so)? How does this compare to the physical processes people use to create things (like pottery, or paining, where the material has a feel and a resistance to it)? It seems like making a tool is a process of finding the right constraints. The constraints of physical things are so varied (what makes learning painting something people waht to do? learning to play an instrument? Think about the end product versus the feel of the process). That's something I possibly hadn't articulated before: end product versus the process. Painting and playing an instrument have a long learning curve -- I would imagine motivated by the end product (think of what I could make). What do I want to do with a tool? The end product is the carrot, but I want the process to feel good. Are video games the opposite end of the pole (not quite, they're pretty goal-oriented as well). Slowing down, but I will throw in that also, always with this stuff, I am thinking of lego and minecraft. About their phenomenal success, their enduring attraction, and why more things aren't in that realm (why not more games that play to those impulses? Is it that people only have room for a few of those things? There's also the Sim- series of games, I suppose, but still it seems underexplored). What else? Another inspirational part of Just Javascript is that there is still room, giving all the approaches to teaching code, for an approach that (seems) new to me and is effective. It is affirming for my faith in the importance of mental models, and as I think about making my own stuff, and have worries that I'm operating at too basic a level (that all the opportunities for this sort of thing are exhausted) this makes me feel like, no, there's still room, start from the beginning again, don't take things for granted, if something doesn't make sense dig into it more. I should write more about primitives more, I think that level of abstraction you enter into is something I need to think more about.
go to index
by grant
view source