¿Las empresas crean primero API y luego productos sobre ellas?

¡Depende!

He hecho las dos cosas. Definitivamente es difícil agregar uno más tarde, y especialmente más difícil hacer la transición de su propio producto para usar su propia API, ya que puede no haber un gran incentivo para reescribir el código de trabajo. Pero toma un poco más de tiempo diseñar / construir una API que usted sabe que debe funcionar para uso externo.

Si está comenzando un nuevo proyecto hoy, definitivamente recomendaría el enfoque de API primero. Aunque “primero” no es realmente la palabra correcta, ya que en realidad la API debe construirse al mismo tiempo que el producto en sí mismo para que pueda evolucionar adecuadamente a medida que evolucionan las necesidades del producto.

Cuando comenzamos a construir el software de comunicación de ventas Close.io, decidimos hacerlo bien: construir nuestro producto completamente sobre una API que estaba lista para el consumo público desde el principio. Fue una gran decisión y dio como resultado abstracciones limpias, así como una API que nuestros clientes pueden usar muy bien. Lea más sobre esa decisión aquí: la pila tecnológica detrás del software de comunicación de ventas Close.io

Construye el producto primero. El mayor riesgo en el desarrollo de software no es que su código no funcione o esté mal estructurado (aunque es un riesgo sustancial), sino que su producto de software no abordará las necesidades comerciales de manera adecuada.

De todos modos, las API que se diseñan antes de construir un producto tienen la costumbre de estar equivocadas. Es mejor gastar ese esfuerzo en desarrollar un sistema que brinde valor y luego refactorizar las API “limpias” si es necesario.

Siempre que haya creado un sistema con componentes que tengan una buena separación de responsabilidades, que estén acoplados de forma flexible, sean coherentes y estén bien cubiertos con pruebas automatizadas, su sistema estará listo para tener una API extraída cuando realmente la necesite.

Hoy en día, diría que la respuesta a eso es generalmente sí, aunque no del modo en que probablemente piensas.

Si mantiene una buena práctica de ingeniería y mantiene un sólido enfoque MVC para construir su producto, entonces es probable que haya creado algún tipo de “capa de acción” que no tiene acceso directo a los datos de su aplicación pero que tampoco lo es t directamente expuesto en la propia aplicación. Esto es especialmente cierto para las aplicaciones que comienzan en una plataforma y se expanden a otra (piense en cosas que comienzan como aplicaciones web pero que eventualmente tienen aplicaciones para iOS).

La esperanza es que la “capa de acción” que ha creado esté organizada modularmente junto con las convenciones que tiene en su aplicación. Si ese es el caso, entonces crear una API es solo una cuestión de exponer los puntos finales a esa “capa de acción” a la que se puede acceder como servicios web (pero tampoco es una hazaña …).

Dado que hay una demanda tan alta de aplicaciones que son multiplataforma en estos días, diría que la tendencia es construir aplicaciones que hayan expuesto fácilmente las API desde el principio.

More Interesting

Soy un ingeniero eléctrico. ¿Cuáles son los programas de computadora que debo aprender para poder obtener un trabajo decente en la industria del software?

¿Puedo escribir Er? oficialmente antes de mi nombre en los documentos?

¿Qué es exactamente la complejidad ciclomática?

¿Es 'no hay documentación mínima' un mito en Scrum? ¿Realmente podemos entregar proyectos sin una cantidad suficiente de documentación para auditorías y referencias futuras?

¿Cuáles son las cosas que realmente le gustan y las mejores prácticas en herramientas específicas de gestión de información y software de productividad?

¿Debo obtener un título en informática si quiero ser programador?

¿Puede el software de reconocimiento de fotos identificar un estilo (p. Ej., Urbano, preppy, chic, etc.)?

¿Dónde puedo encontrar una buena plantilla para probar el software? ¿Usted tiene alguna?

¿Cómo es trabajar en un equipo técnico que abarca varios países?

El desarrollo ágil de software me recuerda a una línea de producción moderna que destruye almas. ¿Me equivoco?

¿Crees que el mercado para construir y vender aplicaciones de software está saturado?

¿Cómo realizan las empresas como salesforce.com pruebas de carga / rendimiento?

¿Cuál es el tema más candente en la automatización de procesos robóticos?

¿Por qué lleva tanto tiempo incorporar la ley en nuestros automóviles, teléfonos y software en general? ¿Y qué industria se beneficiará más del impacto inmediato de conocer la ley en el punto de toma de decisiones?

¿Qué función cumplen los analistas de garantía de calidad de software?