If you want to know why we created The Architecture of Open Source Applications (now in two volumes), you need look no further than the descriptions of other books about software architecture on Amazon. Here’s part of the blurb of one that appeared last year:
Specifically, the book shows you
- What software architecture is about and why your role is vitally important to successful project delivery
- How to determine who is interested in your architecture (your stakeholders), understand what is important to them (their concerns), and design an architecture that reflects and balances their different needs
- How to communicate your architecture to your stakeholders in an understandable way that demonstrates that you have met their concerns (the architectural description)
- How to focus on what is architecturally significant, safely leaving other aspects of the design to your designers, without neglecting issues like performance, resilience, and location
- What important activities you most need to undertake as an architect, such as identifying and engaging stakeholders, using scenarios, creating models, and documenting and validating your architecture
Did you notice that “the architecture of 10 (or 20, or 50) actual systems” wasn’t on this list? You won’t find that in this book, either, or this one, or this one. I haven’t read the upcoming third edition of this one yet, but I used to have the first and second on my shelves, and it didn’t “show the blueprints” either. If any ambitious grad student is reading this, and looking for a great thesis topic, comparing what software designers actually talk about to what’s in the standard textbooks on the subject would, I think, be very interesting…
Gary Stager isn’t the first person to point out that we’ve been dumbing down computing education for the last 30 years—that we’ve gone from teaching kids how to program to teaching them how to use Excel to teaching them how to use iPads. (My five-year-old didn’t need to be taught…) What people mostly aren’t asking is why this has happened, but I have a theory. I think teachers are teaching the computing that they use themselves, because that’s the most economical thing for them to do: they use Word to make hand-outs, and Excel to manage grades, so they’ve already invested in proficiency, so they can put together lessons in less time. They don’t use Logo (or Scratch, or Python, or whatever) in their own work, so teaching it requires more effort.
Which makes me wonder how successful current “programming for everyone” efforts are going to be. I doubt most teachers are going to want to hack their classes’ web sites (and even if they do, their schools may not allow them to). I’m even more skeptical of the idea that teachers will program in their day-to-day work any time soon.
(“But wait,” you say. “Most Latin teachers don’t speak Latin at home. And there aren’t a lot of physics teachers building lasers in their dining rooms.” True, but those are recognized, accepted specialties within teaching right now: they aren’t trying to gain ground, just hold onto what they have.)
Now let’s shift focus a bit. My 14-year-old nephew is on the web, creating content, almost daily, but “on the web” isn’t quite accurate. He’s actually on Facebook: along with GMail, YouTube, and Minecraft, that’s pretty much what the web consists of for him (at least that he’ll admit to his uncle). We already know that if we want to teach kids, going to where they are works better than bringing them into an artificial environment and giving them artificial tasks. I therefore think that if we want the 95% who aren’t already keen on hacking to care enough to do it, we need to teach them how to hack the places they already are. Having everyone build their own Facebook plugin would (a) take far too long to pay off and (b) be unsafe (imagine you’re Facebook’s director of security and someone tells you that 100,000 high school kids are about to build plugins for your site). But what if we made a generic plugin that allowed people to build and run WebScratch programs inside Facebook, with access to (some) FB content? I know, I know, there’s no such thing (yet) as WebScratch, but you get the idea: if we could create, test, and deploy this that makes it easy for them to build that, what would “this” and “that” be?
(“But wait”, you say, “Facebook is a closed pseudo-monopoly. We shouldn’t be supporting them!” I agree, but (a) going into a slum in Rio de Janeiro to teach the kids who live there doesn’t mean you support the idea of slums, and (b) they won’t understand why “closed” is bad until they understand more about the web in general, and open in particular, and they won’t learn either unless they care enough to learn in the first place.)
So, question #1 is, “What can we teach about computing and/or the web that will appeal to teenagers, but will also be useful to classroom teachers?” And question #2 is, “What plugins can we build that will allow learners to hack where they are?”
We are very pleased to announce that The Architecture of Open Source Applications: Volume 2 is now available from Lulu. A PDF version will go on sale in the next few days, and e-book will become available as soon as we can produce it. Many thanks to everyone who contributed, and to the indefatigable Amy Brown for pulling it all together. As always, all royalties will go directly to Amnesty International, so if you buy a copy, you’ll be helping to make the world a better place.