Why schools should be like video games | Part 2

Why schools should be like video games | Part 2

Why schools should be like video games

Welcome to Part 2 of our series on how games can be used in education. Last week we talked about how games can free us from a fear of failure and make homework a learning opportunity rather than just an assessment by giving students the instantaneous feedback they need to freely discover and explore. This week, we’re going to talk about what that instantaneous feedback does for teachers and how games can help us give each student the lessons they need.

One of the biggest problems with schooling is that classrooms are simply too big to give each student the personalized attention they need. This is true of almost all modern classrooms, not just the overcrowded 60-person classes we sometimes think of when people talk about our educational crisis. Now, many of you who are watching this are probably much better, more experienced teachers than James but when he talks about it, he feels pretty strongly that it’s very hard to give 100% to more than 10, maybe 12 students at a time. Any more than that, and it gets difficult to understand where each student is struggling and to craft lessons for each of them on a personalized basis. Yet, this is what games let us do.

You see, one of the great struggles in trying to educate a nation whose population numbers in the hundreds of millions is that we have to create a standard curriculum for everyone. This is in many ways fantastic. It helps ensure that all schools are teaching up to a baseline level. It allows teachers to share ideas about curriculum nationwide. It creates a standard set of knowledge that colleges and universities can then build from, but it’s not right for everyone.

“They can allow us to serve the needs of each and every school child individually rather than having to hope that our universal standard works for them.”
In fact, you can pretty much guarantee that it’s not perfectly right for anyone, and this is especially important in education as often when you hear someone say something like, “I’m not good at math.” It’s not that they aren’t good at math but rather that at some point in their education, some part of the curriculum didn’t make sense to them and they got left behind. That small gap in their understanding just compounding over time as the class had to move ahead.

This problem could, of course, be corrected if teachers had both the information they needed to identify where each student was struggling, and the ability to tailor their assignments to each individual student’s needs. Clearly, that’s ludicrous in the context of modern schooling. No teacher will ever have time in the classroom to make specialized assignments for each student, and often they don’t even have the data they need to pinpoint what tiny sub-concept a student is struggling with.

Not so with games. Think about games as they stand today. Think about how many metrics games already take. We know wherever you click. We know how long you stood waiting to make a jump or how many people died on that one ledge. We can take in vast amounts of data and if we want, dynamically alter the experience based on that data. At the simplest level, we’ve all played games whether or not we realized it at the time, where they adjusted the difficulty on the fly based on our performance.

On the slightly more sophisticated level, we have things like the director in “Left 4 Dead.” Now think about using that for education. Imagine a child going home each night and the game being able to feedback massive amounts of data to their teacher, automatically calling out anywhere the child is struggling or highlighting places where they excel. Imagine it doing more than that. Imagine the game they play actually choosing challenges for the child based on this data. Imagine one child being assigned something that helps shore up their understanding of cross-cancelling fractions while another gets a little more time focusing on the order of operations.

Imagine the game actually being able to send the child through micro-tutorials on that subject if changing the play by itself wasn’t enough. Finally, imagine the game being able to put a special flag on the assignment so it immediately got noticed by the teacher if the systems within the game weren’t enough to help the student through whatever they might be struggling with. Games could automatically tailor assignments for us based on our needs without overburdening teachers who are already stretched to the limit, and it could give teachers so many more tools to understand where their charges may have misunderstood a lesson or missed a fundamental concept.

This may sound wild, like it would take an incredibly extensive games system, and it would but nothing beyond what we’re already capable of. In fact, when you consider that every student in America would be playing the thing, immediately making it the most played game of all time, producing a game like this suddenly sounds incredibly economically efficient. When we stop thinking on the scale of entertainment and start considering the size of the public school system, an endeavor like this, while by no means trivial, becomes completely reasonable. It would take a great deal of time and effort. It would require an incredible amount of work with teachers and subject matter experts, and even when, would probably need some trial-and-error before we got it right, but it’s no means outside what we’re already capable of.

When someone asks you why we should have games in school, beyond making them more engaging, you can tell your interlocutor that games allow us to provide teachers with incredible amounts of data to work with to better understand the learning needs of the children in their care, and that games, if we were willing to push for doing it, could allow us to automatically adjust assignments on the fly. They can allow us to serve the needs of each and every school child individually rather than having to hope that our universal standard works for them.

Why schools should be like video games | part 1

Why schools should be like video games | part 1

Why schools should be like video games | part 1

Over the coming weeks, we’re going to be touching on 4 concrete problems that educators face, problems which have come up time and again during James’ year with Games For Good. The first of these problems is the fear of failure. Right now much of the way our educational system is set up inculcates a fear of failure. It teaches you of being afraid of being wrong rather than seeing your mistakes as an opportunity to improve. This does not prepare us for the 21st century. Homework is the quintessential example of this. Imagine how the typical homework assignment goes. You get something assigned to you, you take it home, you do it, and you turn it in. A week later you get it back with a grade on it, no chance to revise or redo because by the time you get it back, it’s time to move on to the next thing. You better have gotten it right on the first try, or you’re simply punished with a bad grade. Often homework serves more of an assessment than a learning opportunity.
Now compare that to how we learn in games. Think about how many times you’ve missed a jump and immediately gotten back up to try it again. Think about how many challenges in games you failed only to try a new tactic or experiment with a different solution. You weren’t trained to fear that failure, you were trained to overcome it, and failure still had consequences. This was no lovey dovey everyone is a winner experience, but you were taught that what mattered was finding a solution to the problem in front of you as quickly as possible rather than just getting it right on the first try. The important thing here is that the problems in video games ask you, can you find a way to solve this rather than, do you know the solution, which is the approach most homework in our schools takes. Each problem in a game is a chance to learn and improve rather than simply a test to see if you already have the knowledge required to solve it. This approach, the approach that games provide, is vastly more beneficial for education as it allows homework to be a learning opportunity rather than simply reinforcement or assessment. It’s pretty much impossible to do that in modern classrooms as they are now.
“Through games, we can get kids experimenting, exploring and discovering freely and perhaps through doing so, get them to love learning rather than fear it.”
Often teachers only have a very limited amount of time, just enough to grade the work they give out. They can’t be giving the type of instantaneous feedback that students need to be able to rapidly iterate on problems and test out new solutions or theories they might have, and that’s absolutely not the fault of teachers, but it is an artifact of our educational system’s past that persists into today. When our educational system was created nearly 200 years ago, this sort of drill was the only option, and schooling itself was preparing young people to enter careers that were much more dependent than learning things by rote, factory work, basic shopkeeping. It was preparing them for a world where you couldn’t just look up something on the Internet or pop onto Wikipedia. Today on the other hand, we need to prepare students to find innovative solutions. We need to prepare them to apply the limitless data we have in front of us to solve whatever problem is at hand. It doesn’t matter if it’s a job in IT or the most esoteric medical research, almost all of our decent jobs today require innovation. They require you to find answers to problems you’ve never seen before and for that, you need to see failure as an opportunity to learn rather than something to be afraid of.

Today with computers and especially with games, we provide the opportunity to take a lot of the workload off teachers to free them up to actually teach instead of being tied up in the busy work of grading homework that could be done by a machine, a machine that could respond instantly and tell the students the moment they try something whether or not they’re correct. With games, especially digital ones, we provide the opportunity to create that rapid feedback cycle that allows students to focus on iterating on their mistakes and learning through their failures. We don’t simply present them with assessments but rather use our assessment time not only to assess but to provide learning opportunities. When somebody asks you why we should consider using games in schools, absolutely tell them how much more engaging we can make the classroom, but that’s something they probably already know.

Also tell them that we can finally do away with a classroom that instills in students a fear of failure, that we can finally be done with a classroom environment that discourages students from taking risks that lead to discovery and instead prepare them to innovate for the future, that we can free teachers of the burden of creating rote homework and instead let them focus on their real job, teaching, that through games, we can get kids experimenting, exploring and discovering freely and perhaps through doing so, get them to love learning rather than fear it.

How to be a developer | Part 2

How to be a developer | Part 2

How to be a developer | Part 2

Let’s review what we’ve discussed so far. Development is all about problem-solving. Breaking a problem down and finding the right solution. To do that, you need to be a great analytical thinker and a professional tinkerer who can take apart any digital system, understand how it works and put it all back together. The best problem solvers are explorers, who are constantly learning new tools and techniques on their own and from other developers.

Today, I want to start by talking about the third primary skill of an effective developer: communication. If you’re going to be working with other people, and you are. At some point, you’re going to have to talk to them. Most developers don’t really like this; they like to imagine themselves as the lone wolf hacker, tearing through code into the wee hours of the morning. Free of stupid time syncs, like meetings, but the reality is that real development almost always happens in the context of a team, because there’s a limit to what one developer can do. A well-coordinated team can tackle bigger problems, play to each person’s strengths and solve problems faster and better than if any of them had done it alone.

One developer who’s bad at communicating can wreck all of that. When people aren’t talking to each other, the various pieces don’t line up, the wrong problems get solved. Assumptions are made. Bugs creep in and projects run late. This is just as true for working with non-programmers, as with fellow developers. Somewhere on your team, there will be a manager or an artist or a marketing person who is vital to getting the project finished and out to the end users. If you weren’t communicating with them, they can’t do their jobs and the product will suffer.

“The best problem solvers are explorers, who are constantly learning new tools and techniques on their own and from other developers.”
How do you get better at communication. First, treat it like any other problem and examine the tools at your disposal: meetings, phone calls, Skype, chat, email, passive-aggressive check-in comments. These are ways to stay coordinated with the rest of the team, so don’t neglect them. You don’t wan to treat it just like any other problem, because now you’re dealing with people. That means listening to their ideas, giving the benefit of the doubt. Not assuming your way is always the right way. This is especially true when working with non-programmers, since your tendency will always be to assume that the programmer mindset’s right and the artist is just insane.

Take a deep breath, listen to what they’re saying again. Assume until proven otherwise that they’re just as good at their job as you are at yours. A team that communicates well will always get better results than a team who doesn’t. At this point, we’ve pretty much covered what it means to be a good developer. Of course, there’s much more to it than just the big picture stuff. Here are some more specific tips and skills you should pick up as a developer.

Number 1: math, at least through algebra and geometry. You don’t have to be great at math to be a programmer, but you will need to use it. Most developers won’t do a lot of advanced math, but you’ll definitely use algebra, trigonometry, geometry and basic probability in the course of your career. If you’re going into game development to finance, higher math is even more important.

Number 2: estimation. The software industry is famous for blowing through deadlines, sometimes by months or even years. Some of the is feature creep. It’s very hard to resist adding just one more feature, but just as often it’s due to developers who are bad at realistically estimating how long something will take. Actively work on your estimation skills. Break down each piece and estimate each component. Record your estimate and see how long it actually took you and figure out where you went wrong. If you’re not evaluating yourself, you’re not going go to get any better at it.

Three: microeconomics. If you can’t talk the basic languages of economics: supply, demand, opportunity cost, game theory and all that, you and the suits are just going to be talking past each other. Most of the real decisions on a project will be influenced by money. A lot of the programmers make themselves irrelevant in the decision making process by insisting on only thinking about making the software perfect instead of what’s best for the business.

Four: basic user interface design. It’s basically unavoidable. At some point in your career, you’re going to have to make something that an actual person will use and most bad interfaces come from programmers. Understand common UI metaphors and when to use them. Accordions, modal dialogs, buttons, icons, tabs, folders, all that. Learning to see it from the user’s perspective can make all the difference. You may not be enough of a designer to make it beautiful, but every programmer should be able to make something usable.

Number 5: low-level languages, like C and Assembly. You may not use them everyday. In fact, you may never use them, but the abstractions of all the higher level languages are built on the same basics of pointers, branching and arithmetic. At some point in almost every industry, performance becomes an issue. Understanding how the code works at a low level is the only way to get high-performing code.

Six: understand how computers work. This means understanding computing hardware, networking and operating systems. Most of the details of these things are nicely abstracted for you 99% of the time. Some day your team’s going to have to deal with packet loss or page faulting or hardware failures. You don’t want to be playing catch-up then. Having a solid understanding of how all these systems work will make you a better developer.

Seven: just start programming. If all of this seems like too much to figure out right now, it’ll never hurt to just get more programming experience under your belt. If you’re watching this on a computer or over the internet, you already got everything you need to start programming so get to it.

That’s about it. Once again, very big thank you to our friends at gamedev.stackexchange.com for their insights into game development. Again, if you’re interested in becoming a programmer, definitely make some time to check them out. Even if you don’t want to be a programmer, StackExchange has opened up a pretty neat site to ask and answer more general questions about games, which you can find at gaming.stackexchange.com. Thanks again fellows. I think you may have helped at least a few people better understand how to pursue this career. We’ll be back next week to kick off another multi-part series.

How to be a developer | Part 1

How to be a developer | Part 1

How to be a developer | Part 1

Hi, everyone. We’ve been wanting to do one of these episodes for programmers and developers forever, but none of us have ever worked as one, so that made writing this episode a little tricky. Fortunately for us the guys down at StackExchange have heroically stepped in and offered to make this episode happen. In fact, they offered up so much great information that we’re going to make this a two part-er. For those of you who’ve never heard of them, StackExchange is a great resource for developers. Pretty much everyone I know goes there when they have questions. Especially if you’re starting out, put it on your list of places to visit. All right, onward, programmers, or as many of them prefer to be called, developers. What do they actually do? Most people have a vague image of a guy sitting in a basement in front of a computer typing arcane commands into a terminal and chugging Mountain Dew. Of course, there’s much more to it than that. What does it mean to be a developer?

Like most jobs, developing software takes on a lot of different forms, but the heart of it comes down to problem solving, designing a new system architecture, implementing a feature, finding and fixing bugs, all of these come down to analyzing a problem, breaking it down into its essential pieces and coming up with a solution. As a developer on a team, you can pretty much consider yourself chief problem solver. What does that kind of problem solving look like? David here had a pretty helpful anecdote. The third class he took in his computer science program was designed to introduce students to real world software development, and he thought that sounded great. They’d get to work on some real world problems that people have, so he was a bit surprised when they got their big group assignment that counted for most of their grade. He and his partner were told to build an M&M sorting robotic arm using Legos, a pair of servo motors and a webcam. This was very different from other classes he’d taken up to that point. Those were pretty straightforward, here’s a loop, now go write a bunch of stuff using loops.

This class was asking him to do things they had no idea how to do. There was no chapter in the textbook on sorting M&Ms. There was no website they could go to with a tutorial on how to build a robotic arm out of servos and Legos, at least there wasn’t then, there probably is now. They just had to figure it out. Now one way to look at this would be to say that he spent four weeks learning some truly useless skills and since that class he’s never worked with servo motors, webcams, path finding algorithms or M&Ms but in reality this turned out to be exactly what real world development is like. The next summer he got an internship at a real software company, and the first day he showed up, he was given an assignment working with technologies he’d never heard of, solving problems that nobody at the company had solved before. Real development is about solving problems whether you’re a game developer working on a physics system, a web developer working on a user interface or a quantitative finance developer working on a new financial model, it all comes down to breaking down the problem and finding a solution.

“Real development is about solving problems whether you’re a game developer working on a physics system, a web developer working on a user interface or a quantitative finance developer working on a new financial model, it all comes down to breaking down the problem and finding a solution.”
If that’s what being a developer is, what makes someone really great at this? First, a great developer is someone who is exceptionally good at analytical and abstract thinking. You need to be able to take a system apart, analyze each piece and figure out how it all fits together. If you’re the kind of person who even thinks about being a developer, you’ve probably done this from an early age. Growing up, David here would spend hours in his best friend’s garage taking things apart, computers, vacuum cleaners, TVs, whatever they could get their hands on. If analytical thinking is at the core of being a developer, how do you get better at it? Simple, by finding ways to feed the analytical side of your brain. Study math, science, logic, proofs, even puzzles, anything that emphasizes understanding and applying concepts rather than just memorizing facts and figures. Dive into existing systems and figure out how they work. Ask yourself what problems the designers were trying to solve here and why they solved it the way they did. Take things apart and put them back together, literally and metaphorically.

Analyze the games you play and the software you use to figure out what makes them work, why did the designers did it the way the did, how they could’ve done it better. All of these things will build up your analytical thinking and make you a better developer. This touches on the second most important trait of a developer. Every developer has to solve problems but what separates good ones from great ones is their ability to solve them quickly and elegantly and often what makes the different there is having a wide body of tools and experience to draw from. Think of it this way, I’m pretty sure that if you gave me the tools, I could make something resembling a tree house. Now give those same tools to a real carpenter, and he would do it much faster and end up with something much less likely to kill you. The different between me and the professional is that the professional knows what tools to use for each job, specific techniques for solving problems he’s seen before and a whole lot more about what needs to be done. The same applies to programming. What separates the experts from the novices is a wide knowledge of what tools and techniques exist and a deep knowledge of when and how to apply them.

How do you get better at this? By being an explorer. Computer programming may have been around a while, but it’s still very much in its infancy. New techniques and approaches are being developed all the time. If you want to be a great developer, you need to stay on top of these changes. When new languages, frameworks, techniques or methodologies surface, explore them and see what they can tech you. Don’t just read about them, get your hands dirty and write some code. You may find a new tool that’ll be perfect for a job someday or a new library that does exactly what you need, a language that’s tailor made for particular problems, or you may just learn a new approach to solving problems. The goal is to accumulate as many tools on your tool belt as possible so that when the time comes, you’ll know exactly what to use. Unfortunately, exploration is generally discouraged in the workplace often for good reason. Your boss doesn’t want you to be constantly trying out the latest technique or language on a critical production system, so most of your exploration will happen on side projects outside of work, and that’s just part of being a good developer.

The best developers are constantly writing code and exploring new tools and techniques in and out of work. Of course, exploration also means learning from other people. Everybody approaches problems differently so looking at how other people solve problems is essential to widening your perspective and learning to be a better developer. There are a few different ways to do this. First, read other people’s code. There’s a wealth of sample and open source code available on the Internet. Don’t be afraid to take an existing project apart and see how it works. You’ll learn how they structure the project, how they solve particular problems and probably what they could’ve done better. Second, find smart developers to work with. If you’re a student, try to get an internship at a company where you’ll be writing production code. Find an open source project that interests you and start submitting fixes and suggestions. When you’re on a team, seek out the more experienced developers. Look at their code and ask them to critique yours.

Finally, get involved in the broader community. There are a dozen places to do this online, Hacker News, GitHub, IRC, even good old Slashdot or Stack Overflow. Better yet, get involved in open source and give back to the community. If you’re in a major city, find a local developer group to meet up with. All of these will help you to explore the wide, wide world of programming. They’ll teach you new ideas, new techniques and new ways to solve problems. That’s it for part one. Next week we’ll be back to talk about the importance of communication, as well as many other skills a developer needs.

Minecraft is changing the future of gaming

Minecraft is changing the future of gaming

Minecraft is changing the future of gaming

Up until this point we’ve refrained from talking about Minecraft because we felt we didn’t have that much to add to the conversation. There is a lot to dig into about Minecraft, but so much has been said about the game by so many insightful people. That said, there is one thing that hasn’t been touched on much: what effect is this going to have 10 years down the line? Once in a rare while a single game comes along that affects the entire game industry, and Minecraft is definitely one of those phenomena. It’s such a behemoth in the game space, of course it’s going to make waves. Usually though when a game becomes a mega-hit like this, its influence is seen largely in the number of people trying to clone the game to make a quick buck. In extreme cases, these mega-hits can lead the whole game industry to focus their efforts around the genre they popularize. We saw it happen with first person shooters, it happened with MMOs, it’s currently happening with MOBAs.

I think Minecraft is a fundamentally different situation, and I think that because Minecraft has gained massive popularity with a particular group that almost none of these other mega-hits do, and that group is young children. That is important, because Minecraft is radically different than the types of games most of us grew up playing. You see, for most of us we grew up with action games, reflex-based games. Kids of the Nintendo era grew up with platformers, and so when they reached their teenage years and became the principal target market for the triple A industry, many of them looked for high action play. Later some of these kids inevitably also joined the industry and brought with them the experience and the knowledge that all those years of play had given them, as well as the biases and ingrained ways of thinking. This led to an industry increasingly focused around action play, about adrenaline games. We’ve moved from platformers to first person shooters, generation to generation. NES kids grew up to give us things like Halo for the next generation to grow up. In fact for almost the entire history of the medium most of the games that are hits with a younger audience, that people would start picking up by the time they were 7 or 8, have had the same core engagement: reflex challenges, adrenaline and mastery.

“In fact an entire generation are perhaps for the first time being trained not to expect instant gratification from their games.”
Now, all of a sudden that’s changed. All of a sudden we have hundreds of thousands of young people being introduced to gaming with a low fidelity game about building. The ripples from that are going to be enormous. Think about the patience that Minecraft takes to start. You can’t really just button mash, you can’t just slam on the controls and watch things explode. This is a wholly different expectation than most of the games for youth have had in the past. In fact an entire generation are perhaps for the first time being trained not to expect instant gratification from their games.

Imagine what that does to design, especially mass market design, 10 years down the road. Imagine if we could expect a little more patience from the player before they hop into the action. Imagine if we could count on the player being willing to do a little more work before the game really opens up. This creates an incredible breadth of new play opportunities. It doesn’t mean we’ll have to fundamentally change the genres of games we produce, but it lets us do more with them. Games like the old Thief or Mech Warrior or games in the vein or Rainbow Six become much more viable for the first person shooter designers working at triple A companies if we can expect players to come into games with a willingness and maybe even an expectation to have to put in a little bit of work up front to really get the most out of their games.

It also potentially changes what genres we build. Look at the triple A space today. It’s filled with games that are an evolution on what that audience played when they were a little bit younger, games which can bring the existing audience from one title to the next because they’re already familiar with it, already comfortable with the genre and the mechanics. Now look at the indie space. For every wildly innovative indie game we see a dozen games playing to our nostalgia, our fond recollections of earlier days.

Imagine what happens when that audience’s nostalgia, when the genre and the mechanics they are comfortable with, centers around a building/crafting game. It may well become a lot more viable for genres that haven’t seen triple A budgets for 20 years to return to the triple A spotlight. It may become reasonable for companies to branch into genres that we haven’t seen big teams work on since the original heyday of the PC. Of course this doesn’t mean we’ll lose our first person shooters or our racing games, but it does probably change the percentage of the industry that’s going to be focused on strictly action oriented play, and in 15 years when many of the people who are entering the industry are the people who grew up putting in their 10,000 hours on Minecraft, you better believe it’s going to change what they create. Will it radically alter how we fundamentally understand games? No, probably not, but can you perhaps expect to see more crafting systems in your shooters, can you expect to see more digging and mining and building in your RPGs? Almost certainly. We are an industry of human beings, human beings influenced by what we grew up with and what we grew up loving, and today’s generation has grown up with Minecraft, so can we expect this Minecraft generation to change the industry? Absolutely. As the creators and consumers of the future, their voice will weigh in on what games get made and how they’re crafted.

When looking at the Minecraft phenomena, it pays to stop and take a moment to look at the broad view and think about how the games of tomorrow might be influenced by the wild success of one game with the children of today.