When You Teach Programming to Kids

In this article,  How I taught my kids Python programming,  shares his experience in teaching kids programming and some interesting side effects.  His approach:

  1. Make some animations using Scratch (a simple visual programming language from MIT)
  2. Make  the computer talk (get the kid interested)
  3. Start with a few games

I love his observations on what happens when you try to teach programming to kids.

I’m sure there’s some six year old somewhere who has already made a million dollars selling an iPhone game that they programmed themselves. But to be honest, my kids haven’t started writing any programs of their own.  In fact, I’m not even sure they’re interested in programming!

But my son Cy has gotten obsessed with math concepts like factorial because of this little exercise and more importantly he’s seen that programming is something that anyone can do!

There are several lessons, I can draw from this about teaching programming to kids.

  • Introduce the fun aspects (animation, games, speech)
  • Make programming approachable and give them the feeling that they can do it
  • Use it as a tool to get them interested in other subjects/topics
  • Don’t force it  and observe the outcome

We really don’t want every one to be a programmer (unless they want to). But, we certainly want to show them the joy of creating. IMO, programming is another one of those really good thinking tools.

Do Not Read – Some Advice From Tango With Django

It is kind of funny advice, but when you get past the headline, it makes a lot of sense. From Tango with Django

Do not Read

Whatever you do, do not read this book! It is a hands-on guide to building web applications in Python Django, reading is not doing. To increase the value you gain from this experience, go through and develop the application. When you code up the application, do not just cut and paste the code. Type it in, think about what it does, then read the explanations we have provided to describe what is going on. If you still do not understand, then check out the Django documentation, go to stack overflow, search the web until you have filled this gap in your knowledge.

It is interesting to stumble on this a day after I posted (similar advice) in If you are a student looking for a job

If You Are a Student Interested in a Software Job…

If you are a student and is really interested in a software job,  some actual practice may help. Here are a few things you can do:

  1. Start early – even in the very first year of your college. Just spend a few hours each week.  Pick an easy language to learn like Python or Ruby.
  2. Learn to program  by writing lots of small useful tools, games, apps.
  3. Share your programs with others and ask for feedback. Ask them whether they find it useful.
  4. Share the code on github (it is free) or other repositories.  Post the link on Geek forums and request feedback too (but please don’t spam the groups). Put your github link in your profile, email signature and on your resume.
  5. Don’t get upset if people criticize it. All feedback is good when you are learning. Don’t take it personally. If some one cares enough to look at it and give you comments, that is a good thing.
  6. Once in a while, take all the stuff you have written, factor out common code and create libraries/modules that you can reuse. Go back and change the programs to reuse these libraries.
  7. Repeat 2-6  as many times as you can, every week, every month.
  8. Look at some cool open source projects and join in. Contribute in a small way. Keep exploring.
  9. When you attend tech interviews, tell them about the stuff you have written. Point them to the links. Share the feedback your received  and your journey of learning and iterating.
  10. Don’t worry that if you train in programming language X but the job is for Y that you may not qualify. Except in a few cases, companies are trying to hire smart people with lots of initiative, who are willing to constantly learn and explore.
  11. It may be a good idea to earn while you learn. It is not just the money, but it is the feeling that someone values what you have done enough to pay for it.
  12. Find a master programmer to work with.  How do you know they are masters? Pretty simple. Take a piece of code they have written and read it. It will read like an essay – elegant, beautiful and clear. A couple of years of apprentice with such great programmers will do more to accelerate your learning than any other activity.

Just learning the standard languages they teach you in your institution is not enough. Practice and feel the joy of programming. You will know whether you like it or not.  If you enjoy it, it will show, when you talk to people about it.

I Love The Way Twitter Points Me to…

Twitter is a great tool of information discovery if you learn to do some of the following:

  1. Follow the right people or topics
  2. Create lists focused on your topics of interest – one list for each topic
  3. Find a way to filter out noise (include duplicates)

Most of my reading material comes from following some of the most informed people around me.

I love the way that Twitter points me to interesting stuff and causes me to Google, think about and research things that I might otherwise have not. I read things that resonate with me and I am almost compelled to follow them up.

From Gurteen KnowledgeLog

 

The Law of Requisite Variety

the Law of Requisite Variety. This is a law described by cybernetician Ross Ashby which perfectly describes the creative entrepreneur. Basically, the law says that in any system (company, department, a meeting) all things being equal, the individual with the widest range of responses (the most ideas) will control the system. To me this means that the gift or trick is in promoting plenty of ideas, fast and furiously.

Attribute #94 from  A Complete List of 100 Attributes of People Who Start Companies:How You Can Be One of America’s Entrepreneurs.

We tried an experiment with one of our customers and here is what happened.

  1. I asked all the participants (there were about 14 excluding me) to take 15 minutes and write down as many ideas as they can, for incremental improvement of their product.
  2. At the end of 15 minutes, we had contributions from every one (the lowest number  was 6 and the highest was 68).
  3. We asked each person to read out one idea.
  4. We wrote the idea on a white board and asked others to come up with derivative ideas.
  5. By the time we went through 14 ideas (one from each participant) we had more than 100 ideas.

I was just moderating and found that  every one was totally engaged. It gave us some very good starting points.

The process is quantity first, then quality. Lots of people can sift and sort ideas, criticizing and developing. Your job is to get the most ideas on the table, from you or others.

A Couple of Pieces of Startup Advice

Present your startup idea to anyone who will listen. And even to those who won’t. Startups do not reward security and safety. If you are hesitant about exposing your idea to others, you won’t be able to expose it to prospects, customers and investors. Don’t expect constant support, either. Most people will say something like, “yeah, that sounds good. You should do it.” What you are looking for are those few who ask good questions or who challenge your thinking process and research.

Get really, really good at concisely stating your business idea. A lot of entrepreneurs fail in this area. It is important because you will need to communicate this to prospects, investors and new employees. What I have kept in my mind constantly over the years, is one internal question as I have started expounding on some idea: Later tonight, GL, (what I call myself) what will he say to Hilda about my idea? Or, as a great friend used to say over and over again, “if it is fuzzy in the pulpit, it is really fuzzy in the pews.”

 

This is from  A Complete List of 100 Attributes of People Who Start Companies:How You Can Be One of America’s Entrepreneurs. from an old post Dec 2007.

Meta

I remembered the post but forgot the source. I searched heaven and earth because I did not remember enough to do it properly. I knew that there were lots of Venn diagrams in his blog posts so I searched for Venn diagrams and was rewarded with some other nice articles.  Finally I found it in my own Linklog written in 2009! Somethings are worth searching for, and finding and sharing (again).

Yes. I updated the post and even changed the title a bit. I went from one advice to 2. But there are a cool 98 others worth checking out.

LinkLog: Venn Diagrams and Higher Order Thinking

This is an amazing article worth reading.  I have taken the liberty to take a fragment and give you taste.  A couple of quotes from the article.

The classic Venn diagram, with three circles, was invented by the English philosopher and mathematician John Venn in 1881. His goal was to find symmetrical figures that were elegant and attractive, and he was never satisfied with his attempts to find figures for mapping four, five, and more sets. But a hundred years later, Anthony Edwards, a statistician, geneticist, and evolutionary biologist at Cambridge University, thought of a way to do it.

Here are some rules for using them.

Four rules for using Venn diagrams

To sum up, here are four rules for using Venn (and Venn-like) diagrams to encourage higher-order thinking in your classroom.

  1. Use diagrams for classification, not just comparison.
    By using circles to represent sets and placing the elements within them, you can classify large numbers of things rather than simply comparing two or three.
  2. Draw diagrams to meet your needs.
    Circles don’t have to be the same size, and they don’t have to overlap — you don’t even have to use circles! By drawing custom diagrams for each topic, you can correctly represent relationships among sets or characteristics.
  3. Draw the universal set.
    Draw and label the universal set — the set of everything you might be discussing. That keeps the discussion within reasonable bounds, and makes a place for everything in it.
  4. Scaffold students up to using progressively more complicated diagrams.
    If you work your way up slowly, students will learn to use graphic organizers not simply to keep track of knowledge they’ve already learned, but to push themselves to think about that knowledge in new ways and to learn more.

 

Startup Topics: Growth Hacker Marketing, SAAS Metrics

A series of events led to this post.

First, I finished reading the book on Growth Hacker Marketing by Ryan Holiday . I decided to try a few growth hacks for our products.  The first few were to dig a bit deeper and collect more information understand concepts better and start on some small projects  related to an initial analysis of my company’s customers.

While the book is a great intro to Growth Hacking, Ryan stresses that it is not a set of tools but a ‘mindset’. My second step was to watch this video from Paul Willard on Growth Hacking . Paul talks about lots of experiments he tried, and shares many observations. He talked a lot about Lifetime Value of customers (LTV), the importance of modeling it for future value.  I had a rough idea about LTV, but wanted to learn more. You can find the slides Paul used here.

I stumbled upon Jason Cohen‘s article –  Why I don’t like LTV metric . Here I was, all convinced about Paul’s ideas about LTV, and the very next day I am reading an article that says it is a wrong metric. Jason says that if you make your marketing spend decisions based on a wrong model of LTV, you will be wasting money but explains in another article a revised calculation of LTV.

I think I have enough stuff to get started with a few experiments on my own.

Besides a Great Idea, it Takes…

Here is a great post on 6 Myths and Fallacies about Small Business Startup. One of the myths is that idea is everything .

To make your business work, besides a great idea, you will also need to:

  • Create an effective business plan.
  • Develop marketing that effectively introduces your great idea to the world.
  • Network effectively to create the partnerships necessary to get your product or service off the ground.
  • Handle customer service issues and make improvements as you begin to get feedback.
  • Scale your business and add members to your team as you grow.

Idea is a great starting point and is likely to evolve and get refined as you have more conversations.