¿Cómo podemos actualizar la metáfora Catedral contra Bazar para reflejar la Campaña de Steve Yegge?

Nunca he intentado conectar CatB a la plataforma de Yegge. Sus autores también podrían sorprenderse de cualquier conexión. Estaban escribiendo sobre equipos de software muy diferentes, resolviendo diferentes problemas en diferentes momentos.

El mundo del software de mediados y finales de los 90, que produjo “La catedral y el bazar”, fue un momento diferente. Todo parecía posible para el código abierto. Parecía mejorar a pasos agigantados ante sus propios ojos, hasta el punto de que Linux, Apache o MySQL de este año fue mucho mejor (más rápido, más estable, más capaz) que el año pasado, como para parecer un tipo completamente diferente de cosa. Mientras tanto, el software comercial parecía dormido; En el año que separó esas dos versiones incomparables de MySQL, Oracle literalmente podría no haber cambiado en absoluto. Extrapolando estas tasas de crecimiento incluso unos pocos años, concluiría que el software de código abierto estaba destinado a dominar, pronto y con fuerza.

En retrospectiva, gran parte de este efecto fue solo vigor juvenil. Al estudiar el crecimiento de un niño pequeño, no llegamos a la conclusión de que el niño tendrá 100 pies de altura en diez años. El código abierto estaba experimentando una fase temprana de mejora insostenible y explosiva, recogiendo fruta que los sistemas de código cerrado habían comido años atrás. En las áreas técnicas que soy más competente para juzgar (sistemas operativos, virtualización), el código abierto generalmente retrasó el trabajo comercial por al menos un par de años. Por ejemplo, si bien Linux tenía una gran cantidad de buenas ideas de UNIX industrial para prestar, mejoró tan rápido como se pudieron aplicar las ideas. Una vez que obtuvo Pareto lo suficientemente bueno en comparación con Solaris en algún momento en 2006, más o menos, desaceleró a aproximadamente la tasa media de mejora de sus núcleos pares. Mientras tanto, MacOS se ha dado cuenta de los sueños colectivos de Linux de ser un UNIX que a la gente normal le importa, aunque lo hizo desde la más “catedral” de todos los entornos imaginables.

Sin embargo, no atribuiría toda la promesa de código abierto a tener que seguir pasos. Tenía una ventaja estructural de la que carecía su competencia de fuente cerrada: no, afirmo, el caótico mercado de ideas que lo creó (la tesis de CatB), sino un breve circuito de retroalimentación que conecta a los usuarios con los desarrolladores. Supongamos que un usuario tiene una idea prometedora para MS Windows hoy. Incluso si el propio Steven Sinofsky se está moviendo un poco para ver esta idea en MS Windows, lo más pronto que esa idea saldrá a la luz será a fines de 2014. Para entonces, la idea puede haberse vuelto irrelevante debido a razones tecnológicas o comerciales, o el las personas que implementan la idea pueden malinterpretar sutilmente o implementarla mal, etc. Ahora debemos esperar la próxima llegada del cometa Halley antes de que podamos ver si la promesa de esta simple idea realmente se cumple.

Las grandes empresas web han logrado esta ventaja dinámica sin (necesariamente) abrir el software involucrado. Al ejecutar el software en el equipo que controlan, pueden reaccionar ante las oportunidades y las amenazas competitivas sin imprimir CD, guardarlos en cajas, llevarlos a las tiendas y de alguna manera atraer a los usuarios perfectamente felices a actualizar. La instrumentación le dice a los desarrolladores si la característica es valiosa o no, y en qué medida, en tiempo real y con significación estadística. Los experimentos completos tienen un comienzo, una mitad y un final durante un par de semanas. Incluso las piezas de software técnicamente complejas se pueden probar con fuego tan pronto como un prototipo en funcionamiento pueda mantenerse en producción. Esta capacidad de probar ideas rápidamente, incluso si las ideas mismas son imperfectas, fue el motor real que impulsó el código abierto a fines de los años 90. También es la razón por la que cada vez más software que realmente le importa a la gente ha llegado a ejecutarse en el lado del servidor, entregado a través de Internet a navegadores web o aplicaciones cliente.

La apertura de la fuente y la caótica libertad para todos que condujeron a su desarrollo fueron incidentales. De hecho, estoy absolutamente seguro de que hoy, los proyectos insignia de código abierto se mueven más lentamente que Facebook internamente. El drama de la lista de correo, las luchas de fuego, las crisis de horquillas y el cambio de bicicletas requieren tiempo y energía, y los proyectos de código abierto más exitosos terminan generando este espectáculo secundario (sin culpa de los proyectos o sus líderes, podría agregar). No todos los ingenieros de Facebook son santos ni nada, y ciertamente he estado involucrado en mi parte justa de argumentos de diseño acalorados. Pero más allá de cierto punto, los argumentos en Facebook se resuelven en código, y la realidad decide. Esto es difícil de hacer en un entorno donde el código es de propiedad comunitaria.

Vincular esto a la plataforma de observación de Yegge, las plataformas o SoA, o lo que sea, son solo la versión interna de la compañía de esta misma dinámica. Facebook puede cambiar su software cuando lo desee, porque los usuarios usan su software a través de un número limitado de canales estructurados: la web, la aplicación para iPhone, la API de conexión, etc. Debido a la organización técnica interna de Facebook, los back-end para búsqueda, suministro de noticias , los anuncios, así como los sistemas horizontales de nivel inferior que admiten estas capas superiores, pueden trasplantarse sin coordinarse con otros equipos. Estos componentes interactúan con el resto de las entrañas de Facebook a través de canales estrechos y bien definidos. Cuando su empresa crezca lo suficiente, no tener una organización interna que refleje fractalmente la organización de Internet en sí misma le impedirá moverse rápidamente; Las versiones internas del problema de lanzamiento de Microsoft Windows comienzan a acumularse, donde lleva un año sacar algo que realmente funciona con todo. (Y honestamente: tomaría la caracterización de Yegge de Facebook como una especie de Ultimate Platform Company con un grano de sal. No practicamos todo lo que predicamos. Y Google es demasiado grande y bueno como para no tener mucho bien) -Organizados órganos internos, también.)

En resumen: la velocidad de iteración triunfa sobre todo. Cuando el software de código abierto / bazar producido fue el rey de la velocidad de iteración, fue el software que mejoró más rápido en la tierra. Ahora que las compañías que ejecutan software en el lado del servidor pueden moverse más rápido, tienen más éxito, independientemente de la naturaleza abierta / cerrada, catedrática / bazariana de los entornos internos de esas compañías.

(No estoy hablando por mi empleador).

La Catedral : entras y contemplas la obra inmortal de artesanos inspirados en Dios. Y no toques los tapices, por favor.

El Bazar : un entorno complejo, dinámico, creativo-destructivo. En realidad, hay reglas y razones sobre cómo funciona todo, pero se necesita algo de dominio para poder verlos.

Entonces, para otra metáfora basada en la ciudad para describir plataformas, me gustaría proponer la Biblioteca. Al igual que la Catedral, está allí para ser admirado, pero también está allí para ser utilizado. Si en realidad nadie lo usa sino solo boquiabiertos en el paisaje, ha fallado como biblioteca y es realmente una catedral. Un erudito que trabaje en la biblioteca podría incluso obtener su propio trabajo en los estantes oficiales algún día.

También encaja perfectamente con el significado de “biblioteca” en la programación, es decir, una API.

No necesitamos hacerlo, ya que no se superponen.

La Catedral y el Bazar trata sobre diferentes metodologías de desarrollo. La Catedral es un modelo cerrado de baja iteración y el Bazar es un modelo abierto de alta iteración.

Mientras que la filosofía de plataforma vs producto se trata de la arquitectura de lo que construyes.

Usando un modelo de catedral, puede crear algo basado en la plataforma (como Amazon), o puede crear algo basado en el producto (como Google). Del mismo modo, puede crear una plataforma o un producto utilizando un modelo de código abierto (Bazar).

More Interesting

¿Cuáles son las tres primeras cosas que harías para hacer la transición de un equipo de desarrollo a la práctica de scrum?

¿Qué tan bien te preparó Hack Reactor en términos de profesionalismo y trabajo como parte de un equipo de ingeniería de software? Al graduarse, ¿deseaba más tiempo en el programa?

¿De qué maneras puedo conseguir que un mentor se convierta en desarrollador de software?

Si la India se convierte en un país desarrollado, ¿pueden los ingenieros de software obtener el mismo salario que ahora los Estados Unidos y otros países?

¿Es posible escribir software con una máquina de estado usando la programación funcional? Como la programación funcional no tiene estado, la respuesta debería ser intuitivamente imposible.

¿Los programadores experimentados 'visualizan' un programa y la ejecución de sus partes?

¿Cómo convertir una pasantía en un trabajo a tiempo completo en empresas de software? ¿Hay algún truco?

¿Qué programa sería más beneficioso en términos de trabajo y salario, informática o ingeniería de software?

¿Cómo es la cultura de ingeniería en la empresa X diferente de la empresa Y? (Inserte cualquier nombre de compañía, por ejemplo, X = Google e Y = Dropbox)

¿Hasta qué punto ser un recluso en mi empresa afectará mi carrera como ingeniero de software?

Para un programador promedio, ¿en cuántos lenguajes de programación debería ser muy competente?

¿Cuál es la diferencia entre trabajar en una empresa impulsada por la tecnología donde "el software es el producto" frente a una en la que "el software es visto como un centro de soporte más"?

¿Qué libros deben evitar los ingenieros de software?

¿Hay algún buen trabajo para las pruebas de software para un tipo que tiene 1 año de experiencia?

¿Cómo es poder codificar pero no conocer algoritmos o estructuras de datos?