× {{alert.msg}} Never ask again
Receive New Tutorials
GET IT FREE

Hour of Code Q&A: How to Introduce More Children and Girls to Programming

– {{showDate(postTime)}}

This article is based on the Hour of Code Office Hours with Naomi Freeman, where she shares her experiences and talks about how to encourage more children and more females to get into coding.

When did you start getting into programming?

I actually first programmed when I was eleven, which was back in the 90s when Neopets (link) were all the rage. I competed with other kids to make more glittery monsters with CSS so I could win fake currency, but I didn’t know that was programming until this tech guy I dated in the past year told me. After wards, we went through my past and I realized I’ve actually used programming skills to build a robot during a grade 11 computer science course and a light-up telescope. However, I went into creative writing and philosophy when I was in university, so I did not code anything, since I was busy leading organizations and organizing campus events during that time. It wasn’t until I’ve been in the workforce for a couple of years that I’ve tried to put pieces together in a hospital. I tried to get automated invitations and make dynamic forms so we could get things done more efficiently, and it turned out I was good at the logic of doing those things, which eventually lead me to become a full-fledged programmer.

What would you recommend kids to learn in order to get started with programming?

I really like Google’s Made with Code, since they always have different projects for kids to work on. I think that’s more important than anything else, since it’s not particularly about learning a particular language but about getting to figure out the logic of programming.

Blockly and Scratch are also really good, because through dragging and dropping components, you’d figure out what a loop is and how it works in a game. This way, those concepts are no longer abstract when you apply them to a project, as you will know what to do if you want to get to the next level.

Primo is also good for kids who are 4~7 years old, since it gives them a block to put coding components into and helps them learn the concepts of programming algorithms.

Additional Learning Resources For Kids: code.org. hopscotch, code combat, Codeacademy’s HTML/CSS course

Should 7th~9th graders start with real programming languages such as JavaScript or game-like resources such as Scratch?

I would stay start with Scratch, since it makes more sense and will act as an entry point to coding. You will figure out what you want to do and how to do it with loops, so you can later on apply the concepts to projects built with languages such as JavaScript. You also can read other people’s projects and collaborate with one another with Scratch, and the experience of working with other people and learning how to talk about things you’re trying to accomplish will help you out in the future.

Since students like to play iOS games and mobile programming, do you think it’s a good idea for them to learn mobile programming first instead of web programming?

Absolutely. The other thing about iOS is you have a GUI in xCode where there’s a storyboard for people to drag and drop components onto. You do need some programming skills to support the app, but there are a lot of things you can do without having to code. In addition to that, you can actually use emoticons as variables. Real computer scientists will freak out if you do that, so I don’t recommend this practice if you’re working on a serious project, but I feel there is a real opportunity in Swift for students. For example, they can take a little ghost emoticon and make it the variable for a ghost that is moving through their game.

Moreover, Swift sort of hides a lot more things that are close to C than Objective-C did, and I also don’t see there is any more challenge for students to learn mobile programming as opposed to web programming. Ruby seems really simple on the surface, but when you get to Ruby on Rails the framework, you’ll realize many senior developers will be constantly pulling things from other languages to the project, such as AJAX and JavaScript. Therefore, in terms of the learning curve, I don’t think it would be more difficult for junior high school students to be learning iOS.

In conclusion, if students want to code games, they should learn JavaScript or iOS, but if they want to build a blog or a photo uploading site, Ruby on Rails would be better for that.

What would you say to encourage more girls to learn how to code?

“You wouldn’t leave it all to boys to match every sock in the world, would you? So why leave the internet all to them?” I said this during a 10 minute session in an auditorium full of 9 year olds through hangout, and it really got the girls going. I think the key is to make coding really applicable, to make it a thing they want to do. Like I said earlier, I was programming before I knew I was doing it because I wanted to put glitter on stuff.

How would you encourage older adults or mid-career women to code?

I think everyone needs to learn how to code because part of the world is connected to programming now, whether you’re getting passes for a plane or buying shoes, as all these activities involve computers at some point. I know it’s a bit more complex for adults because they’re aware of the ideas of gender-empowerment, which makes it more difficult to navigate in the community. However, the only way women are going to be in the space is to get into it. However, for every 2 offensive jerks out there, one guy will be more than happy to answer your questions and pair with you. I personally wouldn’t be a programmer without guys because all my mentors are male.

I’d also like to say that it’s not always true you’ll become a computer engineer in, say 12 weeks, as some bootcamps will sell to you, but it doesn’t mean you can’t become one. I don’t think everyone should give up their career to become a full computer programmer, since there’s a lot of room for people to have programming skills and for them to contribute to their own projects. Overall, I think programming skills will help adults make their own work much better in their industry.

If you could train someone to go from zero to a rails developer in 3-months what would you have them focus on studying?

The simple answer I’ll give you is Treehouse, which costs $25~50 per month depending on what resources you’re accessing. I always recommend Treehouse over any other online learning platform because they contextualize learning, and they teach you how to build the examples they use. In stage one they show you how to set up Ruby on Rails, and in stage 2 they show you some CSS and HTML to set up all the aesthetic pieces. Finally, in stage 3, they teach you Ruby and really take you through an entire web project. This teaching style applies to their iPhone courses and other projects. You earn badges and complete entire learning journeys. They have great forums and they’re always updating their material, which is very useful.

Personally, I used Treehouse as my backup resource when I was in a programming bootcamp 6 days a week and 12 hours a day in a major tech company with a cohort of 20 other people. At the time, nothing made sense in the programming bootcamp to me—it was all abstract, and Treehouse made the material real to me. I don’t know if you’d have the same learning experience if you only learned from Treehouse, but I still think it would give you the most complete sense of things compared to other resources.

What’s the best programming language to learn first? I’ve heard a lot of people say beginners should start with Python.

At the very beginning, you must learn HTML and CSS, but beyond that it really depends on what you’re trying to achieve. I don’t think there is any merit in learning a “simpler” language that isn’t going to move you towards your goal. However, I realized is in some interviews they will ask you about C and Java, so if your goal is to get a job, you probably want to learn those languages even if you’re applying as a Junior Ruby Dev.

Python is simple in terms of being very much like English, and I understand why people recommend it, but personally I’ve gotten by ok without learning Python. That’s why I don’t think there is one right answer for everyone in terms of what language he or she should learn first. This may be frustrating, but it all really depends on what your goal is. In short, use the right tool for the job.

What is a big time waster when learning?

When you feel good about your project and think it’s ready to be published, you’ve probably published it too late. In other words, the biggest time waster in learning is trying to create a Michael Angelo-level masterpiece of an app. I’ve personally made the same mistake before. I spent 8.5 months trying to build this facebook-like app where I was trying to stuff everything I’ve learned into it. When I got stuck in trying to implement push notifications into it, I asked my mentor about it and he told me: “When all you have is a hammer, everything else looks like a nail”. He told me I was not doing myself any favors by trying to put every single component from everything I learned into a single app was not helpful. Instead, I should publish my app as it is and show it as a portfolio project, get some feedback from other devs. Then, I should put whatever other components I had in mind into a completely new app where all I’m thinking about is those components and not about all the other basic things I’ve already learned. What I’m trying to say is that the biggest time waster is to continuously rework your project when you can be simply making lots of little projects instead, which will not only accelerate your learning, but also save you a lot of frustration.

Could you suggest a website CMS for a new developer to showcase their projects?

I’m using SquareSpace right now, but that’s because my goal isn’t to showcase my web projects, but to set it up as a gallery to show off an entire range of things I’ve accomplished before. This includes showing how I’ve organized hackathons, contributed to open source projects, and so on.

However, the industry-standard way is to set up a page on Github.io and use one of the templates to showcase your projects. This way, you can prove you know how to use Github and play with mark-up. I moved away from Github.io because my goal is not so much to show off my skills in programming anymore, but to get a blog launched so I could talk about what I was doing. When I was using Github.io I was getting too caught up with how to customize the website and it distracted me from actually launching a blog.

Furthermore, if you’re using Rails, you can also completely customize your own blog and push it to Heroku. At that point, the possibilities are endless, and you won’t have any liquid markup problems. Instead, you’ll probably be worrying about how to move your databases and configurations to postgres.

Personally, I am not down with WordPress. I would take Drupal over WordPress, and I’m not a fan of Drupal either. I also know About.me now has a backstory page as well, so this can be a potentially good place to showcase your projects. However, I am more of a Github/Heroku sort of person, so I’d recommend those over anything else.

Any resources that might help beginners to coding?

I always advocate about going to hackathons, which will bring you together with a whole bunch of devs and designers for 48~72 hours to intensely collaborate on a project. The experience exposes you to workflows and to learning on the fly, where you will collaborate with and learn from other devs. After all, being a dev is not just about knowing a language, it’s also about being able to pair with and learn from someone.

If there aren’t any hackathons around you, there are some you can contribute to online. You don’t get the same feeling from an offline one, but I have coached a hackathon that was online. Furthermore, Codementor is also always here if you need help with one-on-one coaching, and they also have curated various lists of learning resources.

You can also try meetup and see what they have. Some will be more about talkings, others will be networking, and others will be about actually building stuff. But there are a lot of meetups you can try.

Additional Learning Resources for Adults: Odin Project, CodeSchool, Lynda, Sitepoint, , SkillCrush, Alison’s Web Dev course


Naomi Freeman is a conference speaker and Rails expert with a love of organizing hackathons, where she hopes to propel the culture forward. She founded York University’s Philanthropy Week, was an intern in Journalists for Human Rights, and has also taught various beginners at Rails Girls, hackathons, and online.

Need Naomi’s help? Book a 1-on-1 session!

View Naomi’s Profile
or join us as an expert mentor!



Author
Naomi Freeman
Naomi Freeman
3.7
Expert Rails teacher & dev
Rails dev working a 9-5 in mobile & front-end. I'm solutions-oriented and have a knack for implementing APIs and 3rd party into Rails apps. Happy to help with HTML, CSS and Rails :) Taught a...
Hire the Author

Questions about this tutorial?  Get Live 1:1 help from Programming experts!
Lily R.
Lily R.
5.0
Software Engineer
I'm a Software Engineer at XXX (privacy). I've also worked as a Software Development Engineer at Amazon (Alexa) for 3 years, and I've also done a...
Hire this Expert
Jason Davey
Jason Davey
5.0
Engineer focused on crafting software that brings joy and fosters change
Hello! I have over 15 years of programming experience, and graduated with a first-class degree in computer science from a well-known university in...
Hire this Expert