5 formas de corregir la entropía del software para empresas emergentes
Publicado: 2019-01-21Las startups agotan la mayor parte de sus recursos para llegar al mercado lo antes posible
La buena calidad requiere una gran cantidad de tiempo y costo para lograrla, y aquí es donde la mayoría de las empresas emergentes sufren
Escriba y reescriba una parte integral del código y acostúmbrese a hacerlo a medida que avanza
“Una 'startup' es una empresa que está confundida acerca de: 1. Cuál es su producto, 2. Quiénes son sus clientes 3. Cómo ganar dinero”. – Dave McClure, Fundador de 500 Startups
Durante su viaje, una startup tecnológica tiene tres palancas de éxito: costo, velocidad y calidad.
Desafortunadamente, solo puede elegir dos a la vez. Entonces, si elige velocidad y costo, es posible que deba sacrificar la calidad. O, si elige velocidad y calidad, es probable que le cueste millones. Esta elección de dos sobre tres conduce a la entropía del software, que es un caso de “lo que está hecho no se puede deshacer”, como dice Lady Macbeth, o en términos tecnológicos, dirías, “En un sistema cerrado como la tecnología de software, un la calidad de agotamiento del producto no se puede mejorar durante un período de tiempo”.
Discutiremos más sobre la entropía del software, los factores que conducen a ella y las posibles soluciones. Antes de eso, es importante comprender qué conduce a la entropía del software.
Tres palancas de startups
Velocidad
Una vez que te sumerges en las aguas de las nuevas empresas, te das cuenta de que el tiempo es el recurso más limitado de los tres factores mencionados anteriormente. Hasta que una startup comienza a ver algo de tracción en términos de ingresos, nunca se denomina empresa.
Para hacer el mejor uso de la cantidad de arranque, se lanza un producto rápido generalmente llamado 'versión beta' y, a menudo, de una "calidad moderada" (en comparación con el producto objetivo), para capturar el mercado lo antes posible.
Las empresas emergentes agotan la mayor parte de sus recursos para llegar al mercado lo antes posible, poniendo todos sus esfuerzos en lograr la "velocidad", que en la mayoría de los casos es la palanca más popular de las tres.
Costo
Cuando se compara con el tiempo, el costo es tangible en todos los sentidos. Es el latido del corazón de una startup.
“Solo hay dos prioridades para una startup: ganar el mercado y no quedarse sin efectivo”. – Ben Horowitz
Cuanto mayor sea el saldo en su cuenta, más tiempo sobrevivirá. Durante la fase inicial de una puesta en marcha, la mayoría de los recursos se gastan organizando activos importantes (léase también pasivos) para su organización, como pagar la oficina, los muebles, Internet, los salarios y mucho más.
La mayoría de las veces, las nuevas empresas tienen dificultades para pagar los mejores desarrolladores de la industria debido a las limitaciones presupuestarias. Por lo general, los mejores programadores o altos directivos se dejan para más tarde, con la intención de contratarlos cuando llegue el dinero.
Calidad
El buen trabajo es costoso, el gran trabajo es más costoso y el trabajo de calidad tiene un costo excepcional. La calidad es lo más difícil de conseguir. La buena calidad requiere una gran cantidad de tiempo y costo para lograrla. Y aquí es donde la mayoría de las nuevas empresas sufren.
La mayoría de las nuevas empresas comienzan con fondos limitados y se esfuerzan por obtener ganancias lo antes posible. Su objetivo es estar listos para la producción y vender antes de quedarse sin capital. Hasta que la empresa está en una etapa de crecimiento, un empresario se esfuerza por producir rápidamente y penetrar en el mercado. Esto permite que estas nuevas empresas adquieran participación de mercado y colaboren para aprovechar los comentarios de los clientes.
La mayoría de las empresas comienzan con una 'versión beta' que puede generar algo de tracción y financiar sus requisitos a medida que ascienden en un mercado caracterizado por una fuerte competencia por su producto.
Las empresas emergentes suelen contratar nuevos desarrolladores e ingenieros (pocos tienen el presupuesto para contratar a desarrolladores senior) que entienden sus requisitos, tienen cierto sentido del desarrollo y pueden crear el producto con la menor cantidad de recursos. Y sin duda, estos desarrolladores tienen un costo menor. Son fáciles de moldear y, a menudo, pueden trabajar en turnos impares.
Raghav Chandra, cofundador/CTO, Urbanclap, dice
“La calidad a menudo se ve como un compromiso entre la velocidad (sprints más largos, más escritura/prueba de código, etc.) y el costo (más ingenieros, infraestructura de mejor calidad, etc.). Sin embargo, en las etapas más jóvenes, la buena calidad es un gran impulso para la velocidad y el costo.
La calidad tiene múltiples aspectos: es el diseño arquitectónico (!= infra) el que juega el mayor apalancamiento en los primeros días.
La mayor pérdida de tiempo ocurre al encontrar errores (pasando por la cadena de llamadas) o al crear funciones en un código mal diseñado, ambos productos de una mala segregación y mantenimiento del software”.
A medida que la empresa comienza a crecer y obtener ganancias, aparece el requisito de construir un producto estable. La versión anterior del producto creado debe mejorarse y los códigos deben volver a trabajarse.
A medida que los clientes comienzan a aparecer, la calidad pronto se convierte en una prioridad. Para mejorar esta cualidad, se incorpora al equipo un empleado con más experiencia y mejor conocimiento del mercado. Los desarrolladores senior que tienen un costo mayor son contratados para trabajar en el producto existente. Estos desarrolladores dedican la mayor parte de su tiempo a mejorar líneas de código antiguas y, al mismo tiempo, desarrollan rápidamente funciones nuevas y de alta calidad.
Al arreglar viejas líneas de código para desarrollar nuevas funciones, la mayoría de los desarrolladores luchan por obtener el resultado deseado. Pero a medida que pasan los meses, y con todo el esfuerzo de los equipos por mejorar un producto, la calidad se niega a mejorar.
Este factor se denomina entropía del software .
¿Qué es la entropía del software?
Basado en la definición de Wikipedia, con respecto a la segunda ley de la termodinámica en un sistema cerrado (donde no hay entrada ni salida), el desorden no puede reducirse durante un período de tiempo.
Esta ley parece ser relevante incluso en el caso de los sistemas de software; a medida que un sistema se modifica durante un período de tiempo, su desorden solo tiende a aumentar en lugar de disminuir con todo el esfuerzo.
A medida que los nuevos desarrolladores intentan mejorar la pieza de código existente para mejorar la calidad, la calidad del producto se aleja más de los resultados deseados. A medida que se realizan modificaciones para corregir las líneas de código existentes, la "entropía" sigue aumentando, lo que lleva a un código más complejo que es difícil de corregir. Esto a menudo genera frustración entre los desarrolladores e ingenieros de software. La mayoría de las veces, las nuevas empresas en crecimiento toman la ruta difícil de escribir códigos desde cero para corregir esta entropía.
Recomendado para ti:
En el libro The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt y David Thomas escriben:
“La entropía del software es contagiosa y, si no se controla, se convierte en una epidemia”.
Entonces, ¿cómo podemos solucionar el problema y cuáles serían las mejores medidas para contratar a un desarrollador que pueda producir un trabajo de calidad en menos tiempo y presupuesto?
Entonces, ¿deberían las startups centrarse en el costo, la velocidad o la calidad?
Anand Thaker, director ejecutivo y fundador de Intelliphi, dice:
“La calidad del sistema debe alcanzar un umbral mínimo para que no genere dolores de cabeza constantes con la experiencia del usuario”
Hay excepciones donde los sistemas operan operaciones críticas o de vida o muerte.
Durante estas primeras etapas, las nuevas empresas todavía están descubriendo su encaje en el mercado de productos. En un mundo basado en SaaS ruidoso y altamente competitivo, el ajuste del producto al mercado hace o deshace una startup. Además, la dinámica del equipo y el liderazgo del equipo también se encuentran en una etapa de rápido desarrollo. Por esa razón, el lean startup falla rápido y barato es una filosofía sólida. Considérelo el primer desafío de entropía.
A medida que el mercado de productos se solidifica, una startup planifica reconstrucciones de calidad en partes o en toda la plataforma por completo. En este punto, en el futuro, los esfuerzos de calidad que se traducen en mejores experiencias de los clientes impactan en el crecimiento. Un buen crecimiento proporciona una mayor financiación y retención de clientes.
Personalmente, prefiero las empresas emergentes dirigidas por productos y los fundadores de empresas emergentes. Por lo general, las soluciones y la visión son sólidas y su enfoque incorpora resiliencia… y sus salidas y múltiplos son mucho mayores (de 3 a 5 veces más que otras startups típicas). Para este tipo de startups/fundadores, es muy probable que respeten la entropía, sin embargo, incluso su comprensión de las etapas anteriores se trata de velocidad y ajuste para ganar un impulso inicial crítico”.
¿Cómo pueden las startups reducir la entropía del software?
Comience con tecnología mínima
UrbanClap CTO habla sobre el uso de tecnología mínima y reutilizable como "la incapacidad de segregar adecuadamente las preocupaciones, lo que conduce a diseños de equipo malos e inflados y costos de infraestructura demasiado inflados". Para resolverlo bien, la palanca más grande y principal es dominar la cultura del diseño arquitectónico intencional.
- fuerte cultura de revisión del diseño centrada en la modularidad y el diseño intencional para la reutilización
- Marcos sobre pautas: con equipos pequeños, evangelizar las mejores prácticas es un proceso lento. Es mejor "automatizar" las mejores prácticas de los ingenieros que crean marcos y herramientas para estandarizar diferentes piezas de ingeniería".
La mayoría de las empresas emergentes comienzan con una idea determinada y evoluciona durante un período, agregando nuevas ideas, características y, a veces, se convierte en un producto completamente nuevo. Asegúrese de que la tecnología A que usa durante los primeros días de la fundación sea compatible con la tecnología B, que puede fusionarse con la tecnología C, que podría usar en el futuro.
A medida que evoluciona la visión de una empresa, también lo hace el producto, y se introducen (o interrumpen) varias tecnologías durante este viaje. Asegúrese de usar la tecnología mínima hasta que su producto sea estable y esté listo para usar. Optimice su código.
Considere la optimización del código
Escriba y reescriba una parte integral del código y acostúmbrese a hacerlo a medida que avanza. Esto lo ayuda a realizar un seguimiento de todo el código que se activa en el backend de un producto brillante.
Escribir una parte integral del código ayuda a un nuevo empleado a revisar partes importantes antes de enviar una nueva confirmación. Las partes integrales ayudan a diferenciar la parte buena del código de la mala.
Vuelve a revisar las confirmaciones
¿Alguna vez cometió un código? Si no, ponlo en tu lista de deseos.
Es una medida del esfuerzo y el compromiso que los desarrolladores ponen en una organización. El primer código comprometido se celebra en la mayoría de las nuevas empresas. Es hora de volver a verificar estos compromisos. Ni el primero, ni el último, sino todos.
Haga que sea obligatorio que los pares revisen todas las confirmaciones de código para garantizar que no se deje piedra sin remover para obtener el código de mejor calidad.
No olvide las herramientas de evaluación al contratar
Con el tiempo, se dará cuenta de que no puede justificar la mala calidad de los códigos ante sus clientes, echándole la culpa al tiempo y al costo.
El uso de software de evaluación de tecnología desde su primera contratación garantiza que tratará con empleados que entienden sus requisitos y son capaces de producir resultados bajo presión.
Cada contratación incorrecta en una startup cuesta cerca de $ 18,000, desde el salario y los beneficios hasta todos los procesos involucrados en la contratación; lo más importante, las horas de entrevista y evaluación que dedica un pequeño equipo, trabajando en proyectos importantes.
El software de reclutamiento técnico viene con características tales como múltiples lenguajes de programación, creación de pruebas automatizadas e informes detallados de candidatos. Las amplias funciones de plagio ayudan a los equipos a mantenerse libres de la molestia habitual de "estar atentos".
Tareas como 'Proyecto Java' (parte de un proyecto existente que se comparte como una tarea) podrían compartirse con candidatos que trabajan en un entorno de codificación real y cometen códigos reales, lo que brinda una imagen correcta del trabajo que se debe realizar.
Haz tu tarea
Por último, pero no menos importante, haz tu tarea. Siga a personas influyentes, lea libros, conéctese con personas en un campo similar.
Hay muchas personas que han trabajado duro para mejorar la entropía del software en su organización.
Anand Thaker dice,
“El conocimiento y la comunicación son fundamentales para mejorar la entropía. Hemos experimentado entropía cuando hay una salida de un miembro del equipo que tenía un conocimiento profundo de una parte del sistema.
Otra es cuando ciertas partes del software permanecen intactas durante varios meses o años. Asegure revisiones periódicas de esas capacidades y el código/lógica subyacente.
Además, considere establecer un tono/cultura en la filosofía del desarrollo.
La entropía siempre existirá, sin embargo, restringir su crecimiento es un arte. Como líderes técnicos o ejecutivos, es posible que ya lo sepa, pero el desarrollo de software es un proceso disciplinado. Los buenos miembros del equipo se enorgullecen de su trabajo. El reconocimiento de ese esfuerzo por parte de sus compañeros es muy útil”. Hable y discuta los aprendizajes que las personas han aprendido a lo largo del tiempo.
Conclusión
Durante su fase inicial, ¿deberían las startups centrarse en la calidad?
La mala calidad del código ha sido una de las principales razones del fracaso de muchas empresas emergentes. Se ha perdido mucho tiempo, dinero y esfuerzos para mejorarlo durante un período de tiempo. Comentarios simples como 'el código es malo' para 'mejorar esta línea' son mejores que no hacer nada para mejorar el código.
Las startups son un fenómeno económico que abre nuevos caminos y cambia el mundo.
Las sugerencias de Raghav Chandra para las nuevas empresas que sufren de entropía son: “Para los equipos más pequeños, he encontrado una mejor influencia en tener más equipos y mantener la organización plana, donde todos participan.
Como Tech Leads / Managers, es importante preparar al equipo para que "piense" mejor. Los esfuerzos puestos en pensar mejor es lo que ayuda, esto se traduce en menos tiempo para arreglar las cosas más tarde.
Y la lluvia de ideas y el pensamiento profundo antes de la implementación no comprometen el tiempo o el costo; de hecho, es la forma más económica de desarrollar la calidad a nivel del sistema”.
Es hora de que nos preocupemos por la entropía y contratemos a los mejores desarrolladores que puedan ayudar a reducirla en los productos que construimos.