Hacker News new | past | comments | ask | show | jobs | submit login

Start simple, start small and start with something he's interested in.

There's the part about helping him discover whether he likes to create things through computers and whether he actually believes he can create things through computers. You're spot on that he might be interested about typing code but you'll have to figure out whether he's a visual person, a logical person, etc. For example, I got started learning to code once I understood what code can do to help automate things. A friend of mine got interested after seeing what websites he can build. Everyone is unique so you'll have to learn about him as you're trying to teach.




Good advice. Do you have any tip of how to figure out if he's a visual or logical person, etc.?


One way is to discuss different avenues of software engineering (i.e. web, mobile applications, code that makes things display on screens vs code running in the background that makes things more efficient vs code that helps you predict stock prices, etc.) and see if any of the topics you mention lights him up one way or another?

An alternative way could be to ask him what he likes? When I taught my boss' son, I started off by understanding what interests him - turns out he loved hockey and plays it. So then I went into talking about hockey video games vs hockey statistics.


Thanks! I'll try.


You can learn about a person's internal representation by asking Clean Questions and listening to the metaphors that they share; in order to avoid transferring and inferring your own biased internal representation (MAPS: metaphors, assumptions, paradigms or sensations).

It's worth reading this whole article (and e.g. "Clean Language: Revealing Metaphors and Opening Minds")

https://en.wikipedia.org/wiki/Clean_Language


"Metaphors We Live By" explains conceptual metaphor ("internal representation" w/ Clean Language / Symbolic Modeling) and lists quite a few examples: https://en.wikipedia.org/wiki/Conceptual_metaphor

Our human brains tend to infer Given, When, Then "rules" which we only later reason about in terms of causal relations: https://en.wikipedia.org/wiki/Given-When-Then

It's generally accepted that software is more correct when we start with tests:

Given : When : Then :: Precondition : Command : Postcondition https://wrdrd.github.io/docs/consulting/software-development...

... "Criteria for Success and Test-Driven-Development" https://westurner.github.io/2016/10/18/criteria-for-success-...


I believe it was Feynman who introduced the analogy:

desktop : filing cabinet :: RAM : hard drive

Here's a video: "Richard Feynman Computer Heuristics Lecture" (1985) https://youtu.be/EKWGGDXe5MA

Somewhere in my comments here, I talk about topologically sorting CS concepts; in what little time I spent, I think I suggested "Constructor Theory" (Deutsch 201?) as a first physical principle. https://en.wikipedia.org/wiki/Constructor_theory


> Constructor Theory

https://en.wikipedia.org/wiki/Constructor_theory#Outline

Task, Constructor, Computation Set, Computation Medium, Information Medium, Super information Medium (quantum states)

The filing cabinet and disk storage are information mediums / media.

How is the desktop / filling cabinet metaphor mismatched or limiting?

There may be multiple desktops (RAM/Cache/CPU; Computation mediums): is the problem parallelizable?

Consider a resource scheduling problem: there are multiple rooms, multiple projectors, and multiple speakers. Rooms and projectors cost so much. Presenters could use all of an allotted period of time; or they could take more or less time. Some presentations are logically sequence able (SHOULD/MUST be topologically sorted). Some presentations have a limited amount of time for questions afterward.

Solution: put talks online with an infinite or limited amount of time for asynchronous questions/comments

Solution: in between attending a presentation, also research and share information online (concurrent / asynchronous)

And, like a hash map, make the lookup time for a given resource with a type(s) ~O(1) with URLs (URIs) that don't change. (Big-O notation for computational complexity)

Resource scheduling (SLURM,): https://news.ycombinator.com/item?id=15267146




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: