If programming were an RPG...

I think the skill tree would go something like this:

Level 0: Line Numbers and GOTO
Level 1: Iteration and Procedural Abstraction
Level 2: Classes and Encapsulation
Level 3: Virtual functions and Inherit-And-Override
Level 5: Pointer Arithmetic and Bit Twiddling

Once you hit Level 5, you're pretty much done with the starter dungeons and can head off to seek your fortune across the countryside.

It's interesting to note that Pointers are now coming much later in the development cycle. These used to be a Level 2 thing; now that many introductory classes are taught in managed language I think it's something people encounter much later on...sometimes, sadly, not at all...

Anyway, once you hit level 5 you're free to pursue membership in one or more Guild. It's common to maintain some level of membership in more than one, but few people rise to high ranks in all of them. The three biggest guilds are as follows:

The Object Oriented Guild

  • Design Patterns
  • Separating interface from implementation
  • Conditional elimination through polymorphism

The Highly Concurrent Guild

  • Asynchronous paths and threading optimizations
  • Multithreaded state management
  • Lock-free concurrency

The Metaprogramming Guild

  • Functional programming
  • Closures and Higher-order procedures
  • Code is Data, Data is Code

I make the observation that one of these Guilds is full up with Java guys; I know lots of folks around the Big House who are trying to make it easier for Joe User to get into the other two...

#1 Joe Duffy on 5.19.2007 at 9:21 PM

Perhaps unsurprisingly, Guild I is a dead end hole from which few ever emerge.And it creates holes in your brain.Guilds II and III are quite amenable to dual enrollment.They eventually converge.And then you are eventually advanced to Immortal.At least that's what the legend on the street says.;)---joe

#2 budowa domów on 7.01.2007 at 11:40 PM

Good article and site. Congratulations