Steve Yegge publica sobre plataforma vs producto [cerrado]

7

Estoy leyendo esto y encontré:

  

La regla de oro de las plataformas, "Eat Your Own Dogfood", se puede reformular como "Comience con una plataforma y luego úsela para todo". No puedes atornillarlo más tarde. Ciertamente, no es fácil, al menos, pregunte a cualquiera que haya trabajado en la plataforma de MS Office. O cualquiera que haya trabajado en la plataforma de Amazon. Si lo retrasas, será diez veces más trabajo que hacerlo correctamente desde el principio. No puedes hacer trampa. No puede tener puertas traseras secretas para que las aplicaciones internas obtengan acceso de prioridad especial, no por NINGUNA razón. Necesitas resolver los problemas difíciles por adelantado.

¿Qué significa eso exactamente? ¿Alguien puede explicar?

    
pregunta sharp_net 13.10.2011 - 04:49

4 respuestas

11

Un punto que está destacando es que, especialmente para cualquier cosa orientada a la web, pero para otros también, se beneficia enormemente al proporcionar una interfaz abierta y programable. Eso no significa una interfaz de usuario con un lenguaje de macros, sino una interfaz de usuario que está más separada del "motor" que hace el trabajo real, y una documentación completa y abierta de cómo la interfaz de usuario se comunica con el motor, por lo que cualquiera puede escribir una nueva interfaz de usuario que usa el motor, complementos para el motor que pueden conectarse sin problemas a su interfaz de usuario, etc.

En resumen, en lugar de crear (o incluso pensar en términos de) productos completos, debe pensar y trabajar principalmente en términos de producir componentes útiles. Esos componentes deben funcionar entre sí de manera limpia, pero eso no es suficiente por sí solo. Las interfaces entre esos componentes deben estar claramente documentadas y definidas, de modo que sean adecuadas para prácticamente cualquier persona que reemplace (por ejemplo) su interfaz de usuario con algo propio, se conecte a su motor y pueda usar su motor al máximo. capacidades, ya que tienen tanto acceso a sus capacidades como cualquier otra persona.

En última instancia, esto no es un cambio dramático con respecto a lo que se ha impulsado durante algún tiempo (por ejemplo, aplicaciones de 3 niveles). La gran diferencia es que a pesar de que están escritas como componentes, la mayoría de las aplicaciones típicas de 3 niveles aún asumen básicamente que todos los componentes en uso se producirán juntos, por lo que todas las interfaces entre ellas son "privadas". En bastantes casos, hay suposiciones implícitas de que un componente no necesita verificar las entradas de otro, porque "sabe" qué entradas puede producir el otro.

Especialmente para servidores orientados a la web y eso, simplemente no es sostenible. En cambio, todas las interfaces deben ser "reforzadas": deben especificarse e implementarse para funcionar en cualquier circunstancia, incluida la posibilidad de que todo lo que esté en el otro lado de la interfaz sea descuidado y desagradable, o incluso un atacante cuidadosamente diseñado.

Visto desde una perspectiva ligeramente diferente, un producto debe permitir la entrada en cualquiera de varios niveles diferentes. Para los usuarios principiantes, debe tener una interfaz de usuario pulida. Para usuarios más avanzados, debería tener algún tipo de programación incorporada para ajustar cosas que no les gustan, automatizar las cosas que hacen con demasiada frecuencia, etc. Finalmente, y lo más importante, debe proporcionar una interfaz de bajo nivel que ofrezca < em> control total de todos los aspectos del "motor" de ese producto. Debe ser exactamente lo que usa para desarrollar su propio código para trabajar con el motor del producto, de modo que cualquier otra persona tenga un acceso tan completo a ese motor como lo hace su propia interfaz de usuario.

    
respondido por el Jerry Coffin 13.10.2011 - 08:09
5

Gracias por el enlace: Steve Yegge debe ser el mejor ranter en Internet en estos días. Y dado que ranting es prácticamente la aplicación asesina de Internet, eso está diciendo algo. A su pregunta:

  

¿Qué significa eso exactamente? ¿Alguien puede explicar?

Uh, leíste la pieza, ¿verdad? Lo hice, y recuerdo que Steve gasta la mayoría (de acuerdo, algunas) de sus pulgadas de columna explicando qué significa ese párrafo. Consulte Comiendo su propia comida para perros para obtener una explicación de la metáfora de la comida para perros, si necesita una explicación.

Más allá de eso, la Gran Idea de la que habla a través de toda la pieza es que hay muchas ventajas en la creación de una plataforma para productos en lugar de un producto único que trata de ser todo para todos. Con una plataforma, puede crear muchos productos diferentes, y puede permitir que otras personas también construyan productos en su plataforma, y de esa manera puede servir mejor a sus clientes e incluso permitirles usar sus cosas para servir. sí mismos. Pero , no funciona si no te comprometes con la plataforma; no funciona si usted no usa la plataforma, o si la usa, pero también tiene algunas herramientas adicionales para uso interno.

Agregando mis propios 2 centavos, de lo que habla es muy parecido a la diferencia entre diseño de arriba hacia abajo y de abajo hacia arriba. De arriba a abajo: sueña con un producto y luego establece todas las cosas que ese producto podrá hacer, y luego construye ese producto. De abajo a arriba: usted sueña con un producto, pero en lugar de tratar de determinar cada pequeña característica por adelantado, en cambio, crea una serie de partes que puede combinar de todas las formas posibles para llegar a algo como el producto que imaginó. en primer lugar, pero en el camino también podrías usar esas mismas herramientas para crear un montón de otras cosas en las que nunca pensaste.

    
respondido por el Caleb 13.10.2011 - 07:59
5

Use su propio software: es la mejor manera de probarlo y perfeccionarlo.

Una "plataforma" es este artículo que se refiere a una pieza de software que otras personas pueden usar para hacer que sus propios programas funcionen. Por ejemplo, Facebook es la "plataforma" que Zynga usó para hacer que "Farmville" funcione.

Windows también es una plataforma, porque otros programas (Word, Chrome, World of Warcraft) lo usan para funcionar.

El artículo hace la distinción entre una "plataforma" y un "producto". Un producto es también una pieza de software, pero es "independiente": es algo que la gente usará, pero no es algo que los creadores de software puedan "extender" escribiendo software que lo use. La mayoría de los programas que se ejecutan en Windows son productos en este sentido en lugar de plataformas.

La crítica más grande en este artículo es contra Google+, que es un producto brillante (para mí) (como en Me encanta usarlo) pero no es una buena plataforma porque no expone una API o servicio que otros programadores pueden utilizar. Por ejemplo: Google Reader no puede ver y publicar fácilmente en Google+; Flipboard (aplicación ipad) no puede ver ni publicar en Google+.

    
respondido por el Robert Mark Bram 13.10.2011 - 08:21
0

Creo que está diciendo: "Usa la misma interfaz que le estás dando al mundo exterior". La interfaz que le dé a sus propios programadores va a ser buena (con suerte porque un programador creará una interfaz que le gustaría usar). Si tiene una interfaz interna diferente de la que tiene externamente, entonces faltará la interfaz externa, ya que las personas que la usan no pueden cambiarla para mejor.

De esa manera, nadie usará su plataforma porque será imposible de usar. No podrán obtener la información de la plataforma que necesitan. Están relegados a ciudadanos de segunda clase y los terceros irán a algún lugar donde sean tratados bien.

    
respondido por el jsternberg 13.10.2011 - 06:26

Lea otras preguntas en las etiquetas