A Hacker Writes a Children's Book
arthur-johnston.com
arthur-johnston.com
Maybe doing more with math (even if at 1+1=2 level), repetitive processes as loops, idea of recursion, idea that a computer cannot compute more than one can do with pencil and paper.. More _universal_ aspects of computation can be really illuminating to kids, I think.
If a child learns the definition of key words, she'll carry the concepts they represent with her forever. Once she know knows "map", "value", and "key", she will own the concepts, Map, Value, and Key.
Definitions give a child the opportunity to learn -- and a parent the opportunity to teach -- valuable concepts that will enrich her world.
If you really really want to impart to them the concept of software, then do that! The phrase "garbage collection" is not important. The idea of a program and that it makes the stuff they see happen on the screen is what is key. @partycoder has the right idea: https://news.ycombinator.com/item?id=15881930
(I work with children and am respected for my ability to teach them sophisticated ideas.)
I am a programmer but I have always been interested in the learning process and mentoring. So in recent year I have conducted some self-study on these topics. Now this is such an immense topic and I have surrendered to my ignorance on so many levels. But, from what I can tell, there is a lot of dogma that we trust blindly, a lot of great old ideas of course (Piaget, Dewey, etc) that have been a great influence but not enough (and simplifying an incredibly complex topic).
Some insights I've had that have made me realize how hard education is getting right (forgive the simplifying, but it needs to fit a HN comment)
* Children have many different ways of understanding and sense-making, but we have a very simplified/dogmatic view of how chilren learn.
* We seem to overemphasize practical activity at the expense of other ways of grasping meaning (e.g abstract thinking)
* We make false assumptions: "The absence of abstraction awarness or articulation of it is a sign that abstractions are not at work in their thinking"
* ...I could go on..
Barely scratching the surface I have realized how little I know. This is such an interesting topic and you can learn a lot studying the pioneers, Piaget, Montessori, etc. but always have a critical eye! More recent literature I can highly recommend the works of Kieran Egan.
Being an educator is incredibly rewarding but I think we as programmers need to be much more humble when approaching the teaching practice..
The final book was very nice. However, business-wise, it's not a good investment. It's a good thing I didn't go into the process with any major ambitions. I haven't checked in a while, but I earn a little less than $1 per sale through Amazon (due to fees and printing costs). Most sales were from friends and family and little else. I tried the Amazon promotions, giveaways on GoodReads, etc. It's very hard to sell as a self-published author, unless you already have a huge following.
The book is still a very nice keepsake and it's nice to give away copies to schools and get positive feedback.
Also care to link to the book?
Sure. It's a rhyming picture book: "My Adventures in Sillyville"- https://www.amazon.com/dp/1512201200/.
I'm guessing internationalised versions are not in the future - apart from "Behavior" are there many other US spellings in it ?
It took me quite a while to realise the picture of the cover was a link to Amazon, but maybe that is just me.
Thanks for letting me know that it was confusing that the picture was a link. I updated the page with a more obvious amazon.com and amazon.co.uk link.
I don't think there are too many US only spellings. Behaviour was the only one my (English) mother commented on...
I just published my second book through CreateSpace, any phasing-out would be news to me, but I'm very curious what you mean. My experience the second time around seemed basically identical to the first—what's getting phased out?
I learned some Adobe inDesign to lay it out myself, generated all the images myself with Python, Sage, Tikz, or just drew them in Inkscape. Then I had it printed at a local print shop. That means there was an initial investment, but once I set the right price I could make a (small) profit by just selling them all. The per-price cost when printing 100 is substantially lower than individual copies.
Another difference for me: I have some connections to the local art scene and was able to sell at several art crawls. I think people found it a refreshing counterpoint to the rest of the art -- something nerdy for the nerdy folks, something they could get for a niece who is excited about math or a cousin who is a math teacher.
Marketing is still the hardest thing, for me as for this author. Facebook word-of-mouth has been the best.
My approach is to start from something they are familiar with, like cooking. You have the ingredients (input), a sequence of ordered steps (algorithm) and the output (the expected result of the recipe).
What if you fry potatoes before you peel them? what if you omitted mentioning that potatoes had to be peeled? what if you use carrots instead of potatoes? what if potatoes are expired? does the potato shape or size matter for your recipe?... and you can continue from there.
That takes you as far as understanding that some instructions cannot be rearranged, that some attributes of the ingredient are important while some others aren't (leading to generalized recipes that accept more ingredient types), that there is a proper level of detail and verbosity, that there are validations that are required for your ingredients, that are best practices to be followed (e.g: washing your hands and your ingredients), etc.
Then, maybe the kid doesn't like cooking. You can try something else, like constructing a house for the dog, etc. Finally, you may want to try an electronics kit like Snap Circuits. I highly recommend it.
This approach in my opinion much better than starting from something like type inheritance and composition, or what a keyboard is... the reason being, the kid can build an intuition around it, experiment with it and even teach it to other kids. Most importantly, this knowledge can be applied directly into programming.
The key however, is to emphasize the concepts that can be translated into programming, otherwise it's just going to be wasted opportunities.
(Just my 2c)
Children are sophisticated learners, and are quite able to understand metaphors & use analogous reasoning to understand new concepts.
I'm sure this took a lot of work, and I applaud the authors for completing and publishing the book. However, in my experience, a product will always take a lot of work, but a good product will take a lot lot lot of work!
But when it comes to teaching, it is important to teach both how to learn, as well as basic concepts to build upon. By teaching the child these words and concepts, they can then expand from there. They can get curious then use their training on "how to learn" to learn more about the topics presented.
To successfully teach a child, you have to do both.
while it's more focussed on using computers to help children learn, I'd recommend Mindstorms by Seymore Papert[0] as a great resource for learning more about how to combine children, technology, and education.
That's a pretty good summation of my experience marketing. I don't know if there is a solution to it though...
I forgot to mention it in the article, but I actually did look into ProductHunt. To keep spam out they have some criteria that you as a user have to meet before submitting something. I had only every been a lurker there so I did not qualify.
Incidentally, this post may prove to be another great channel - imagine this wasn't a post-mortem, but a pre-Kickstarter update on the process & journey of working on the book...of course, making the HN front page these days requires quite a bit of luck.
Making the front page of HN was unexpected. I'll have to update the post once I see how much it improves sales.
Though some may say simpler is needed, it's not that I entirely disagree but I think of the situation of "being young and not 'getting' it" from another angle.
When i was young, if I didn't understand something 100% I sought the answer elsewhere (including more challenging sources or by hands on action). Well... i still do that. I've gotten better at recognizing how to navigate new things of course.
But throughout my life a lot of concepts have and continue to be abstract to me (I am self taught, no college degree) - I don't often need to know the formal description of something to, eventually, connect the dots. (I am sure I'm not alone on that front but won't claim I know how common it is. I am writing this comment casually but any sources on learning and development methods would be appreciated.)
Regardless, my point is, I think these technical concepts could be very useful even if "imperfect", to plant the seeds of ideas and maybe kick start further curiosity. it'd be telling if kids looked back on this book or ones like it and began "correcting" the limericks, or suggesting alternatives like in this thread lol
Even if he just knows that the word "Queuing" is about ordering things it gives him the vocabulary to look up a better explanation.
> Started Marketing too late. I probably should have either started with a Kickstarter, pre-announced the book, or found a publisher. Book marketing is competitive enough that I needed a better plan than I had.
I've done three Kickstarters for comic books. "When your Kickstarter is running" is not the time to build your fan base.
My method was to post pages online for free as I drew them. Once I had enough to be worth publishing in a book, it was time for a Kickstarter for a modest print run. I typically met my goals within the first week, if not in the first weekend, because I'd slowly built my following while drawing the book, instead of once it was all done.
This works well for me, and for a whole ton of other independent comics creators. It would probably work better for someone making an abecdeclarium than for someone making a lengthy, difficult graphic novel about a lesbian robot with Philip K. Dick problems; a short verse with a cute drawing about a nerdy subject is exactly the kind of thing that people love to hit the 'share' button on without prompting.
You do have to be cool with a lot of people seeing your work without ever giving you a single cent for this to work. Just think of it as something like the Red Hat model, where you contribute to the Linux kernel for the benefit of everyone who uses it, and get paid by a far smaller number of users to support it. :)
----
(Of course "get my story about putting together a Programmer ABCs to read to your kids on the front page of Hacker News" ain't a bad piece of promotion either, given how many people are saying "ooh I just ordered it for a kid in my life".)
If I do another children's book I'm definitely using this tactic. Thanks!
Example: Debugging should have "to figure out just // what has gone wrong".
That said I doubt that's much of a bar to sales.
To me it's a novelty book "A Programming ABC" that people (probably non-programmers) would buy as a gift. The artwork is amazing IMO.
As a teaching resource it seems more like a pile of quirky chapter pages that would preceed in depth descriptions.
I wonder if the pages would work as merchandise, or just framed artwork.
I went back and looked at the pictures without the words, and it's actually easier to just see what's going on. A couple of the ideas are simple enough that one picture can give you the idea. But others, like yak shaving and garbage collecting, would need a story line and multiple pictures/pages.
You could make an entire series out of these books! There are many great childrens' series, and you can study them to see how they present stories, what kind of themes they touch on, how the characters interact. If it were me writing them, I would parody every great children's book series with each programmer book. A bernstein bears book, a clifford book, a fraggle rock book, a Dr Seuss book, a Curious George book, etc. Each book could parody a famous series, but tell a story to explain a programming concept. You can do much simpler ones for teaching ABC's but it will best as simple concepts that can be grasped with a picture.
However, when I Googled the term I understood it.
A reader may learn a few software terms but I don't think this book would teach anyone, child or adult, a fundamental understanding of programming; which is what I would look for in a children's book. It also significantly narrows your market to only people who already know how to program.
Other great STEM and computers books for kids:
"A is for Array"
"Lift-the-Flap Computers and Coding"
"Computational Fairy Tales"
"Hello Ruby: Adventures in Coding"
"Python for Kids: A Playful Introduction To Programming"
"Lauren Ipsum: A Story About Computer Science and Other Improbable Things"
"Rosie Revere, Engineer"
"Ada Byron Lovelace and the Thinking Machine"
"HTML for Babies: Volume 1 of Web Design for Babies"
"What Do You Do With a Problem?"
"What Do You Do With an Idea?"
"ABCs of Mathematics", "The Pythagorean Theorem for Babies", "Non-Euclidian Geometry for Babies", "Introductory Calculus for Infants", "ABCs of Physics", "Statistical Physics for Babies", "Netwonian Physics for Babies", "Optical Physics for Babies", "General Relativity for Babies", "Quantum Physics for Babies", "Quantum Information for Babies", "Quantum Entanglement for Babies"
"ELI5": "Explain like I'm five"
Someone should really make a list of these.
I learned to program when I was very young. One thing sticks out to me about the strategy of the first person I learned from. He explained to me just how complicated our actions, as humans, really are. Want to make a PB&J Sandwich? Think about how many micro-steps are involved in that process! Everything from small wrist movements to understanding how to navigate the refrigerator define such an everyday, common task. He then described how we can transpose those types of actions and objects to programs. This quickly led to an understanding of concepts like conditionals and loops for repetitive tasks.
I think that approach is well-suited for children learning to program. Avoid jargon, start with fundamental concepts, connect the concepts to experiences the child understands.
I hope to see more attempts at children's books which stroke the curiosity of the budding programmer.
I am speaking as a dad who went through this. Books are much better for learning to read and learning to like reading, because good books for kids are just fun.
I've been looking for a book like this since I had my first kid three years ago!
Thanks! We wrote the book after searching for a couple weeks for a book like it. I actually ended up writing a list of all the different programming books for babies and toddlers [1].
Hope you like it.