Getting Kids Into Programming

While on Twitter yesterday, The Linux Foundation tweeted a link to this VentureBeat article on why your 8-year-old should be coding.  Being a programmer and now a mom, I have to question 8 years old as the right spot.  For me, especially watching my son tinker with things at 1, I’d love to teach him programming earlier.  Apparently I’m not the only one who questions this – from what I remember, the young boy who co-authored Hello World! Computer Programming for Kids and Other Beginners was younger than 8 when he helped his dad with that book.  Teaching programming to children has always fascinated me.  As someone who loves translating tech into simple English analogies for non-techies to understand us, this area really intrigues me.  So I’m dedicating this blog post to all of the children in my life – my son, nephew, niece, goddaughter, and other family and friends’ children – who may one day be programming alongside me.  These are some resources – in addition to the book I just mentioned – that can help teach programming to kids.

Tynker

This is the programming product featured in the VentureBeat article.  You can learn more about Tynker at: http://www.tynker.com/  Tynker was inspired by Scratch.

Scratch

Scratch started out as a research project at MIT, funded by the National Science Foundation.  It allows for young people to create interactive stories, animations, games, music, and art.  It also allows them to share their creations online.  You can find more about Scratch at: http://scratch.mit.edu/

Logo

I remember watching one of my shows as a kid – Sesame Street, 3-2-1 Contact, The Electric Company…. one of those shows – and seeing a video of a kid playing with the Logo programming language.  What I remember was a monochrome (green on black) screen and a triangle (called a “turtle”) moving around the screen.  It was a simple language that taught children how to move the turtle around.  So imagine my surprise when doing a search for Logo and finding a modern version!  Someone apparently remembered Logo as well, and they’ve created Turtle Logo, a logo simulator in Silverlight. Check it out at: http://logo.codeplex.com/   You can read more about the history of Logo here: http://en.wikipedia.org/wiki/Logo_(programming_language)

Squeak

Seeing screenshots of Tynker and Scratch, I’m reminded of a language I presented to the Toledo Area Linux Users Group back in 1999 – Squeak!  I first heard about Squeak at OOPSLA ’99, and to see a Smalltalk-based language – heck, any language! –  to teach kids about programming just really got me excited.  Upon further investigation, Scratch is indeed based upon Squeak – so that reminder was no coincidence!    You can read more about Squeak at: http://squeak.org/

But wait… what about… ?

Yes, this is just a scratch on the surface (no pun intended).  There’s also Alice, Kodu, Small Basic… the online awesomeness of the web has compiled a list of educational programming languages on Wikipedia.  Whatever the language or paradigm, this list offers options for various approaches for teaching programming to kids.

Conclusion

There are so many tools out there to teach kids about programming. Keep in mind that many of these products are FREE – so the costs associated with teaching these kids are tied more towards hardware and time spent teaching.   If you’re a programmer and want to share your passion with children, hopefully this blog post will inspire you to pick a language to share with the children around you.  As for me, I look forward to finding the right language to teach my little boy about programming when he’s a little older, but it’ll most likely be well before 8 years old.

.NET Study Group – Preparing for Exam 70-480

In case you haven’t heard, there are a group of us who are meeting online on Wednesday nights from 9:00-10:30pm EDT to go through the HTML5 & CSS3 JumpStart program in preparation for Exam 70-480: Programming in HTML5 with JavaScript & CSS3.

This week, Vikas Loomba led the discussion on HTML5’s Semantic Structure.  He covered a bit of what was in the Channel 9 videos and also showed some examples from the CodeShow sample on Codeplex.

Next week, I will be leading the discussion on CSS Selectors and Style Properties.  We will look at some of the things covered in the Channel 9 videos, and I will also have links to other resources on this particular topic.  Here are the Channel 9 videos to watch:

If you’re interested in joining our study group, check out our Meetup.com group!  Hope to see some of you in the chat session next Wednesday!

The Productive Desktop

After spending the past month dealing with personal things – new niece, nephew’s birthday, Easter, and my son’s 1st birthday, I’m back.  I’ve transitioned off of a client, and I’m now working from home on another client’s project.  I’ve found what it takes for me to get into the productivity zone, and I’m curious to learn what works for you.

Environment

Typically, I find myself most productive at home.  I can work in my home office and stay focused on a project with Pandora as background noise.  I find it hard to work at a coffee shop or elsewhere because I run the risk of running into someone I know and getting way too distracted.  However, if I’m working with a partner on a project, then I’m at a coffee shop or elsewhere, as it’s nice to get away from my house and if I’m working with someone, there’s a lesser chance of someone distracting me if I’m engaged in working.

Breaks

I have to take breaks every now and then just to keep myself from burning out.  Breaks usually translate into writing a blog post – like now, working on laundry, going outside for a walk, eating lunch, or tending to phone calls.

Apps Setup

I work best with dual monitors or at least 1 monitor and a laptop.  Today’s configuration is a monitor hooked up to my Lenovo IdeaPad Yoga 13.  I have my Balsamiq mockup of my client’s work – that I created yesterday – on the right.  On the left, I’m alternating between SQL Server Management Studio and Visual Studio 2012.  The client’s project is greenfield, which means I’m building my database off of my mockups and then building the code once the data is in place.

Approach

When I’m working on any project – greenfield or otherwise, I like having my mockups in one screen and my tools in the other.  For me, I’m a very visual developer – I like seeing where I’m going and then developing towards that vision.  If you’ve worked with me in the past, you know that I like to draw app concepts out – I’m known to draw my forms out on paper first.  Balsamiq on a touchscreen will probably help phase me out of the “paper and pencil method” since it has a lot of what I need.  But I still draw out my apps.

On a greenfield project, I mock up the UI first.  I’m more of a front end developer than a service layer monkey (and I mean that lovingly).  And while I like Super Mario Brothers, I don’t like plumbing, so you won’t see me getting excited about projects with a lot of back end development.  Once I get my UI done, then I build my database.  Because I see the world in patterns and data, it’s easy for me to build my database tables and relationships based off of UI mockups.  Once I’m certain of how the data needs to be stored and how it’ll get in there, then I build the guts of the system, making the mockup come to life.

On brownfield projects, when I’m working on my own, I try to get UI screenshots so that I understand what I’m working with.  At that point, once I have that understanding, then I look at the database and hope that it’s somewhat near what I had envisioned.  However, if it’s like some projects I’ve encountered, the database may be a lot worse than I envisioned, which then causes me to come up with a new way of working with the existing database or a plan to migrate the old data into a new database.  Once the data situation is checked out, then I get into the code.

Conclusion

This turns out to be the recipe for me to be the most productive.  However, different people find different approaches work for them.  So I have to wonder… do you have a different approach to things?  Care to share your approach?  Blog about it and leave a link here in the comments!  I look forward to hearing about your approach!