Quiero mejorar mis habilidades de programación estudiando famosos proyectos de código abierto, pero creo que es fácil perderse simplemente saltando a su código fuente.
Así que decidí leer su documentación sobre su diseño o arquitectura (como los diagramas UML) para tener una idea general sobre la organización de su código primero. Sin embargo, para mi sorpresa, no puedo encontrar ninguna documentación arquitectónica para grandes proyectos de código abierto como Hibernate, Spring, ASP.NET MVC, Rails, etc.
Así que comencé a preguntarme: ¿cómo puede un proyecto de código abierto tener éxito si los desarrolladores recién llegados no tienen documentación arquitectónica / de diseño para leer, o si el gerente del proyecto acaba de abrir el código fuente pero cerró su documentación?
fuente
Respuestas:
Se asume invariablemente que sabes lo que estás haciendo y tienes una comprensión razonablemente íntima de lo que vas a ver (y lo que esperas).
Si examina el código PHP del marco de Symfony, por ejemplo, se espera que ya sepa sobre la inyección de dependencia, los eventos, el modelo / vista / patrón del controlador, etc.
Del mismo modo, si se sumerge en el código C del kernel de Linux, se supone que será realmente competente en modularidad, señales, procesos, subprocesos y demás. También se espera que tenga la habilidad de comer hexadecimal todo el día y excavar a través de vertederos con una pala gigante.
Los encargados del mantenimiento no pasarán por la molestia de documentar la arquitectura porque es una cuestión de hecho. En ocasiones, encontrará un resumen de lo que se encuentra en el árbol de origen. Sin embargo, más típicamente, la forma en que se organiza el árbol fuente hace que las cosas se expliquen por sí mismas.
En resumen, si carece de alguna de las habilidades que los encargados del mantenimiento esperarán que usted conozca para cuando eche un vistazo a su código, probablemente esté investigando cosas que están muy por encima de su nivel salarial. Familiarícese primero con los conceptos: ¿cuál es el modelo MVC? ¿Qué es la inyección de dependencia? Etc. Luego bucear.
fuente
La mayoría de los proyectos exitosos de código abierto tuvieron éxito porque, ante todo, el programa fue impresionante o hizo algo que ningún otro programa podía hacer en ese momento. Eso no significa necesariamente que la fuente esté bien documentada, ya que los programadores que comenzaron el proyecto para comenzar conocen el código lo suficientemente bien como para no necesitarlo. Es una realidad desafortunada que los proyectos de código abierto no tengan que estar bien documentados. Tiene que ser un buen programa o ser un programa mediocre pero bien documentado para que los programadores expresen interés en él.
fuente
Debido a que los desarrolladores de código abierto generalmente tienen talento y también eligen proyectos en su área de experiencia, ya tienen "documentación" dentro de sus cráneos. Con poca exageración, solo se necesita documentación exhaustiva si no tiene alguno de estos: o)
Para ser honesto, realmente no leo "documentación" cuando enfrento código base desconocido. ¡Una introducción rápida, tal vez algunos bocetos conceptuales y directamente al código! Experimente, pruebe pequeños cambios. Funciona perfectamente para un código bien diseñado. Si me enfrento a un desastre horrible, entonces la mejor manera de aprenderlos es refactorizar poco a poco para mejorar la claridad (idealmente con la ayuda de pruebas unitarias).
Una razón adicional podría ser la simple raíz del diseño orgánico de estos proyectos. La arquitectura es, entonces, una visión más evolucionada en la mente de los desarrolladores que una entidad declarada "documentada".
fuente
La razón por la que tales documentos a menudo no existen es bastante simple: a los programadores les gusta programar, no escribir documentación. Especialmente con proyectos de código abierto, que los desarrolladores a menudo contribuyen durante su tiempo libre / libre.
Básicamente, escribir documentación no es divertido. Y si no les pagan, ¿quién quiere pasar su tiempo libre haciendo algo que no sea divertido?
fuente