In a perfect world every apprentice would have a perfect tutor. All the time. An apprentice would always be able to learn from great masters and journeymen under favorable conditions, they would have time and communicate well and learn from one another. The apprentice would offer enthusiasm and freshness, and the teachers would bring perspective and knowledge and best practices and even wisdom.
In the real world it’s much more chaotic. Our paths sometimes cross, sometimes they don’t, sometimes we have time, sometimes just issues and deadlines, but we always have the code.
We always have the code, and the code will guide us.
The code has always taught me something. Bad code lets me learn from its errors, good code from its elegance and efficiency. I travel through its lines, explore its streets, squares, cities, towns. It sometimes feels like living inside the code, I can really see it all around me. When I started programming, I thought that reading other people’s source code would be the hard part, but it wasn’t. When it comes to full immersion, you just do it, and don’t look back. You just learn. You just swim. Not always perfectly, mistakes are inevitable, but you do.
And I have only just started to explore. I have many more open source projects to take part in, functions and methods to invoke, classes to create and subclass. I wish I had used Google Code Search more before they closed it (anyone know of anything similar?).
No matter what the future brings, one thing is certain : I will keep learning. And knowledge is something no one can take away from you.
Does this mean it is OK to treat people with a “Read The F* Source Code” and “It’s all in the code, don’t ask questions” attitude? No it’s not OK. Reading the code is no substitute for communication, commenting or documentation.
But at least I know I will always have a great teacher, with an infinity of things to teach me, and that is the source code of all the free and open software out there. Thank you all for sharing.