Live data from Hacker News

Teaching Programming To A Highly Motivated Beginner

cacm.acm.org

21–30 of 42 posts

Re: Teaching Programming To A Highly Motivated Beginner

#21
post #14

I'm currently mentoring someone using a method similar to this -- build steps of a project, be available for questions as they come up. We've covered basic OOP and are moving into more abstract concepts like FSMs. I'm curious about what happens next for someone who has learned to program decently well, but has no traditional formal education. If going back to school is probably not an option for this guy due to other…

I'm also interested in any advice that people have. I'm in the process of teaching myself programming and I try to take in as much guidance and advice as I can.

Re: Teaching Programming To A Highly Motivated Beginner

#22
According to emails I still get for my (yet-to-be revised) Bastards Book of Ruby, this statement rings particularly true:

> Since we finished our final tutoring session in March 2012, I didn't hear from Brian for six months. He recently sent me an email mentioning that he just wrote a Python script to help him model personal stock investments: "I'm very proud of this script because it was the first thing I've done that was both practical and purely for personal use. I was evaluating a stock investment and wanted to simulate a bunch of scenarios. I started to model the scenarios in a spreadsheet before I realized that a spreadsheet wouldn't work, but python was perfect."

Showing how programming is useful for "both practical and purely for personal use" seems to be the surest path for enticing non-professionals...with everything that we have to keep track of in our lives, purely academic pursuits can be tough to stick to.

Re: Teaching Programming To A Highly Motivated Beginner

#23

Earlier quoted context omitted.

I'm curious; what was the first project you built on your own? It's been so long since I started programming that I can't really remember mine. My wife is learning now and I sometimes worry that my gauge of what are good beginner projects is off.

For me it was a system for tracking errors in weather forecasts. I downloaded 400-odd forecasts from the NOAA twice a day and dropped them into a database.* Figured out the following technologies on the fly: Python for the machine learning part, the backend and web scraping (after I finally gave up on SOAP), SQLite, HTML/CSS, PHP (after giving up on Django), Apache web server, FTP protocol (for backing up my stuff to…

Did you set out with the goal to be a programmer when you started? I have a particular project I want to build, but I struggle with the build vs buy dilemma. It will probably take me 5x as long and be 10x worse than if found a good programmer.

But, I also want to learn because I know that I need to understand what is being built and if it's being built in the best way to accomplish the goal - getting the job done for the customer.

Is it realistic to focus on being a generalist with an understanding of various languages or do I just need to learn one language first like Python and go from there? I noticed the MIT Python videos are free also. Thanks

Re: Teaching Programming To A Highly Motivated Beginner

#24
post #15

This may seem silly, but I found the most difficult part of learning RoR was getting my development environment set up. I tried several times since 2005 to get started, but failed due to a sticking point that for some reason I couldn't get past. It wasn't until a friend with a bunch of RoR experience walked me through the setup of the black box of different parts to run a web app that I actually got it. Comparatively…

Yeah, it's a bit of a nightmare at the moment, especially for a beginner.

You might be interested in Yehuda Katz's project, Tokaido.

http://yehudakatz.com/2012/04/13/tokaido-my-hopes-and-dreams...

Re: Teaching Programming To A Highly Motivated Beginner

#25

I am in a similar situation to the author: I am an experienced programmer, and I am tutoring my wife, who left her job so she could devote all her time to learning to code. She's gone through all of the HTML, CSS, and JS CodeAcademy courses, and is now doing the Python course on Udacity. While she hasn't needed a lot of help with those, she has also been working on extracurricular projects that I've helped put togeth…

I'm really enjoying the Coursera course on learning to program https://www.coursera.org/course/interactivepython. They have an interactive python implementation in javascript, so all the exercises are via browser - no configuration required at all. And the exercises are to build games.

Although I'm not building my own projects in the exercises, I am building something that I understand. This week's exercise was Pong and I'm looking forward to Asteroids in week 8.

Making something concrete really helps me understan the concepts.

Re: Teaching Programming To A Highly Motivated Beginner

#26

Earlier quoted context omitted.

For me it was a system for tracking errors in weather forecasts. I downloaded 400-odd forecasts from the NOAA twice a day and dropped them into a database.* Figured out the following technologies on the fly: Python for the machine learning part, the backend and web scraping (after I finally gave up on SOAP), SQLite, HTML/CSS, PHP (after giving up on Django), Apache web server, FTP protocol (for backing up my stuff to…

Did you set out with the goal to be a programmer when you started? I have a particular project I want to build, but I struggle with the build vs buy dilemma. It will probably take me 5x as long and be 10x worse than if found a good programmer. But, I also want to learn because I know that I need to understand what is being built and if it's being built in the best way to accomplish the goal - getting the job done for…

If you want to build something, I think that's an excellent reason to learn Python and dive in. You don't need to become a generalist before you can build something useful which you can learn from. As mentioned in the article, having concrete pain points in your coding ("Why doesn't this work?" or "how can I X?") will help you appreciate the problems that various techniques solve.

Studying other languages exposes you to issues that you might not experience on your own, but on the other hand it's hard to apply your understanding of them all quickly. Python is an excellent language to learn first.

Learn enough of one language to be dangerous, code the minimum that comes close to what you feel you need (or a toy version of it), and then you'll have a much better idea of what else you want to learn. Good luck!

Re: Teaching Programming To A Highly Motivated Beginner

#27
post #20

Earlier quoted context omitted.

Totally agree with your last point. To your first point, I really wish people would make virtual machine images with dev environments already set up on them.

> I really wish people would make virtual machine images with dev environments already set up on them I think this is actually often more of a problem in the long run, as it just pushes the learning of how RoR interfaces with the rest of the stack to later. If you're seeking to teach someone how logic, program control flow, and separation of concerns work (as the author did by abstracting the "grunge work" as he call…

Because the author explicitly wanted "not to waste his time on banal unrelated issues" except those directly related to the project at hand.

He's not missing important concepts but deferring important concepts to learn other important concepts that lead to progress today.

You end up paying back that deficit one step and one layer of abstraction at a time:

    Some of Brian's biggest forward mental leaps came when he took 
    a step back away from the day-to-day project grind, learned new 
    concepts in a course or from a book, and then thought about how to 
    apply them to SwearBuy.

Re: Teaching Programming To A Highly Motivated Beginner

#28
To those looking to start programming, but don't have a tutor nearby: pick up Steve Kochan's "Programming in C" and head on over to http://cs50.net. They have a Google Group set up where David Milan and his aides will answer your questions!

It's how I finally added some structure to my learning adventure.

Re: Teaching Programming To A Highly Motivated Beginner

#29
post #15

This may seem silly, but I found the most difficult part of learning RoR was getting my development environment set up. I tried several times since 2005 to get started, but failed due to a sticking point that for some reason I couldn't get past. It wasn't until a friend with a bunch of RoR experience walked me through the setup of the black box of different parts to run a web app that I actually got it. Comparatively…

One of the great things about growing up in the 80s was that virtually all computers booted into a BASIC interpreter as soon as you flipped the power switch, and presented you with a flashing cursor eagerly awaiting your program input.

Computers don't work like that today. Installation and configuration of various dependencies are a real challenge when learning.

This is especially true when trying to teach kids - we like to think they're all computer geniuses now, but really a lot of kids don't seem to have any idea of how to navigate a file system. They're hooked on installers.

Re: Teaching Programming To A Highly Motivated Beginner

#30
Sadly, new Python-based MIT courses are at least mediocre.

By mere rewriting the code from Scheme to (ugly) Python they lost all the elegance and convenience acquired by decades of evolution of the classic courses and two editions of SICP.)

Watching 6.00CS is boring, when you remember how this very code supposed to look in Scheme.

The old Berkeley's CS61A, which is based on the same great book, was also translated into Python.

For teaching in Python, at the very least, its standard idioms must be carefully selected and used, as it is in the original Python tutorial on the web.

Post reply on HN