I recently started the phase of my bootcamp where students tackle building a complex web application — a chess game — as part of an Agile Development Team.
I was equal parts exhilarated and terrified.
Hitherto, my apps have been for-my-eyes-only (and yes, also my mentor’s and instructors’ — but they don’t really count). Leading up to my team’s first stand-up, I found myself trying, and failing, to squelch my insecurities:
- Do I know enough code to make meaningful contributions to this app?
- Will I get along with my team? Will they be inpatient with my pace and progress?
- Will I make a complete idiot, fool, ass, derrière of myself?
I have a checklist of coding milestones that I believe measure my maturity as a developer. Some have been a cup of tea (e.g. implement continuous integration for all my apps); others a bit more challenging (e.g. conduct an informational interview with a senior developer you don’t know). But there was one item I’d always pretend wasn’t there: “Make a purposeful contribution to an open-source project.” The prospect of attempting this milestone was daunting— open-source codebases are so … huge! And intricate! And huge! Since I was a child, I’ve always feared breaking things: mirrors, eggs, bones, and now code. In my mind, one mis-algorithm and the whole project would come screeching to a halt, and it wouldn’t take the owners of the app long to sniff me out as the culprit.
Enter my team project. Working together on our chess app, feature-by-feature and method-by-method, has demystified the entire world of collaborative coding for me. Before now, GitHub had been just a cool place to store my code incase my laptop crashed. But OH! Is it so much more than that! There’s forking, branching, pull requests, code reviews, code conflict resolution — it’s beautiful! My fear of dismantling an app with a few lines of sub-standard code has melted away, replaced by the confidence that my contribution must clear several “hurdles” before it gets anywhere near the main codebase.
Another aspect of open-source participation that had me frozen was revealing to my collaborators just how little I knew. Never mind how often my mentor Jeremy and my bootcamp instructors encouraged me:
Don’t ever be intimidated; everyone, even the ‘expert’, is still learning
I still felt like I’d show up to the party in formal, all-white attire, only to find every other guest chilling in comfortable jeans.
Working on our chess app has taught me that, no matter how massive the codebase grows, every facet and functionality to be added is broken down into bite-sized, manageable pieces that I can focus in on and be responsible for. The realization that I will never be expected to bring Goliath down, be it with the chess app or any open-source project, is truly liberating. Instead of comparing my skill set or coding language fluency with others, and then cowering at the disparity, I can leverage the opportunity to learn-while-doing, through pair-programming or having my code reviewed (that sounds gentler than ‘critiqued’, doesn’t it? 😉).
This week, I happened upon the repo of a cool-looking, uber-useful open-source app. They’ve indicated that they are “first-timer-friendly” and the app has several open issues. I surprised even myself when I excitedly forked their repo and began familiarizing myself with their contributor guidelines. I’m an open-source contributor, people! 💃🏾