6 ms·
> We build mental models of everything - from how to tie our shoes to the way macro-economic systems work. With these, we make decisions, predictions, and under
by michaelfeathers 12y ago
> We build mental models of everything - from how to tie our shoes to the way macro-economic systems work. With these, we make decisions, predictions, and understand our experiences. If we want computers to be able to compute for us, then we have to accurately extract these models from our heads and record them. Writing Python isn't the fundamental skill we need to teach people. Modeling systems is.
I think he's missing something. Modeling is only a small part of what people learn when they learn to program. The real lesson of programming is to be able to to create models that stand up against the cold asphalt of reality.
They, first of all, have to be consistent enough to execute and secondly, they have to be tested with data.
The hurdle everyone goes through when they learn to program is the unforgiving nature of the machine - it's not what you think you are saying that counts, it's what you are actually saying. And, that's an important lesson.
- ibdknox 12y ago> The real lesson of programming is to be able to to create models that stand up agains the cold asphalt of reality. I would argue that's just a matter of modeling enough to be good at it. I indirectly talk about this in a few places, while discussing how we iteratively craft models and in the section about kids (where I bring up debugging specifically). It's very important to work out assumptions and to be able to explore your models to find out where you've gone wrong. Programming is one way of doing that in terms of the computer, my hope is we'll find better ways of doing it in the future.
- michaelfeathers 12y ago> It's very important to work out assumptions and to be able to explore your models to find out where you've gone wrong. I agree and that's what I was getting at. To me, it's 'programming' when create something that has to be consistent enough for us to be able to explore it with real data. Thought experiments are something we can easily get lost in. We can have interactive environments that we don't see as programming and they can be useful, but the discipline of being able to create those models and know that they are doing what we intend for the reasons we intend - that's programming, and people gain that discipline through environments that make them work for it to some degree.
- collyw 12y agoA lot of junior programmers write shit code because they code and don't bother modelling anything before hand.
- gnaritas 12y ago> The hurdle everyone goes through when they learn to program is the unforgiving nature of the machine - it's not what you think you are saying that counts, it's what you are actually saying. And, that's an important lesson. Spot on, it's also a lesson everyone would benefit from as it makes you learn to think and communicate clearly.
- gfodor 12y agoIt's a good lesson, but it also goes against the grain of how humans operate. A humane computer system will tolerate ambiguity and imprecision better than any modern day programming environment currently does. The trick is giving the human an environment to explore and learn, which can evolve into one that is robust and precise. The act of creation is a back-and-forth, but we are using tools whose roots lie in a model where if you literally sit down and type out the solution into a terminal, that is the idealized model of creation. Imagine a way to create models that is context sensitive to the capabilities and knowledge of the user, both in general and specifically in light of the problem being modelled. Modern day programming is one-size-fits all and forces you to overspecify too many details correctly before you get a working program. (some languages and paradigms more than others)
- gnaritas 12y ago> It's a good lesson, but it also goes against the grain of how humans operate. Which is why they need to learn to think better. > A humane computer system will tolerate ambiguity and imprecision better than any modern day programming environment currently does. I have no interest in such a thing, it's a fantasy.
- deleted 12y ago[deleted]