Por qué los proyectos se reescriben y por qué fracasan

El tema antiguo: ¿puede o no reescribir un producto grande y funcional con una base de usuarios activa? La respuesta, en general, será: sí, puede. ¿La única pregunta es cómo? Habiendo visto varios intentos de este tipo en el pasado (tanto exitosos como no tan exitosos), este artículo es la opinión del autor sobre este problema.



Código incorrecto, proceso de construcción demasiado complicado, tecnologías obsoletas, lenguaje de programación terrible: todos estos problemas, y muchos otros, acompañan a todo proyecto grande suficientemente exitoso, a cualquier proceso de desarrollo de software en cualquier organización. Como muestra la práctica, en la mayoría de los casos, la situación solo empeora con el tiempo: los pequeños inconvenientes se convierten en "características de nuestro trabajo" desagradables, los puntajes aumentan constantemente cuando se planifican las tareas y la calidad del producto terminado comienza a sufrir. El toque final a esta imagen es el incumplimiento de los plazos y planes debido a la imposibilidad de depurar la funcionalidad o incluso entregarla al entorno de trabajo. A menudo, en tales situaciones, decimos que la deuda técnica se ha acumulado.







Esta deuda surge de forma completamente natural y persigue todos los sistemas, por muy exitosos que sean, cuando existe el producto en sí, sus usuarios, canales de comunicación con ellos. No importa si el producto se vende directamente, o si es una parte auxiliar del negocio de la empresa, lo que importa es que lleva mucho tiempo en funcionamiento. Los usuarios quieren obtener una nueva funcionalidad (quizás incluso paguen por ella), la gerencia quiere proporcionársela a los usuarios lo antes posible, porque el departamento de desarrollo, bajo la presión de los plazos, implementa los cambios necesarios. El proceso se repite muchas veces, y tarde o temprano alguien dirá en voz alta: "¡parece que tenemos una deuda, tal vez técnica!"







Todos empezaron a notar que cada nueva tarea es más difícil que la anterior, y esto ya no es un accidente, la complejidad crece exponencialmente. Hay lugares “frágiles” en el código que es mejor no tocar, más a menudo “llegan” defectos de los usuarios y alarmas del sistema de monitoreo del ambiente de trabajo. Primero, las iniciativas para introducir nuevas tecnologías y prácticas diseñadas para mejorar la calidad del producto en su conjunto se posponen y luego se olvidan por completo. Se forma una idea general de que algo va mal, comienza la búsqueda de las razones de lo que está pasando y de quiénes son los culpables. Por supuesto, no hay nada bueno en este estado de cosas, más aún: lo negativo comienza a envenenar la atmósfera del equipo.







, , — , , , , , , , , , , .







, , , , , , . , — , ? , .









, . , . , , , - — , ? , ? ? , ? . , , , , — , . — .







— , , , , . , , . — . , IDE , , . .







— , :







  • , ? - , .
  • - , - , .
  • , , .
  • , .
  • , , , , .
  • - , , .
  • , - , .


, — , , . . , — , , . , — , , .







. , , . — , . — . — ? .







“ ?”. ! , 100% — , - , , . , , , — 50/50, 60/40, . — , , .









, , — , , . ! ! ! — . .







, , — , .







, — , , , — . , — ? , , . , Flash — , , . , , — . , , , .







. — , , — , . , , . , … , .







, . , , , , , . , , - . , , , — , , , , “ ”, . ? , , . , , , — .







? — . , — . , , , . , .









— , : , , , .. , , . , , , . . , , , , , — , . , — , . — , . — , , , , .







— , , , . . , , , . , , , , — .







, , . — , , , . , . - Terra incognita, . - - , , , - ( ) . - , - , . , , .







, , . . , . , API. http- . — , - , offline-, - Selenium-, UI, . , API.







, , . — . , . API , , -, ? , ? , , — , — .









. , , , , — . , , — . , :







  1. ,


- ? - — . — , . “, ”: “ , , , , ”. , , “ ” , , , — , “” , . , ?







, — , API, .. — , - . . , , , , , , . , , .







, . — , , , . , , , , , , , , . , — , . , , - , , , , . , , , , , , — , . .







— , , . , , , , : , , . — , .







, , , , — , . , — , .







, , - . . — “”, “”. , , .









, , , . , , web-, , — , . , , , — “”? ? , ? , . , , ?







, , , — . Twitter, , , , , . , , . , Ruby on Rails, JVM, . .







, — , . , , , . , , , , . , (-, ) . , . , .







. , , . — , , , , . , . — , , — .







P.S.



Todo lo escrito anteriormente se aplica, por supuesto, a productos de software grandes y funcionales con una base de usuarios activa. Y solo para aquellos casos en los que es imposible simplemente lanzar una nueva versión del producto junto con la anterior, como fue, por ejemplo, con Basecamp y como es con todos los llamados. Software "en caja".








All Articles