¿Tener una pila tecnológica políglota dificulta el mantenimiento?

En mi experiencia, varios idiomas dentro de la misma organización no solo hacen que el conjunto de aplicaciones sea más costoso de mantener, sino que hace que sea más difícil encontrar ingenieros calificados y retener a los buenos. Las principales razones para esto son la realidad de que su departamento de tecnología típico nunca tiene suficiente tiempo para completar los trabajos que se les solicitan.

Al usar un idioma alternativo para una solución específica en el mismo logotipo, todo el sistema solo sirve para una maravillosa capa de ‘magia’ para un sistema. Este tipo de enfoque es típico en un script de compilación, pero no es raro en aplicaciones estándar. Esta estratificación agresiva puede servir para hacer la depuración significativamente más difícil ya que cada idioma tendrá muchos estándares y formatos propios.

Desde la perspectiva de los recursos, es un concepto novedoso que todos los programadores pueden leer cualquier idioma, y ​​esto es parcialmente cierto. Sin embargo, cuando un ingeniero se especializa puede leer, comprender y detectar errores mucho más rápido. Más rápido significa menores costos de mantenimiento de as. También significará que probablemente conocerán soluciones más rápidas para enmiendas del sistema porque el medio en el que están resolviendo el problema es bien conocido.

En términos de marcos, una empresa definitivamente debe apegarse a una pequeña selección. Pueden agregar una maravillosa capa de magia ellos mismos. Sin embargo, esta magia suele ser algo muy bueno cuando estás acostumbrado y sabes que está allí. Los marcos múltiples generalmente significan mucha magia y oportunidades para que los supuestos comiencen a costar dinero.

Para que quede claro, no digo que una organización deba apegarse a un idioma para absolutamente todo. El mundo de la administración de servidores suele estar repleto de idiomas de sabor de hoy en día, y esto generalmente funciona porque generalmente es algo que se escribe una vez y se olvida. Pero las aplicaciones comerciales necesitan previsibilidad, simplicidad y capas bajas para que un ingeniero pueda concentrarse en las necesidades comerciales y no en problemas técnicos de obesidad.

No , ayuda a la mantenibilidad.

Dividiré mi razonamiento de dos maneras: usando múltiples idiomas y usando múltiples marcos.

Tener muchos lenguajes de programación diferentes en el mismo sistema no obstaculiza la legibilidad o la facilidad de mantenimiento del código: cualquier ingeniero con experiencia moderada puede manejar (leer y escribir) cualquier lenguaje sensato (suponiendo que el código fue escrito para ser mantenible, lo que voy a asumir era).

Tener muchos marcos diferentes en el mismo sistema tiene un impuesto mental más grande: los marcos requieren comprender sus “principios de diseño”, y cambiar entre ellos tiene sus costos [1].
Dicho esto, la selección del marco adecuado para la tarea correcta hará que esta tarea sea mucho más simple, y si cada tarea es simple, es de esperar que la suma de todas las tareas sea simple.
Al seleccionar el marco para una tarea, uno de los criterios debe ser “similitud con otros marcos utilizados”, para minimizar esta brecha.
Afortunadamente, la mayoría de los marcos modernos son simples, pequeños y están diseñados para requerir un mínimo de comprensión profunda sobre ellos (es decir, fácil de aprender), lo que hace que esto sea mucho más fácil.

Bonificación: ¿Por qué un enfoque políglota ayuda a la mantenibilidad?

Supongamos que eres un programador en un proyecto de este tipo y que necesitas implementar una nueva tarea. Decide implementar esta nueva tarea usando Scala, mientras que el resto del sistema está escrito en C # (lenguajes aleatorios utilizados aquí).
Por lo tanto, está obligado a tener una separación rígidamente definida (no puede hackearla llamando a algún método privado para los objetos devueltos, simplemente no funcionará). Esta separación hace que cada parte del programa sea más pequeña y bien definida (Reduce el acoplamiento [2]).

Un acoplamiento más bajo mejora la mantenibilidad.

[1] Llegaría al extremo de afirmar que una mala selección del marco puede ser peligrosa, pero esa es una historia diferente.

[2] http://en.wikipedia.org/wiki/Cou

More Interesting

¿Es una mala práctica pedir a las empresas tecnológicas una extensión de oferta?

¿La mayoría de los algoritmos fundamentales provienen de la academia o la industria?

Además de usar OAuth, ¿cómo se puede autenticar a los clientes y usuarios de manera diferente?

¿Para qué sirve el software Perforce?

¿Qué pasos debo tomar para convertirme en un banquero de inversión? (En este momento estoy trabajando como ingeniero de software con 1 año de experiencia)

¿Por qué la mayoría de las personas que se hacen grandes en la industria de TI estudian Ingeniería Electrónica primero y luego hacen una maestría en CS?

¿Cuál fue el primer proyecto de programación extrema que tuvo lugar?

¿Por qué es popular Golang en China?

¿Cuál es la mejor manera de comenzar una carrera en tecnología (UX, UI, ingeniero front-end) sin un título en informática?

¿Qué país del golfo es bueno para los profesionales del software?

Quiero crear o hacer un prototipo para un proyecto de software que sea muy similar al proyecto de presa para el seguimiento de computadoras portátiles. Cuales son los pasos?

Ingeniería de software / sistemas / Linux: ¿cómo se llega al punto de disfrutar leyendo "páginas man" y otros tipos de documentación?

¿Qué tipo de trabajo se asigna en las ramas indias de gigantes de software como Google y Facebook?

¿Es el aprendizaje en profundidad de tecnologías particulares una pérdida de tiempo en ingeniería de software?

Me gustaría diseñar una aplicación. ¿Es necesario aprender conceptos de bases de datos?