I studied math in college. Back then, ordinarily, math students didn't have access to the computer lab; pen and paper were all we needed to do our work. But for my one required programming class, I got access to the college computer lab.
It was running SunOS with remote X terminals (this was circa 1996). I immediately fell in love with Unix. I fell in love with the command line, X Windows, the utilities—all of it.
When the class ended, I lost my access. A friend told me about this thing called Linux, where you could install a Unix operating system on your own PC. Back then, installing Slackware on your PC was non-trivial.
So I dragged my tower PC to a "Linux installation party." Somehow, enough Linux geeks managed to get it to work. Graphics wouldn't be working for another couple of years since writing X configuration by hand was not something I had time for, but I didn't care—I had a Unix at home!
I have used nothing but Linux desktops since then, and thanks to the hard work of the community, Linux installation no longer requires installation parties. At some point, I switched from Slackware to Debian, and to this day, Debian is my distribution of choice.
Shortly after college, for a statistics gig, I grew frustrated with the limitations of SPSS. That's when I discovered my second great open source love: Python. I used Numeric (the predecessor to the modern NumPy) to calculate "median by tag," which SPSS lacked. Back then, the Python community was small. I pointed out some issues with some Python math modules. (My exact words were, "Whoever wrote the
poly module for Python knew neither math nor Python.") Guido van Rossum replied to my e-mail with three words: "It was me."
The good news is that we got rid of
zmod. Everyone in the community agreed that both of these modules were poorly written and mostly useless. Guido suggested that "Numeric" would be the right place for it. It would take about ten more years for the NumPy library to add the polynomial module.
The bad news is that it took me a few more years to learn how to interact better in the open source community. I made missteps along the way, accidentally hurting people on the other side of the screen.
Being kind to people, especially if you are not able to see them face to face, is important. If you have the chance to engage with the open source community, take it. You will learn a lot about programming, and even more about working as a team. What's more, you'll get a chance to contribute to something you care about.
But take it from me: The first time you suggest a change, do it gently and with a little humility.