I did a recent interview that talked a bit about the upcoming Drupal O'Reilly book (code-named the "Lullabook"), how I got my start in the Drupal community, and how I went about surmounting the Drupal learning curve.
The short version is that, in my opinion, getting involved in the community is, hands down, the fastest way to ratchet up your Drupal knowledge. It was the only way I was able to make the leap from "total newbie" (who hadn't even installed Drupal at the time) to "contributing my first module" in 2 very short months (I started out my Drupal career as a Google Summer of Code student back in 2005).
It was a lot of fun to reflect back on my first couple months in the Drupal community, which included some of the following highlights. *cue the flashback wipe*
webchick gets roasted to a crisp ;)
My first five minutes in the Drupal community went something like this:
This experience actually was a really positive one, once I got over the sheer, unadulterated terror. ;) It taught me a lot about the culture of open source communities, particularly in IRC. Reading up on things like How To Ask Questions The Smart Way helped show me that these weren't a bunch of mean, evil people, but rather that what I'd just done was the equivalent of barging into a stranger's house unannounced, leaning back in a chair with my bare feet on their kitchen table, and belching the national anthem.
By changing my strategy, and instead lurking for a good while, reading the conversation as it went past, and chiming in when I had something appropriate to say, I ended up getting flamed a lot less, and also started to make some friends, including the individual who had roasted me previously. :) I also discovered that purely social conversation in #drupal was fine, it just needed to come in openings when people were talkiing about video games or whatever, rather than when people were trying to fervently hash out the next huge API challenge that Drupal was facing.
This experience also has made me a lot more tolerant of newbies who slip up and do things like ask support questions in #drupal, as I always try and picture that behind their screen name is a potential contributor who just needs a little patience and direction in order to launch them on their illustrious career of super core patch tester, or module developer extraordinare, or what have you.
drupal.org goes "bye bye"
About two days before the Summer of Code mid-terms, when we were all in a blind panic to get our interim code submitted so we could get paid, drupal.org went down.
Panic gave way to awe when over $10,000 in donations were given in less than 48 hours, as embodied by this ad:
It was then that I knew I'd found a community I could call home; so many awesome, generous people in one place really warmed my heart.
This experience also gave me the opportunity to contribute my first handbook page, as I had to scramble to figure out in a hurry how to get a local mirror of api.drupal.org, and figured since I never wanted to figure that out again, I would write it up and share it with any other interested parties. :)
Making the leap to core
Summer of Code had me working in my own little CVS repository in my own little module project and my own little issue queue. Nice and safe. Drupal core was of course the area where those elite, genius-level core developers played, and thus it was hands-off for a newbie like me... or so I thought.
This perception is extremely funny to me now, because on "this" side of the core contributor fence, you see first-hand how totally, inconceivably bad some of the first few attempts at these great, world-changing patches are. I'm talking security hole-laden, fatal error-generating, oops-accidentally-deleting-all-the-data-in-your-database kind of bad. It's sort of a rite of passage among core developers to have some big mistake (like your database credentials in settings.php, or a huge parse error, or what have you) that was overlooked in your patch get committed to core and become part of the development version of Drupal for a little while. ;) Most of the big core patches go through dozens of revisions before they're finally committed. Not one of us gets this stuff right the first time.
The cool thing about core development (and this is true of open source in general, actually) is that it's not about who's the best coder with the biggest brain who's been doing this since they were in diapers and is more fluent in 1s and 0s than English. It's more about what happens when a bunch of people put their heads together on a problem, each with their own experiences and expertise, and come up with the best solution possible. And these contributions can be anything from "I've worked a lot with odd-ball databases and I know this query can be done more efficiently," to "I know English well and can spot a spelling/grammar error from fifty miles away," to "I'm new at Drupal and I know what new users will find confusing, and this is it! How about if we did it this way instead?," to "I have Windows and can test this in IE." Seriously. Anyone can contribute to core development, and when more people do, Drupal becomes a better product for all of us.
I owe huge thanks particularly to Steven Wittens and Károly Négyesi who both played pivotal roles in helping me to overcome that "you must be Eintstein" misconception, and invested a great deal of patience and energy in helping me get my feet wet. With their help, I went on to roll my first core patch and now, what can I say? I'm hooked. ;) Thanks, guys. :)
How about yourselves? What experiences helped define your initial foray into Drupal? How did you help get yourselves over the learning curve/how are you currently attempting to do it?