My not-quite-year of code
I decided about a year ago that it was time to write an educational game to teach math. None of the languages I knew were an optimal choice for this. I’d been programming in SAS for 30 years and it’s an excellent choice for processing the data that come in from pre-tests, student answers and site statistics, but not for writing a game. I’d use FORTRAN, BASIC and even COBOL decades ago but those were totally out. I’d toyed with Ruby some last year, even going so far as to complete a project with it for text analysis. In the end, javascript, jQuery and some related libraries seemed the best choice. At one point, I did talk to a couple of people about writing the code and me doing the game design and data analysis, but that never quite got off the ground. I had a couple of very brief meetings with people who suggested that I come up with an idea and then pay someone in India or eastern Europe sub-minimum wage to code it up. For a long list of reasons, I thought that idea totally sucked.
Let me be clear that we’re not talking about an app you make with Game Salad or some other kit where you are basically shooting things and dropping things. First of all, it needed to align with state standards – that is, the specific skills and concepts that students are supposed to know at a particular grade. Second, we needed to save the data so that we knew how kids were doing, could track that and report back to their teachers and school administration. Third, it had to be fun to play. Fourth, it had to provide instruction to students, so that if they gave the wrong answers, they were routed to APPROPRIATE instruction. Fifth, since the schools were on American Indian reservations, the game had to include the students’ language and culture – which meant things like embedded sound files, accurate renditions of Native American legends and history.
All of those five parts were important.
I started out with Codecademy and perhaps it has gotten much better since I tried it, although given the fact that ten months later, comments on that post reflect similar frustrations, I don’t think so. My main advice is that if you have tried Codecademy and gotten frustrated, don’t give up. I really did give it the old college try. I went through 73 exercises in a week or two and decided my time could be better spent. Your mileage may vary. The next thing I did was get two books, The Essential Guide to HTML5 – which uses game programming to teach javascript – and Javascript: The Definitive Guide.
I took a page from when I wrote my masters thesis back in 1980 – I got up and worked on javascript for two hours first thing every morning. Some mornings I laid in bed and read the definitive guide for two hours. The Rocket Scientist had given me the book and he loved it, describing it as “really easy to read”. I didn’t find it easy (and I have three graduate degrees and years of programming experience) but it was definitely definitive. I’m way past the age of feeling the need to prove I’m smart, so if I didn’t understand part of it, I wasn’t terribly bothered. I read that part again, and sometimes a third time.
The Essential Guide to HTML5 , by Jeanine Meyer, was the opposite of the Definitive Guide in that it did not at all try to explain javascript in a linear fashion. Instead, she starts write in with game programming. I went back and forth between the two books and within a few weeks had bits and pieces of games – a program to roll dice and play craps, a timer, a memory card game, a program to shoot a buffalo with a cannon (why not?), something to move a small Indian hunter avatar around a screen. In retrospect, that is pretty good for a language I didn’t know at all a few weeks before, but at the time it seemed glacial speed because I really wanted to get working on this game and my skills had nowhere near caught up to my ideas.
Although I had written simple games for use in teaching as far back as when I was a student teacher for middle school mathematics in 1985 (I wrote the game in Basic), and done quite a few on-line learning applications, I had never written a large-scale educational game of this type. Enter the USDA Small Business Innovation Research program, which awarded our company $99,000 to develop a prototype.I submitted the grant in February based on the presumption that by the time funding came around in June that I would have learned enough javascript to be able to do it.
It wasn’t just javascript/ jQuery etc. It was also SAS, which was a piece of cake for the data analysis. There was also Dreamweaver, SQL, HTML, iMovie, Graphic Converter and CSS all of which I had been using for years but needed to know a little better. I picked up a book on Dreamweaver at Barnes & Noble and watched a few youtube videos. There was Final Cut Pro (which I DON’T like) that I had to learn and Garageband I hadn’t touched in years that I needed to re-learn. Fortunately, every piece of software out there has multiple communities on the Internet and almost all of them are helpful. The game has 2-D, 3-D and data analysis components. About the time I was getting started, The Rocket Scientist retired and since I really needed another developer and he is the best there is, I convinced him to work with me by a combination of sex, money and the chance to select whatever parts he wanted to work on. He chose the 3-D component. When we were falling behind schedule, we were lucky to get another terrific programmer to step in and write the PHP scripts.
In August, we did a demo of a really rough draft of our game. The beta version was installed in October and had improved so much that our site coordinator on the reservation said,
“Wow! This is great! Now when I tell people how good our game is, I won’t be lying.”
He added,
“No, I’m just kidding. I knew you could do it.”
Version 1.1 shipped out on Thursday. I have made massive progress on the version 2.0 which will be available by the end of November. After all of these days working from 10 a.m. to 2 a.m., I think I should have some profound advice. I will offer this – don’t give up. If you find that “everybody is learning to code with Codecademy” and it just is not doing it for you, the pace is too slow, you don’t give a rat’s ass about making a taxi fare calculator, whatever – then do it a different way. Just about every day, I have to FORCE myself to get up from the computer and go buy groceries, get some exercise, change the guinea pigs’ cage.
I have five meetings scheduled in the next two weeks, two proposals for development funds due in the next four months and a Kickstarter video to finish. My fondest wish is for someone else to take it all over so I can code. Realistically, some of it I cannot delegate to anyone else, and we do have the right person coming on in two months to pick up some of the slack.
So, how has my year of code come out? Pretty phenomenal, I’d say.
I love hearing such positive stories about learning how to program (or how to program something new)! 🙂
Thanks. It was fun. Still is fun.