… is more fun and less annoying, especially with Debian.
Free Software is take and give, thus I contribute my part.
Software is used in diverse ways, so authors of software sometimes don't realize bugs by themselves. Most authors of Free Software appreciate bug reports. You can make them even happier by sending them patches like I did for e. g. apt, wakeonlan, vdr-plugin-live and dak.
Sometimes the author ceases to use the own software. Then you might take over maintainership like I did for libpam-pwdfile in Debian as well as upstream.
I prefer assembling existing programs using (ba)sh scripts to reinventing the wheel. If that gets too inefficient or fiddling with bits is needed, C++11 is my language of choice. I always design in- and output of a program in a way that it can seemlessly work together with existing ones, closely following the Unix Philosophy.
If the language of a project is already set, I sometimes write code in C, Perl, PHP, Python, …