Todas las empresas enfrentan este problema. Es un buen problema tener. Significa que su producto ha tenido éxito y ha crecido con el tiempo. Los productos evolucionan y también el software que los ejecuta. Cuando los productos se encuentran en las primeras etapas, el software debe construirse para la velocidad de comercialización y la validación del producto, no necesariamente escala y mantenimiento. Los requisitos cambian con el tiempo y surgen nuevas tecnologías. Eventualmente, necesitará construir una versión 2 del producto, que podría ser una base de código completamente nueva o la refactorización de componentes principales. Para un producto típico, esperaría que la vida útil del software sea de 2 a 5 años, dependiendo de qué tan rápido crezca el producto. Para dar un ejemplo, un sitio web construido hace 3 años ciertamente no fue construido con dispositivos móviles en mente y será difícil adaptarse a un diseño receptivo. Una infraestructura de back-end que se creó antes de AWS y los servicios en la nube parecería muy difícil de mantener hoy.
¿Qué compañías de software han tenido que reescribir el backend de su producto porque no pudieron mantener / innovar su código existente?
Related Content
¿Cuántos descansos toman los desarrolladores de software y con qué frecuencia?
Cómo hacer un diagrama de flujo de datos para un sistema de gestión de bibliotecas
¿Cuál es la peor característica en cualquier sistema operativo?
¿Cómo se garantiza la calidad del código cuando las revisiones de código tardan demasiado?
Voté la publicación de Dave Hagler. Para agregar algunos ejemplos de juegos:
Rust: su código de interfaz de usuario existente era ‘suficientemente bueno’ en ese momento, pero ahora es difícil / imposible agregar ciertas características importantes. Entonces el código de la IU se está reescribiendo.
EVE en línea: a medida que ampliaron sus características de juego, encontraron una serie de áreas últimamente (por ejemplo, su sistema de seguridad / criminal en el juego, estructuras desplegables, etc.) que han necesitado importantes revisiones de código. A medida que el juego envejecía, los desarrolladores ‘añadieron’ código para implementar nuevas funciones. En cierto punto, esos sistemas se volvieron demasiado complicados de mantener y demasiado difíciles de mejorar, por lo que rediseñaron los sistemas para que fueran más fáciles de entender y más fáciles de mantener / evolucionar.
Hay muchas empresas que se han enfrentado a esta situación. Debido a que la mayoría de las veces cuando se construyó el sistema inicial, no tienen suficiente dinero e infraestructura para manejar el crecimiento, una vez que son bienvenidos, obtienen y en consecuencia escalan / cambian su base de código.
Twitter (Rubí a Scala).
Facebook Messenger (Erlang a C ++).
Partes de la Búsqueda de Google (Python a C ++ / Java).
Ayer me encontré con este enlace, creo que es un buen ejemplo:
Mono espacial | Más allá de la nube
More Interesting
¿Cuáles podrían ser algunos nombres geniales de códigos de versión de software?
¿Cuál es una buena herramienta para el seguimiento de errores y el seguimiento de procesos?
¿Cuáles son algunos proyectos pitónicos en GitHub para aprender?
¿Por qué las licencias de software necesitan mantenerse actualizadas?
¿Qué tan importante es el inglés para los programadores?
Como estudiante de pregrado, ¿cómo puedo comenzar con Computer Vision?
¿Por qué ArrayList implica Lista mientras se extiende AbstractList?