I was struck again several times just this weekend by this idea that I've been having regarding levels of knowledge and learning. And when things come in batches like this, it makes sense to pay attention and think about them.

The basic example of the situation is this: When you first learn about a subject, you are by definition a novice. Depending on the topic area, there may be many books on the subject geared toward your knowledge level. As you become more adept though, the number of books on the topic that are worthwhile to you dwindle.

We were looking at books on home decorating over the weekend. There simply are no basic books. The books that exist all assume some fundamental level of interior design skill that we simply don't possess.

As an aside, these interior design books are also particularly annoying in that there is no practical guide -- all of the photos in the books are of well-designed houses that are configured nothing like the box of bricks the typical family lives in. I'm sure I'll eventually discover a book that shows how to decorate a typical American cookie-cutter home, and I'll be pleased when I do, but until then all I have to look at are books where every ceiling is vaulted, every entryway is parquet'ed, and all the woodwork is antique.

Programming is certainly this way. When I started to learn how to code, I was typing code from magazine listings and the scant few books that talked about programming. These were very basic. I don't know of any analogue to those publications these days. Where are the true beginner materials?

One of the fundamental things I discovered about people learning to program is that everyone starts at a different place. When you get into programming, you don't all get in on the "ground floor". The building certainly isn't a single high-rise, but a weaving Escher-esque nightmare of staircases that converge at odd angles, sometimes upside-down. As a result, many people are missing certain things that I find fundamental to know. For example, being able to "read" code - where you sort of "execute" the code in your head to imagine what it will do - is a fundamental skill that very few of the people I know practice explicitly.

But assuming you even obtain a basic layer of knowledge, everyone's ground floor is different. And like a concept well-described in Vernor Vinge's "A Deepness in the Sky", as the automation of a technology increases, the layers of abstraction increase to the point that the truly basic underlying systems are understood by hardly anyone. Take for example the workings of the web. While practically anyone with a keyboard these days can produce a web site using software they stumble upon while browsing, just because you can do so does not mean you have the knowledge of how the browser works, or how your TCP/IP stack requests the information it gets, or how the routers between you and the internet move that traffic, or how your computer is able to turn the code it receives into something readable, or how the jpeg images are decoded for display, or how the code that displays the images received from those vast distances is dissembled into bits of assembler instructions that cause the microscopic components of that machine to execute anything. What few software engineers know anything about the low level functionality of a floating point processing unit, for example?

Yet, you can pick up a magazine at any bookstore that will explain how to build whole, useful web sites.

Is it useful for a web designer to know anything about assembler? Probably not. And I don't posit that the art of compiler design is lost (yet) for all of them fleeing to build a new Facebook. But there is an interesting disparity of knowledge there. And my point here is that there's no real connection to be made between.

Sure, you can pick up the knowledge of how to build web sites, but if you wanted to learn the next thing - maybe it's how to build a browser - you'd be hard pressed to find a manual on that. And I think that's the case with a great many disciplines. After you've learned the basics, and maybe a level on top of that, things tend to either get specialized to the point of requiring knowledge that you would have to have obtained externally, or simply don't exist.

I wonder if there's a place for these in-between classes. A class you could take to learn how to get from novice to advanced specialist that is more general than jumping directly to the specialist class. Because I think that the way we learn these days is different than most formal instruction. With formal instruction, you have a path from knowing nothing to specializing. These days, you start out as a specialist, not needing to know more basics or advanced techniques to survive. But a class or some books that I don't think exist now to fill in the gaps to allow people to move laterally into related disciplines seems like something that could be beneficial.

As many people know, I enjoy going into the city to attend technology events. I actually ran the Philadelphia WordPress meetup for a while, and I've attended many other meetups, including the blogger meetup, PANMA events, the PhillyCHI design slam, the Philly Standards meetup, DrupalCamp, and the Philly PHP meetup. I've even presented topics at a couple of these meetings. While all of these meetups have been fun and educational, I think it would be beneficial to have some events exclusive to the suburbs and attract suburban developers who might want to attend regular meetings without having to drag themselves into the city every month.

With the economy the way it is, some folks might consider it useful to informally enhance their skills or extend them into other areas. Networking with other people in these fields could also lead to more industry contacts when times get rough.

So I've been considering which to do. It's always been a thought of mine to build a local blogger meetup. I think it should start off on the right foot, too. Rather than being just a social gathering of bloggers, it could hit those topics that bloggers always find themselves asking about, like how to make money doing it, how it can benefit your business in a practical way, what software to use, and even what to write about. But blogging... It's got a stigma attached to it that maybe it deserves ("Today for lunch I ate...") and maybe it doesn't (see any of the excellent journalistic blogs on the net).

Instead, maybe it should simply be a technology meetup. We could talk about blogging, or we could talk about development, or we could talk about... Whatever technology-related topic someone wants to bring forward. The only reason I'd consider this is because I think it might offer more value to the common person than a blogging-specific meetup.

I realize that there are classic "user groups" that meet in our area, and I mean to attend at least one of their meetings. But my impression based on what I've read is that they're really user-oriented, readers or blogs or consumers of technology, and not creator-oriented. Also, I get the impression of them being run by the stereotypical 80's computer geek, who looks and acts much like that comic book guy on the Simpsons. None of the meetups I've attended in the city give that impression, and I'd want to stick with the format I know and like - informal but regular and informative presentations along with useful and enlightening networking social events.

What do you think? Are you local in the suburbs to me? I'm thinking that a good place to hold these meetups would be in the Exton, Downingtown. or West Chester areas, since those are fairly central and built-up places to suburbanites in my area. But Phoenixville might also be a worthwhile destination. Would you be willing to travel that short a distance, rather than into the city? And what topic would you like to discuss? If there's enough interest (and we'd only really need a handful of people to get the ball rolling), I'd be happy to start the organizing process.