Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Unfinished game – learn by practice (github.com/rezoner)
214 points by rezoner on Oct 6, 2014 | hide | past | favorite | 20 comments


Project's motivation:

Every time I get a new job I am being thrown right into middle of the action. No tutorials, no babysitting - just a real project and a task to complete.

It is a very stressful and frustrating at the beginning - but - after a short while not only I have completed the task - but also have this feeling that in a month of practice I've learned more than in a year of solving theoretical and imaginary problems.

So - I've prepared an unfinished game - and a plot for you as a new employee.

Let me know does it work for you and what was your experience with it. I am a bit nervous as this is the first time I am trying to make something more emotionally engaging than technical documentation.

If you like the idea - I encourage you to copy all of my content - and adopt the stories for a different language. I will gladly link to different solutions.


I love this! I did something similar when a local high school student asked to shadow me for a day. He said he'd never done any programming but really wanted to learn. His parents were currently on welfare and his dad needed him around to help with a disability. I decided that rather than ask him to do mundane webdev tasks, I'd download a PyGame game that I'd been working on, make some changes to break it, and then ask him to work on the game. After the game was fixed, I asked him to look at another game and figure out how to add an audio track. Anyway, he had a fun time and I thought, "I wonder if anyone will ever do this sort of thing on a larger scale." :-) So I'm really happy to see it. Thanks again.


This is great, and it is something we often had to do at university in computer science (at least in the "applied computer science" part). It's nice to see this great way of learning also outside the academic context.


This is a great idea. My suggestion would be to make it into a MOOC. I think it would indeed work much better as a way of learning than a typical programming course, but there are some flaws:

- Normally if you are employed as a junior developer, you're going to get thrown in at the deep end, but you'll also have a bunch of senior developers and/or a mentor who will help you out if you get stuck.

- Different people will need different amounts of hints or hand-holding. For a complete beginner it would be helpful to actually get walked through some solutions (they don't solve anything themselves, just see how it's done) but for someone with a bit more experience that would be counter-productive.

I think the ideal format would be to make each "story" be a story (or use-case) in the agile requirements sense, that students need to implement. Then you can have a collection of hints available for each story, which if revealed will reduce the number of points available for that story.

Students can also confer on the forums, etc., so the more advanced ones can help out the complete beginners. This actually helps both parties learn, so it's not "cheating" (although copying & pasting answers from forums is).

If you want to include grading then peer grading should work, although it can be a bit tricky. For something like this, I would imagine it could just be based on participation only (no certificate). Everyone should end up with a unique implementation of the game as the main output anyway.

Also, ignore the inevitable negativity about JavaScript. For beginner/intermediate level developers this is aimed at (not necessarily just game developers), JavaScript is an ideal choice for a whole host of reasons.

Starting point: http://moocnewsandreviews.com/building-your-own-online-class...


I just tried a few chapters of it, and I think that this is a good idea and it was well executed - to an extent. I'm not the target audience for this exercise because I only have a little experience with programming, but a problem I can see arising is that the user ends up just looking specifically for the errors and paying attention to nothing else (At least that's what happened for me). It also feels like too much of a middle ground between having absolutely no coding knowledge and being completely competent in what you are doing, which I don't think you were going for. The issues were just too simple and easy to fix for the common passerby. Instead of having to change one word to fix the issue, have them write a small snippet of code that you'd have to know from experience. This, I think, would be more effective in teaching the user real world coding knowledge even if they knew what they were doing.

Other than that, I found it extremely satisfying to fix the code and watch it change the game right in front of me. You have a great idea here, it just needs to be refined a bit. Good luck!


Thank you for the feedback. I do agree that this is quite too simple but it's not accidentally. The reason why the tasks are so simple is because at first I want to make passersby confident within the project - that he can touch it and it will work. Show him around, let him see some naming conventions.

One of the upcoming task is to write a module that is meant to be used in two different projects - so you will have to obey some interface but on the other hand the implementation will be up to you and it will have to play well with the game you are making.

Other than that I will introduce explosions and audio to keep user engaged.

What I am trying to say there - is that I have spent more time to plan a learning curve than implementing the project itself :)


This is a fantastic idea and reminds me of how much I learned when asked to complete a "pre-interview" coding test recently. The test covered jQuery, Rails, and Ruby and was quite challenging. For the Rails portion I was giving high-level specs for what the app needed to be able to do, and given an app which had important parts ripped out and a few bugs which had to be fixed just to get it to run. I learned a ton getting the app to run, and then making the app do what it was supposed to. This is a fabulous training/education tool. Nice work and great idea!


I like this idea a lot. A little story makes building a game feel like a game itself :)


This is really cool! I'm going to port this to Rust, although that'll take it out of the browser, but I figured it'd be fun to have a desktop app version :)


this is really cool. i've had a few opportunities to work with kids at schools but i'm usually deterred because building a curriculum is daunting. this would be a great to use.

i also love the tone and language. you gamify the process by putting the programmer into a story. it's the first attempt i've seen at gamifying programming education that didn't feel contrived and soulless. it feels more like Portal than it does Foursquare.


I know I'm nitpicking, but make sure to git ignore your emacs backup files (ending in ~)


Posts without URLs get penalized, so you'd be better off making a post that points to the GitHub page and adding the above text as a comment in the thread. Or we can edit this post to use the url, if you want, and you can add the comment then.


> Or we can edit this post to use the url, if you want, and you can add the comment then.

I would be grateful.


Ok, done. I hope you copied your text :)


I'm curious - why are they penalized?


I think pg mentioned it's so that people don't use HN as a blog. People come here for interesting stories.


I don't know what changed from the beginning of this project to current state, but at first almost every article on first page were really interesting. Now for some time I noticed I am lucky if even one of the posts in first page catches my attention so much that I actually click it. It just seems that at first there were stories that united everyone, that were almost universally interesting to all readers. Now there seems to be very much specialization, where unless you know that specific area of expertise, the story won't be that interesting. This coupled with the fact that interesting stories often lose traction because of comment penalizing makes all "top rated" stories really dull.


Oh, it's JavaScript...


Yeah, but I hope it might be a spark for porting this project to other languages/solutions - a kind of template


Spoon feeding is dangerous for growth i think. Whatever comes easy in our way also affects the improvement.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: