One of the best ways to learn a new language or new approaches to solve daily problems is to see how other people deals with it. When I started to code Vitrola's HTML Player, I've had a hard work to find out a good JS library to handle the HTML5's audio tag, but after some hours of searching I've found the fantastic Buzz Audio Library.
In order to add unit tests to this library, I started to describe the features we needed in our project: increase/decrease volume, mute and the audio commands like play/pause/stop, etc. In other words, I've just used my player features to create specs for the library and this was very good, because I see that the library fits my needs and works as expected
So, imagine audio controls feature: play/pause/etc:
So what I want to say with this? This contribution helped me to understand the library I was using and turned it more reliable to other people that wants to use. Go ahead, maybe you can contribute to some open source libraries you are using and this is, definitely, one of the best ways to learn and improve your code skills, you'll feel more confident to contribute to other projects.