Making the leap from CiviCRM implementer to developer
For years, I've wanted to give back to the open source communities I'm a part of. Often I'm told, "Write code." More than any other project I've seen, CiviCRM has created alternative ways of contributing back. At the code sprint, I met people brand new to CiviCRM contribute meaningfully by proposing (and critiquing) workflows for new features, create how-to screencasts, and more.
But I'm a techie, not a non-profit employee. I want to make a technical contribution. I know the fundamentals of programming, but have little experience. When Lobo sent me a personal e-mail inviting me to the code sprint, I told him I didn't think I'd be useful. Lobo's response was, "Come anyway."
So I went to the idyllic Woolman School, and for six days, I was surrounded by many of the world's CiviCRM programming experts. Everyone else knew CiviCRM's code, I didn't. Everyone else had features to add, or projects to hack on - I had a general desire to "help out" while learning the code. Yashodha from the core team sat me down and explained the code fundamentals. Core team members Kurund, Dave, and Lobo answered my questions, no matter how basic. As always, I was amazed and grateful for how welcoming the CiviCRM community is.
So armed with my newfound knowledge, I began to close bugs. In four days, I'd modified a total of five lines of code - maybe a couple hours' work for a core team member. However, those five lines represented four bugs fixed, and CiviCRM is a little bit better for those changes. I spent more time learning the concepts and installing new tools than I did coding, but by the time I left I was working much faster than when I'd started. Most importantly, I'm better prepared to give back to the community, both in the forums and by submitting fixes year-round - and today I submitted my first post-sprint patch to CiviCRM.