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

A few bits that caught my attention and perfectly show why Zed's publications are so good:

> 1. Use just a simple editor like gedit, notepad+, or Textwrangler. NO vim! NO emacs!

> 2. Do not have them use git or other RCS tools. They're here to learn code, not git.

> 3. Make it work for Windows, OSX, and Linux if you can.

> 4. The install of your language should not involve tons of steps.

> 1. Your book should educate people, not indoctrinate them. If you find yourself talking constantly about how awesome your language is and how it will change their life, then you're not educating, you're just making another cult follower. Leave the decision of whether the language is good to the reader.

> 4. Lightly make fun of programmers and inoculate your student against religious wars over syntax, idioms, editors, tools, and anything else that gets in the way of them learning. Remember, you are writing this book for them, not your fellow coder friends.

This should be the mantra for everyone who writes a tutorial (which often land here on HN) or any other form of introduction into technologies. Way too often authors waste a huge chunk of their educational material on shoving their tools of choice down readers' throats. 'hey, you want to learn rails? ok, now buy a mac, install git, learn emacs, download my dotfiles...'.

TLDR: want to educate? be agnostic.

I'm currently writing a book and the pointers are great. Had been having trouble getting good momentum going due to the nature of the topic, but the bit about creating the structure of the book and then filling it in is just golden. I do the same thing with programs, but had not thought that it just applies to writing too.

If you're stuck then I'm finding there two common causes:

1. It's a structure problem, so you have to go back to organizing the concepts and how each chapter flows. Try changing the first lesson as a way to start rethinking this.

2. It's an audience problem, so you have to go figure out who the book is really for and then constantly try to write it for them. Try even changing who it's for and then see if that makes the book work for them.

You are right. After reading this post and following some useful links to your site, I was able to sit down and redo the book structure. It solved my problem and was able to quickly write a nice draft of the first chapter. Very useful wisdom to share, thank you.

2. Do not have them use git or other RCS tools. They're here to learn code, not git.

This is good advice for Zed's LxTHW brand, because those books are geared toward learning one particular language at a time. But in some contexts having an integrated approach can be an advantage. Readers of the Ruby on Rails Tutorial often tell me that they didn't really "get" web development until they saw how Git, GitHub, Heroku, and Rails all fit together. That's because the goal of the book isn't to teach Rails; it's to teach web development with Rails. Unfortunately, this means that some readers are overwhelmed by all the detail (and I may someday make a product to better meet their needs), but for many readers seeing the whole picture is a revelation.

the case is, git, github or heroku are not needed at all for web development. if I was to teach somebody how web dev as a whole works, I would introduce them the concept of source control and web hosting for sure, but not tie them into some specific solutions of my choice. learning technologies (languages, databases, frameworks) is timeless, learning how to use a commercial website popular at the time isn't.

frankly speaking, whenever I drop into a tutorial and it begins with an introduction to github or vim, I leave the page. it's because it shows the author isn't focused on solving my problem which is I am not familiar with some specific technology, he prefers to advertise his favorite tools for some reason and lock me in his way of doing things. just show me what I'm looking for, I will figure out the rest myself if I need it.

git, github or heroku are not needed at all for web development.

You're missing the forest for the trees. While it's true that those particular technologies aren't necessary, professional-grade development does require version control, shareable repositories, and deployment. Git, GitHub, and Heroku are just the solutions I happen to use in the book.

All education is a form of indoctrination. When you teach a kid to read you are indoctrinating them, but you do so with the assumption that if you don't teach them to read they will be worse off. So you indoctrinate them. As we all go through life people are interacting making similar judgement calls based on time, place and circumstance. So indoctrination in that regard is omnipresent and has a good side. Sorry to be off topic but I felt like typing that. I agree that we should fight our shallow inclinations to sensationalize in ways that diffuse "robust" learning.

No, and I'll give you my distinction that separates education from indoctrination:

Education's goal is to teach you something so that you can then go on without them, thus why they teach a wider range of topics within a subject.

Indoctrination's goal is to make you dependent on the educator, thus why they focus on only their version of the subject and squash differing opinions using propaganda tactics.

For example, you don't have to go back to your highschool math teacher to use Algebra or back to your grade school to read something. You are independent and may never set foot in your school ever again, but can still do these things.

If you teach someone that Python is the one true language and use propaganda to make them want to use it, then they'll be dependent on that language and the community in order to write code. Even simpler is if you only teach them git and github then you've indoctrinated them into always needing github to share code.

Bad kinds of education are like History classes that teach fairy tales like "George Washington never told a lie." These are indoctrination masquerading as education because they make the student dependent on the country for their identity.

The reason indoctrination like this is bad in programming though is because programming languages and tools die all the time, and when they do it destroys these people the indoctrinators have made dependent on the technologies. It also smacks of a con that's covering for shit technology that can't survive on its own merits.

Finally, finding a particular topic in the gray area between them does not disprove that there's a difference. Rational people don't think in binary, so this is a continuum where you could find some topics that require a bit of indoctrination, and some where it's the complete wrong approach. In my opinion, programming education only has indoctrination because that lets shitty technology hide behind propaganda.

I agree that everyone should strive for the intent and ideals you're talking about (IE not making people dependent etc) But I still hold to my view in terms of the definitions.I think indoctrination is like social order, to a certain degree it is inescapable and inherently part and parcel to learning anything involving reading and writing. But I complete agree with the ideals you believe we should all strive for and the methodology etc. I do think there is a staunch distinction between the indoctrination of people learning through the state or a church or whatever, and the more interpersonal empathetic methodology of teaching with an intent to facilitate independence. The irony is most staunch ideologues would probably agree, then go off and completely contradict it with their actions :). Around and around we go...

Wikipedia says it in the first paragraph: "(Indoctrination) is often distinguished from education by the fact that the indoctrinated person is expected not to question or critically examine the doctrine they have learned."

Zed is specifically referring to this usage. You should never assume you are doing the Right Thing in programming, because you probably aren't, at best you're doing the "least wrong" thing for your situation.

I still hold that education (insofar as it includes reading and writing) no matter how you cut it is a form of indoctrination. I understand the common sentiment behind the ideal difference and Zed's words, but I also think that no matter what you learn you are expected to a certain degree not to be critical since by default (when learning something new) you usually don't have the slightest idea what to even be critical about at that point. I just think the notion that there is a demarcation between the two is not true.So using your own programming analogy, I think the goal of education should be to strive for "less bad" of an indoctrination.

I'd say education is teaching to ask questions; indoctrination teaching to accept answers.

Totally agree. Even worse is when someone tries to shove another language down your throat in a JavaScript tutorial i.e., CoffeeScript.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact