¿Es C ++ una buena idea para crear una startup tecnológica?

Si ya está trabajando con C ++ y tiene un equipo usándolo, ¿por qué no? Pero si recién estaba comenzando y aún no ha creado su Producto mínimo viable (MVP), es posible que desee considerar otros idiomas más adecuados para la creación rápida de prototipos, y solo cambie a idiomas más orientados al rendimiento una vez que Hemos descubierto cómo se verá su producto con algún nivel de detalle y dónde se encuentran los cuellos de botella de rendimiento.

C ++ y otros lenguajes compilados son más difíciles de soportar que lenguajes como Java o Python, ya que tiene que soportar diferentes compilaciones e instalaciones para diferentes plataformas, y necesita una infraestructura de prueba mucho más compleja que la que necesitaría para un lenguaje independiente de la plataforma como Java. Esta sería una preocupación particularmente grande en cualquier producto que venda como una solución local frente a algún tipo de software basado en clould como solución de servicio, ya que probar docenas de combinaciones de plataformas (versiones de SO / hardware / etc.) puede convertirse rápidamente en un gran dolor.

Además, dado que está hablando de API de terceros, debe tener en cuenta que C ++ no lo ayudará a interactuar con ellos mucho más rápido que algo como Java, ya que la red lo bloqueará mucho más de lo que lo hará. procesamiento local si su producto está orientado a algún tipo de consulta o agregación de API de terceros, especialmente si está tratando de ser en tiempo real en lugar de consultar algún tipo de almacenamiento local.

Dicho esto, hay situaciones en las que se requieren lenguajes de alto rendimiento como C ++ o una buena C a la antigua, especialmente si está procesando grandes cantidades de datos almacenados localmente. Pero incluso allí, a menudo puede usar un lenguaje de rendimiento para partes de la pila de software que lo necesitan y otros lenguajes más flexibles para los “bordes” de su mundo.

¡Optimización prematura y todo eso! Me encanta C ++, pero cuando eres una startup necesitas iterar a través de muchos prototipos funcionales y es poco probable que C ++ sea la mejor solución para esas circunstancias.

Si tiene objetivos claros de rendimiento / capacidad justificados, lo primero que debe hacer es crear un banco de pruebas de capacidad que ejerza su servicio de manera automatizada para garantizar que cumpla con esos requisitos. Recomiendo Tsung como un gran conjunto de pruebas de carga / rendimiento / capacidad. Está escrito en Erlang, escala como loco, y ofrece un excelente análisis en tiempo real junto con estadísticas de los recursos de sus servidores para que pueda identificar los cuellos de botella.

Probablemente construiría los servicios con Python 3 usando sus bibliotecas asíncronas io que son bastante efectivas y muy rápidas para desarrollar sistemas de trabajo. Si realmente puede usar cualquier tecnología, consideraría seriamente Elixir (nuevamente se ejecuta en Erlang VM pero un lenguaje mucho más accesible) si puede pensar en un estilo funcional y concurrencia de modelo de actor. Hecho correctamente, el código Python es efectivamente un pseudocódigo ejecutable y el código Elixir es especificaciones de características ejecutables. Desea que su código se acerque lo más posible a sus requisitos de diseño.

Su objetivo constante debe ser eliminar la complejidad siempre que sea posible y el uso correcto de estos lenguajes le ayudará a llegar allí.

Si encuentra aspectos de su sistema vinculados a la CPU que no se pueden implementar fácilmente en esos idiomas lo suficientemente bien como para cumplir con sus requisitos de rendimiento / capacidad (esto es muy poco probable hasta que su negocio necesite escalar), entonces trae C ++ para abordar esos problemas específicos y asegúrese de codificar según la especificación C ++ 14 y aprovechar las últimas bibliotecas de Boost.

Y su base de datos debe ser Postgres 9.5 por cierto, que tiene un increíble soporte JSONB si necesita estructuras más flexibles que esquemas de tabla estrictos.

Cuidado con la optimización prematura.

C ++ es una elección perfecta pero agrega desafíos. Puede tener dificultades para encontrar desarrolladores competentes, pero si tiene el talento adecuado y el problema solo se puede resolver de esta manera, entonces por todos los medios.

Sin embargo, como inversor, examinaría esta opción técnica con gran detalle ya que es una posible señal de alerta. Yo preguntaría:

  1. ¿Es esta realmente la única solución?
  2. ¿El fundador / equipo tiene un punto ciego aquí debido a su capacidad en C ++?

Recuerde que primero está creando un producto, y la gente tiene que quererlo.

No importa lo rápido que sea si nadie quiere usarlo.

A veces.

En mi última puesta en marcha, era la herramienta adecuada para nuestro lado del cliente de la ruta de datos de respaldo en la nube de la empresa, donde entregué hasta 107 veces la velocidad y la capacidad de los competidores, lo que nos permitió tomar cuentas anuales de seis cifras y obtener un flujo de caja positivo. Incluso podríamos hacer una copia de seguridad en la nube más rápido (o ajustar más datos en un objetivo de punto de recuperación dado) que un competidor con copias de seguridad de LAN en su dispositivo de hardware.

No habría sido la herramienta adecuada para la ruta de datos del servidor donde los pequeños cambios en Apache httpd fueron mucho menos esfuerzo que crear un servidor HTTP seguro de alto rendimiento (para permitir descargas del navegador) desde cero.

No habría sido la herramienta adecuada para el front-end del navegador, que debe ser JavaScript o IU web donde C ++ no tiene el marco y las bibliotecas para sobresalir.

Envié otro producto de inicio (la interfaz de red en un servidor de video digital para televisión de difusión amplia) usando C ++, donde facilitó la organización de programas mantenibles mientras cumplía con los requisitos de rendimiento.

Habría ahorrado tiempo y esfuerzo al usarlo para las dos nuevas empresas que construyen el bloque de escalamiento horizontal y el almacenamiento de objetos donde podría haber aprovechado más bibliotecas existentes y entregar productos más rápido. Desde entonces me di cuenta de que cuando contratas a un grupo de programadores de C es mejor enseñarles lo suficiente para sobrevivir que renunciar a los beneficios de C ++.

C ++ no ralentiza el desarrollo cuando es una herramienta adecuada.

Estás loco por usar C ++ si tu equipo no tiene la experiencia requerida en C ++.

Respondiendo que si C ++ es mejor, sí, lo es. Puede hacer muchas cosas por ti. Y eso también increíblemente rápido.

Sin embargo, también debe considerar la capacidad de mantenimiento, la escalabilidad de C ++. En su lugar, buscó otras formas de aumentar el rendimiento de sus consultas, como buena base de datos, infraestructura, mejores consultas, estructuras de datos, etc.

No, excepto que comienza como una consultoría de C ++ (que per se no es un inicio). Las empresas no se crean en torno a la tecnología, sino alrededor de una necesidad junto con una oportunidad. Por ejemplo, todos necesitamos aire para sobrevivir, pero no hay oportunidad de proporcionarlo. Del mismo modo, nadie necesita específicamente C ++, excepto la consulta, mencionada anteriormente, sino un determinado producto. Centrarse en el producto, no en tecnologías específicas.

Es para que usted decida, ya que es usted quien sabe lo que se necesita hacer. La gente dice que no a C ++ debido a la experiencia requerida en el lenguaje y al tiempo que puede llevar implementar el producto. Esa es solo una de mis perspectivas.

La mayoría de las nuevas empresas requieren que su producto salga al mercado rápidamente. La optimización y el escalado prematuros no son buenos cuando presenta un producto y no tiene idea de cómo resultará hasta que llegue al mercado. Es posible que haya pasado meses escribiendo algo en C ++, mientras que podría haberse hecho en semanas en Python y, sin embargo, en el lanzamiento solo para enfrentar reveses y fallas, ahora necesita cambiar muchas cosas y puede resultar difícil. ¿Quién está en problemas ahora?

En cuanto a la velocidad y el rendimiento, una vez más, ahora tenemos recursos de alto rendimiento a un precio económico, algo escrito en Python bien puede servir el trabajo sin problemas. Como dije anteriormente, inicialmente, el enfoque debe estar en sacar el producto y su base de clientes puede no ser enorme, después de todo no necesitará c ++.

Supongamos que si está intentando sacar un producto cuyas versiones similares existen pero está intentando sacar una versión optimizada, ligera y más rápida y la única solución es c ++, entonces no tiene más remedio que c ++.

Así que, en general, depende básicamente de lo que planeas hacer.

En la mayoría de los casos, la arquitectura y la elección de la base de datos tendrán un impacto mucho mayor en el rendimiento que la elección del lenguaje del lado del servidor.

Yo mismo estoy tratando de desarrollar algo en C ++. Pero esto es porque eso es con lo que me siento más cómodo, no porque sea rápido.

C ++ es una de las opciones perfectas si le preocupa el rendimiento. Pero está buscando ejecutar las consultas en lugar de ejecutar algunos algoritmos complejos que requieren mucho tiempo.

C ++ no agregará ningún valor al ejecutar una consulta más rápido. El rendimiento no solo depende de la tecnología de programación que utilizamos. Se trata de cuán eficazmente diseñamos y con características únicas disponibles en el idioma elegido. Podemos escribir un programa que funcione lentamente con un mal diseño en C ++ y lograr el mejor resultado en VB con un buen diseño también.

Acepto que eres bueno en el diseño de tu software en C ++. Como mencionó, que su restricción principal es ejecutar los requisitos más rápido, sugeriría elegir el mejor servidor de base de datos con excelente capacidad de almacenamiento en caché y muy buenos controladores de conexión db que también admiten la optimización de las consultas, la gestión de la caché y mejores ejecuciones de consultas paralelas .

También deberá encargarse de la optimización de consultas y los buenos diseños de tablas a su nivel.

Después de ocuparse de todo esto, no importa si usa C ++ o JAVA o nodeJS o las últimas tecnologías de servidor para su aplicación, obtendrá el mejor software de rendimiento. Con mi experiencia personal, para una startup, sugiero ir a JAVA, que es más flexible para el cambio de diseño, la solución rápida de problemas y el desarrollo rápido de características, que es más importante para el tiempo de comercialización.

Además, tenga en cuenta mi punto, si siente que (después del análisis de rendimiento con otros lenguajes equivalentes) C ++ agrega valor a su rendimiento, no se preocupe por usar eso. ¡Adelante!

Además, no necesita apegarse a un idioma, parte compleja central que puede desarrollar en c ++ y convertirlo en dll / biblioteca compartida, luego puede usarlo también en lenguaje de programación web.

¡Todo lo mejor!

C ++ en sí mismo ciertamente no es una buena idea para crear una startup tecnológica. C ++ es uno de los muchos lenguajes no muertos que la historia ha relegado a un pequeño nicho. Dicho esto, hay algunas situaciones muy específicas en las que C ++ sigue siendo la herramienta adecuada para el trabajo.

> Tengo una nueva startup tecnológica y estamos usando C ++ porque necesitamos rendimiento para atender consultas de menos de 10 ms

Eso realmente hace sonar las alarmas para mí. Elegir C ++ paralizará toda su solución, por lo que será mejor que tenga buenas razones para elegir C ++. El último servidor tolerante a fallas que escribí atendió la mayoría de las consultas en menos de 0.114 ms y fue escrito completamente en código F # de alto nivel en .NET. Eso es casi dos órdenes de magnitud más rápido de lo que pretendes lograr.

¿Por qué sus requisitos de rendimiento son tan moderados y por qué utiliza requisitos de rendimiento muy moderados para justificar la elección de C ++?

Probablemente sea porque no saben de qué se trata el C ++ moderno. Si bien las tendencias van y vienen (Java como plataforma de back-end, luego fue Ruby on rails y django y finalmente node.js) C ++ siempre estuvo ahí como opciones confiables, estables y robustas con décadas de conocimiento y experiencia. Si alguien te dice que estás loco por elegir C ++, pregúntales exactamente cómo Google y Facebook eligieron C ++ como uno de sus principales lenguajes de desarrollo.

More Interesting

¿Cuánto tiempo se considera una empresa como una startup? ¿Es el momento, los ingresos o el tamaño?

¿Cuál es mejor, construir startup o trabajar duro para convertirse en un operador de forex?

¿Exportar pescado es un buen negocio?

¿Cuáles son algunas oportunidades de negocio para iniciarse en la India rural, principalmente Rajastán?

Cómo comenzar un negocio con $ 5

¿Cómo puedo iniciar mi empresa de desarrollo de sitios web?

Cómo encontrar la energía para construir un negocio paralelo en línea fuera de mi trabajo diario, cuando me levanto a las 6 a.m. y llego a casa a las 6:30 p.m.

¿Es posible comenzar una startup exitosa casi sin dinero?

Me ofrecieron $ 450000 por el 40 por ciento del capital para mi inicio en la etapa de desarrollo. ¿Debo tomarlo?

¿Cuáles son las cosas más importantes que busca un fondo de capital de riesgo más fuerte en un negocio de inicio?

¿De qué manera las innovaciones introducidas por Salesforce.com se ajustan al "Dilema de los innovadores"?

¿Cómo debo contratar nuevos desarrolladores como un fundador no técnico?

¿Alguna idea de inicio en mecánica?

Tengo una idea increíble para la que me gustaría comenzar una campaña de Kickstarter. Pero quiero asegurarme de hacerlo bien. ¿Cuáles son los elementos esenciales de una exitosa campaña de Kickstarter? ¿Hay equipos profesionales que pueden hacerlo mejor?

¿Se financian las ideas? ¿Cuáles son los parámetros que los inversores buscan antes de hacer una llamada?