I went through several phases of doing more complex programs where people who were great programmers would look at my work, give me feedback on it, and you get so you can be quite a good programmer. It was kind of such an intense activity, between the age of 13 and 17, that we learned a lot. Eventually one of the programs we took on was the idea of the scheduling of our school. When should the classes meet? Who should be in what section? You have all these requests for people who want different classes, and keeping them small, and not having the teachers teach too many classes in a row — very complex kind of software problem. And actually, when the school first asked me to do it when I was 15, I said that I didn’t know how and they asked some adults to do it, and that didn’t work. Then, about a year later, I’d figured out how to do it, and so my friends and I actually did the software that did all this high school scheduling. It had some fantastic benefits to us, and we got paid for doing it. It was exactly the kind of complex problem that developed my skills very well. And we got some degree of control over who was in our classes, so it combined the best of everything!