It's Called Software for a Reason
Although my Github projects have always included open source licenses, I haven’t made many contributions to projects people actually use – at least until this week, when I submitted my first real pull requests. After learning a little Java from my Tic-Tac-Toe and server project, I managed to close an issue I opened six months ago on Spyglass. And I’ve spent most of this weekend hacking in Ruby on Exercism.io, a code koan site that focuses on expressive, readable code.
Not long ago, most software seemed static and untouchable: I treated the libraries and tools I used as artifacts of “real programmers” imbued with a special aura. Slowly, over the last few months, that category has dissolved. Most of the code I touch is no doubt still written by people smarter than me, but suddenly it seems malleable and open for extension.
This, I think, is an underrated benefit of test-driven code. Even when I still feel like I’m faking it, I have tests that tell the truth: the code works as intended. But for learning to test, I don’t think I’d have developed the confidence to jump into an established project and commit without fear. Writing docs and working from open issues are a good start, but to really contribute, the first step is writing tests.