Lo llaman el Mundo Real ™ por una razón.
El 99% de lo que encontrará en el mundo corporativo real se considerará basura, y por una buena razón lo explicaré. El 1% que no se considera basura se convertirá en basura eventualmente.
# 1 Escribir código, # 2 ????, # 3 Beneficio!
En primer lugar, las empresas existen para obtener ganancias, no existen para generar montañas de código académico impecablemente diseñado y perfectamente teórico, alojado en depósitos dorados de perfección. Ni siquiera cerca, ni siquiera los que están en el negocio de vender el código fuente que producen.
En el mundo de los negocios, el código es un medio para un fin . Si algún código resuelve un problema comercial y genera más dinero del que cuesta crear y mantener, entonces es deseable para el negocio. Emplearlo para escribir código es solo una forma para que la empresa obtenga el código.
Teoría 0 - Práctica ∞
Idealmente, el mantenimiento debería ser más preocupante, pero generalmente no lo es, porque a corto plazo no gana financieramente. A largo plazo, el software generalmente tiene un ciclo de vida relativamente corto, especialmente las aplicaciones basadas en la web, se vuelven obsoletas rápidamente y se reescriben con mayor frecuencia.
Las aplicaciones internas de la línea de negocios son las que funcionan como lo que se percibe como un sinfín de proyectos de zombies debido a muchas razones basadas en el impulso. Estos proyectos son en realidad éxitos que continúan porque continúan haciendo que el negocio sea una ganancia.
En teoría no hay diferencia entre teoría y práctica. En la práctica hay. - Yogi Berra
En teoría, las bases de códigos impecables perfectamente diseñadas con una cobertura del código del 100% deberían ahorrarle dinero a las empresas, en la práctica ni siquiera se acerca a entregar algo cercano a un retorno válido de la inversión.
Física del ciclo de vida del software
También existe una fuerza de entropía súper poderosa en el mundo del software. Es un agujero negro de inevitabilidad que condena a todo el software a degenerar en una Gran Bola de Barro .
Cuanto más empiece desde un BBM , mejor, pero todos los sistemas de software llegarán allí con el tiempo suficiente. La rapidez con que se acerque al 100% de entropía está determinada por el punto de partida y la rapidez con la que acumula la deuda técnica y qué tan alto es el interés en ella.
Los sistemas de software se degeneran y se pudren debido al mantenimiento, no a la falta de este. Un sistema que lleva años funcionando sin cambios de código por definición cumple con todos sus requisitos y objetivos y es un éxito.
Los sistemas que requieren un cambio constante porque comenzaron más cerca de la entropía máxima son los que se tocan y empujan constantemente, y es el mantenimiento el que acelera el cambio negativo.
Lo suficientemente bueno es lo suficientemente bueno
Los sistemas de ciclo de vida corto, como los sitios web que cambian constantemente, no se benefician del costoso diseño inicial del 100% de cobertura del código en las pruebas unitarias, porque el tiempo de amortización es demasiado corto para recuperar los costos.
Los sistemas de ciclo de vida largo como la línea interna de aplicaciones comerciales mencionadas anteriormente, tampoco se benefician realmente de las inversiones masivas de las pruebas unitarias de cobertura de código del 100%, porque la tasa de cambio a lo largo de la vida del proyecto se aproxima a una constante que es casi cero en un moda no lineal.
Es por eso que los planes para el final de la vida son más importantes y los sistemas de reemplazo deben planificarse justo cuando se está lanzando algo, no cuando ha pasado su mejor momento por algunos años y no es compatible, por lo que se debe poner en marcha un nuevo sistema.
Hasta donde yo sé, no enseñan sobre BBM, nunca me he encontrado con un recién graduado de CS que supiera lo que era, y mucho menos por qué sucede.
Es por eso que lo suficientemente bueno es lo suficientemente bueno , cualquier cosa más o menos no lo es.
Software Slumlords
Hay señores de los barrios marginales de bienes raíces por una razón, obtienen ganancias con los edificios de chabolas que poseen. Ganan más de lo que gastan en el mantenimiento incremental de la propiedad deteriorada. Si no lo hicieran, derribarían el edificio y lo reemplazarían. Pero no lo hacen, porque los costos incrementales son mucho menores que la revisión o la sustitución de todo el edificio. También hay clientes (inquilinos) que están dispuestos a pagar por la propiedad deteriorada.
Ningún propietario del edificio, señor de los barrios marginales o no, va a gastar dinero en una propiedad solo por alguna noción académica de perfección que no se traduce en una ganancia sustancial sobre el costo asociado.
Ningún cliente pagará las actualizaciones de un sistema de software que les funcione de manera aceptable. Ningún negocio va a gastar dinero solo en escribir y reescribir código sin obtener ganancias sustanciales.
Microsoft es el slumlord de software más dominado y exitoso que existe. Windows no comenzó a recibir reescrituras fundamentales importantes hasta hace muy poco. Y todavía no han eliminado todo el código heredado del núcleo. Para ellos no tiene sentido comercial, las personas están más que dispuestas a aceptar el bajo nivel de expectativas que han establecido en la última década.
Pronóstico
Este ha sido un patrón durante más de 20 años en el desarrollo de software. No va a cambiar en el corto plazo. Esta no es la forma en que la gente quiere que esté fuera de algún sistema de creencias, es una realidad de fuerzas externas en un negocio. El negocio impulsa la toma de decisiones, las ganancias no son malas, pagan su salario, la visión a corto o largo plazo es irrelevante, esta es una industria a corto plazo de cambio constante por definición. Cualquiera que defienda lo suficientemente bueno como para obtener ganancias no entiende los negocios.
Pasé 15 años consultando y aprendí muy rápido que lo suficientemente bueno era eso, cualquier otra cosa me estaba costando dinero. Sí, quería que las cosas fueran perfectas, pero a menos que esté vendiendo una base de código, que el 99.99999% del tiempo está vendiendo una solución , todo ese código perfecto, limpio, organizado y elegante se pierde y simplemente pierde su tiempo, nunca se le reembolsará .
Progreso y esperanza
Las metodologías ágiles son un buen paso en la dirección correcta, al menos filosóficamente. Abordan el caos y el cambio constante como ciudadanos de primera clase y lo aceptan. Rechazan las prácticas dogmáticas, reconociendo que las metodologías y prácticas deben cambiar, así como los requisitos y las tecnologías.
Ellos aceptan la entropía que se introduce por la falta de tiempo o cambios en los requisitos, el personal y el cambio de la vida de la conexión de un sistema de software con el concepto de la deuda técnica.
Pero Agile no es una panacea, no va a cambiar las leyes fundamentales de la física y las bases del código se pudrirán de todos modos. Depende de la gerencia planificar lidiar con la podredumbre antes de que se salga completamente de control y no se pueda manejar.
Ágil cuando se hace correctamente, ayuda a gestionar la entropía, ralentizarla, rastrearla, medirla y tratarla de manera planificada. ¡No lo detendrá!
Desición de carrera
Si este es un problema filosófico real para usted, probablemente debería considerar otras opciones de carrera, porque la forma en que funcionan las cosas tiene un mérito comercial válido. Los proyectos de código abierto no tienen un mejor historial, y en muchos casos el código es aún peor que la mayoría del código corporativo que he visto.