When talking about development I mostly mean personal and educational development. So this post is not about a new fancy way of writing software.
Why Community
I personally felt the power of a community on my way to the position I’m currently at. I started working with zero practical experience at small company in Germany. It was a good way to get into the business, but very soon I realized, that there is an other world out there. So I started experimenting with Symfony. At the same time I heard a conference talk by Lukas about the Symfony CMF. As content management was my daily business, I tried to dig into that Content Management Framework. I admit, I couldn’t understand how it worked. My first attempts on implementing it had been a disaster. But then I started committing to that ecosystem. It had not been my first contribution, but it was the first that ever got merged into something bigger. But that is not the point. While working on my own CMF component and committing to the main packages, I had an impressive learning experience.
When Working on such an project I learned a lot of the internal processes of Symfony. I really had helpful but demanding guys on every review. And indeed I would like to thank David and Wouter. With their help I made my biggest step in my personal development. Instead of declining a pull request, I got a lot of helping words. Those words contained more and better advice than a documentation can ever give.
So I became a core developer of the CMF. Currently I prepare a new major release with the same guys. We are planning to serve before Christmas. And again I learn. I currently don’t work on a Symfony application in my job. But with the work for the community I stay in touch.
Not your Story?
I believe, that not every open source project can bring on the same success, but most of the community driven projects do. Almost every bigger project has got chats, user groups or meetups and sometimes their own conferences. That can be an easy starting point. When using those projects in daily business, you should visit the community one way or the other. You will gain insights you will never get by simply reading documentation. Those visits combined with public speaking is the first contribution to such a project. There is no code or documentation involved yet, but it gives every internal contributor some self confidence. Realizing that one or more people use the code you wrote or contributed to is a really good feeling. Trust me. I stand in front of more than 500 Symfony developers and asked who knows or got in touch with the CMF. And almost the complete crowd raised their hand. I can’t really describe what that did to me. I is absolutely amazing.
Why not starting to commit?
Most often it starts with a bug or missing feature when using an open source project. Instead of ranting you should fork, fix and push. Maybe you realize why that bug had happened or the feature hasn’t been implemented yet. It is easy to yell for a specific behavior of an application or library, but the implementation of it can be more difficult than expected. Libraries used by lots of developers need a special kind of extensibility. Contributing to those libraries is the best way to understanding those concepts. And doing so, it also helps to get aware of the work, that is needed to get a feature on the road.. That said I have to add, that the code isn’t the only possible contribution.
The Documentation often needs some effort. So how often did you say “This isn’t documented well”? Fork, fix and push! Same answer here.
It is open source. It is implemented by a community of moms, dads and other people, who sacrifice their free time. There is no service hotline you can call and shout “I paid a lot of money for that, so it has to work the way I want.”. In my opinion there has to be a kind of compensation. The more you take, the more you should give.
Commit while your job
Yes! You should discuss in you company about a way of contributing to open source projects. It is not only about reinvesting. It is mostly about bringing company’s developers forward. As I described some lines above, I learned so much contributing to open source projects. Employees can too. Instead of spending a lot of money on workshops, get in touch with the community, contribute and learn. It is much cheaper. And what can be better marketing for a company selling experts in Project X, than having contributors to the same project on your team?
Conclusion
There are several ways of learning programming language specific skills, but contributing to and working on open source projects, you will also meet kind people and get a lot more information than just reading documentation.