Every developer dreams of reaching a world class rank. But reaching this rank is not given to everyone unless he/she is working in a big company, and on a big project. Working on small projects limits the horizons of the thoughts and hides much of the big projects complexities and approaches to the solutions.
While books are necessary to learn, they stop short of giving real experience. Books are good for getting started, learning the methodology, the object model and the APIs. No doubt this is a necessary package however it is necessary but not sufficient. No book is able to explain the details of a project and the pros and cons of every technical decision made in the course of the development.
The picture looks somehow dim for those who are not lucky enough to work in giant companies and produce softwares that are used by millions of people.
This is not completely true. There is a way of becoming top notch developer even while working on small projects. The solution exists but it is not free! It costs time and efforts. It is only for people who are passionate about developing.
The large majority of commercial softwares have their code hidden and restricted to the teams that are working on them. But there are also very important open source projects that are accessible to everyone and are used all around the world. These softwares are written by highly skilled engineers either part of their daytime job or on their free time. In both ways, these projects are “gold mines” for developers who are aiming to acquire new skills.
So the solution is to find the right open source project, one that is interesting to the person wanting to learn. Then, try to build the project and start learning the code. At first it looks like a daunting task. It might fail few times, but success comes with persistency and perseverance.
Every open source project has forums and discussion groups, but almost all of them lack complete and clean documentation. So a good approach would be to grasp the overall architecture of the project and all the available documentation that goes around. Then start looking in the code for the following points: – Coding style: it is important to understand how the lines of codes are written because it helps improve readability. – Tips and tricks: every module or sub module of the project brings a solution to a problem. Some are straight forward; others are trickier and utilize an indirect approach. It is crucial to learn these tricks in order to use them when facing similar problems. – Global architecture: while tips and tricks are used on a granular level, the global architecture gives the big picture and discusses the decisions made to solve key problems. It is worth mentioning that there is no single ideal solution, but a solution that fits certain priorities established by the project authors.
After understanding the code or at least part of it, it is important to get involved with the community that is working directly or indirectly on this project. For this reason it is imperative to visit the project forums on regular basis and actively contribute to the discussions. This will increase the understanding of the project and the reasons why some decisions are being taken.
Another major point is to discover bugs and propose solution for them. Many open source projects have policies to allow people to contribute to the project that has a mandatory path that goes through discovering and solving bugs. Once a certain number of bugs and fixes are reached, the person is allowed to become a committer which means contributing to the development of the project. When such a stage is reached, congratulations! You are now a world class developer.