

Unfinished game – learn by practice - rezoner
https://github.com/rezoner/unfinished-asteroids
TL;DR -&gt; https:&#x2F;&#x2F;github.com&#x2F;rezoner&#x2F;unfinished-asteroids<p>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.<p>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&#x27;ve learned more than in a year of solving theoretical and imaginary problems.<p>So - I&#x27;ve prepared an unfinished game - and a plot for you as a new employee.<p>Let me know does it work for you and what was your experience with it.<p>I am a bit nervous as this is the first time I am trying to make something more emotionally engaging than technical documentation.
======
rezoner
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.

~~~
themodelplumber
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.

------
robert_tweed
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...](http://moocnewsandreviews.com/building-your-own-online-class-how-to-
choose-the-mooc-platform/)

------
oxbudy
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!

~~~
rezoner
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 :)

------
laughfactory
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!

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

------
datalus
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 :)

------
catshirt
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.

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

------
dang
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.

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

I would be grateful.

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

------
CmonDev
Oh, it's JavaScript...

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

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

