La belleza que no salvó al programador

“Por lo que fuiste aceptado, por eso serás despedido”, dice la vieja sabiduría. Me llamaron a esta planta para auditar contabilidad, sistema de información, código, procesos, etc. Pero empezaron diciendo que tenían un mal programador. Estándar, de fábrica, terrible.



La fábrica creó hermosos productos. Y él mismo era guapo. Realmente hermoso: aparentemente, los mismos diseñadores que dibujaron los productos participaron en el diseño del edificio. También hay belleza y armonía en los talleres. Limpieza, orden, todo en su sitio. Y lo más importante, todo el proceso de producción está maravillosamente automatizado.



Cada lote de productos va acompañado de una hoja de ruta, que contiene todas las operaciones tecnológicas necesarias, qué conseguir dónde, dónde enviarlo, etc. En una hoja de papel, solo códigos de barras, con un mínimo de texto. Belleza y armonía. El sueño de cualquier líder. Transparencia total: siempre sabe qué, dónde y cuándo. Por lo tanto, el líder conduce la excursión con tan buen humor. Le gusta cómo funcionan las cosas. Buena automatización. Veo que los trabajadores están hablando sospechosamente mucho por teléfono. Cuando nos acercamos a alguien, nos paramos y miramos una hermosa máquina o el trabajo ágil de nuestras manos, la persona sonríe y trabaja. Tan pronto como nos vamos, comienza a llamar a alguien.



El trabajador simplemente toma un lote de piezas, las selecciona con un escáner y el sistema sabe de inmediato que ha comenzado a procesar. Lotes de pequeño tamaño, no se procesa más de un turno, por lo que no es necesario partirlo al reflejar el hecho de la liberación o el paso de la operación. El trabajador, cuando ha terminado de procesar todo el lote, simplemente toma con un escáner y el sistema sabe que el lote está listo y puede pasar a la siguiente persona. El sistema también sabe que las piezas están atascadas entre tratamientos: hay un pico hacia el final, pero no hay un pico sobre el comienzo de la siguiente operación.











Bueno, nunca se sabe, tal vez aquí sean sociables. ¿O la cultura corporativa es así? Puedes probarlo todo el día. No tengo tiempo, necesito averiguar dónde está el esqueleto en el armario. En cualquier caso, después de todo, el departamento de contabilidad se encuentra en algún lugar y maneja una gran cantidad de documentos para solucionar problemas, operaciones técnicas y el movimiento de productos semiacabados.



Vamos al departamento de contabilidad, no, ahí está todo tranquilo. Se sientan y beben té. En las pantallas de las computadoras, sí, por supuesto, el sistema de información, pero ciertamente no en la entrada de problemas. Trabajo contable habitual. Siga adelante.



Probablemente un bloqueo en el departamento de planificación y despacho (DOP). Vamos ahi. Bueno, no es un bloqueo, solo mucho trabajo. El gerente dice honestamente que el cuello de botella en este momento es la impresión de una gran cantidad de hojas de ruta, para cada lote y pedido. Dado su pequeño tamaño, se obtiene una gran cantidad de papel; de hecho, lleva la mayor parte del tiempo del personal de la DOP. El programador se sienta en un armario estrecho, hablando por teléfono, mientras hace algo frenéticamente en el sistema. Espero unos minutos hasta que me acostumbro, logro conocernos rápidamente, y nuevamente suena el teléfono del programador. Estoy esperando de nuevo. En la siguiente pausa inserto la pregunta "¿Puedo ver cómo funciona su sistema?" - y nuevamente la llamada. Al mismo tiempo, los mensajeros instantáneos de todos los colores conocidos (verde, azul, violeta) parpadean en la computadora del programador.



Entonces, ¿dónde está el esqueleto? No puede ser tan bueno. Bien, separémonos del gerente, voy a hablar con el programador. Él lo sabe con seguridad.







El programador, sin dejar de hablar, me abre el sistema y los códigos fuente en una computadora cercana. Conduce de regreso, abre chats, mira fotos, rápidamente introduce algo en el sistema.



Al no tener nada que hacer, miro el sistema. Genero informes: sobre ventas, producción, costos, precios, etc. Todos los informes son hermosos como uno. El mínimo de configuraciones disponibles: solo interruptores hermosos, como por región, grupo de productos, etc. Haces clic y disfrutas de las hermosas vistas: todo está limpio, lamido, peinado.



Por lo general, esto no se hace en los sistemas corporativos, para uso interno. Allí, el enfoque es tecnológicamente avanzado: existe una cierta forma universal y solo la solicitud que extrae los datos cambia de un informe a otro. Luego, el motor los hace girar según sea necesario, proporciona la configuración del usuario: agrupaciones, filtros, clasificación, coloración, etc. Como en los sistemas de BI, solo que más simple, sin cubos y otras bellezas. Extraño, necesitas mirar el código.



Miro el código, tengo los pies en la boca ... 4-5 mil líneas de código para generar un informe de lanzamiento. A modo de comparación, normalmente de 50 a 100 líneas son suficientes, y todas son texto de consulta, el resto lo proporciona la plataforma. Es extraño, ¿qué está haciendo aquí, en estas 4-5 mil líneas?



Miro los nombres de los procedimientos y funciones, de nuevo una especie de desenfreno. Son legibles por humanos, y los nombres ya están claros: él, maldita sea, tiene su propio procedimiento para cada unidad. Uno muestra datos para el taller 1, el segundo para el taller 2, etc.



No, está bien, sucede, la declaración de ganancias será peor. Desdoblo los textos, miro. ¿Cuántas diferencias vemos? Uno: el parámetro de solicitud cambia. En lugar de la tienda 1, la tienda 2.

Compartiendo algunos módulos más, la misma basura. Kilotones de código que generan hermosos informes. Aunque, ahora los reportajes ya no parecen tan bonitos. Tengo muchas ganas de almorzar. El almuerzo es sagrado.



Y ahí está. Exactamente a las 12.00 horas, el programador termina la conversación, arroja el teléfono debajo del monitor, se levanta y sale de la oficina. Yo lo sigo. Afortunadamente, está tan enojado que está listo para hablar.



Bueno, resultó. Trabajé como programador en una fábrica, no toqué a nadie. Lentamente ayudó a los usuarios, agregó algo, mantuvo el sistema y los servidores, rellenó los cartuchos. Normalmente.



Pero luego, el jefe de la empresa se fue de viaje de negocios al extranjero: vio cómo vive la gente. Y la gente en el extranjero vive maravillosamente.



Y trajo la idea de una hermosa automatización. Le pregunté al programador, él respondió: una especie de tontería. Débiles. El jefe encontró contratistas, ellos encajaron, ¿por qué no encajar, entonces? Los requisitos funcionales clave son que todos en las tiendas deben elegir escáneres y no trabajar con una computadora con las manos, y los datos sobre lanzamientos, operaciones y movimientos aparecen instantáneamente, luego de la implementación de eventos de la vida real.



Dicho y hecho. Varios meses de tormento y los talleres se llenaron de picos mágicos de lectores de códigos de barras, como un verdadero hipermercado. El gerente fue convocado para entregar el trabajo para ver personalmente la belleza de la automatización. Trajeron un televisor grande, sacaron un letrero que mostraba la vida del taller en tiempo real.



Lo pasamos con un estruendo. El trabajador estaba recolectando con un escáner; el resultado se mostró inmediatamente en el televisor. El segundo pico, el tercero, el décimo: la vida comenzó a hervir, tanto en la tienda como en la televisión. El gerente estaba complacido. Firmé las actas, los contratistas se fueron.



Y el programador se quedó. Trató de decirle al gerente que lo que se hizo fue, por decirlo suavemente, no lo que se necesitaba. El hecho de que una simple mesa plana a la que se agreguen lecturas de códigos de barras de forma secuencial no es un reflejo del problema. Este es solo un trabajo de laboratorio para conectar escáneres en modo de teclado (leer datos, escribir en una tabla, descifrar un código de barras), era largo, compuesto, con números de pedido, lote, operación técnica, nomenclatura, etc. cosidos en el interior.



Pero el líder no quiso escuchar estas tonterías. Fue hermoso en el taller. Nunca se sabe lo que lleva este nerd del pueblo. Se fue sin retroceso, probablemente, y le sirve bien.



Bueno, entonces empezó el infierno, para el programador. Trabajó sin parar durante varios días para asegurar al menos algo de funcionamiento del sistema. Juzgue usted mismo: antes, aunque a través de un lugar, con un retraso, pero los datos de publicación llegaron donde se necesitan. Había trozos de papel estándar con números de liberación, que se arrastraban del taller al departamento de contabilidad o DOP, y estos números se introducían en el sistema, la rotación interna funcionaba, los saldos eran correctos, se consideraba el costo.



Ahora solo hay una mesa plana con códigos de barras escaneados y decodificados. Bueno, el mecanismo de caballo para la formación e impresión de estos códigos de barras de los planes de producción. Los datos de salida simplemente no iban a las partes del sistema donde se necesitaban, ni en la gestión ni en la facturación contable. Una mesa plana estaba cerca y simplemente acumulaba datos de escaneo de códigos de barras. Luego, con el dolor a la mitad, escribí un código que transfirió datos de la tabla plana a las credenciales normales del sistema. Y parecía que era posible calmarse, pero no estaba ahí. El gerente nuevamente fue a alguna empresa y se enteró de que se pueden recibir hermosos informes del sistema.



Primero, el programador, presionado por el departamento de contabilidad, apiló sobre sus rodillas la impresión de esta mesa muy plana, aproximadamente en la forma en que se veían los papeles escritos a mano de la tienda antes. Imprimí esta tabla para ellos una vez al día, se introdujeron bukhs en el sistema.







Anteriormente, como en la mayoría de las fábricas, los informes para el gerente eran preparados por personas especiales: contables, economistas, financieros, etc. Tomaron datos del sistema y los pusieron en una forma concisa, comprensible y hermosa. Ahora el gerente quería recibir informes directamente del sistema.



Comenzó el segundo círculo del infierno. Los plazos, por supuesto, eran extremadamente ajustados: el programador ya era considerado un truco que saboteaba el progreso y nadie lo dejaba relajarse. Así aparecieron kilotones de código de copiar y pegar, escrito a toda prisa y en la rodilla. Y docenas de hermosos informes.



El tercer círculo del infierno vino de donde nadie esperaba: de una mesa plana con códigos de barras. Se veía bien como un stand de demostración, pero en el trabajo real, todos los errores de diseño salieron muy rápidamente, tanto en términos de tecnología como en el proceso de uso.



Para empezar, el rendimiento de la escritura en la mesa ha disminuido terriblemente. Luego, la velocidad de lectura bajó. Comenzaron los bloques. Encontramos solicitudes escritas por el contratista que se ejecutaron en cada pico del escáner 1.5 mil (!) Veces. Hubo lugares con una recursividad sin fin, que fue interrumpida en el décimo milésimo paso por un esfuerzo de voluntad, expresado por el comentario "// vamos a restringir para la demostración". De alguna manera, muchos usuarios descubrieron repentinamente los derechos para editar datos manualmente, que algunos no dejaron de aprovechar. El control de la secuencia de operaciones realizadas por el número de la línea en la hoja de datos, y no por el número de la operación técnica (estas son columnas de la tabla estúpidamente diferentes y no tienen que coincidir), como resultado de lo cual las personas recibieron un mensaje informativo "Se violó la secuencia de operaciones". Usando hojas de ruta de papel,sin corregir el hecho de la entrega a la tienda y el control de los cambios, condujo a constantes fallas de escaneo: los cambios en los datos en el sistema cambiaron estúpidamente la composición del código de barras y el impreso ya no fue reconocido. Etc.



Naturalmente, el programador acudió al gerente con esta información, y más de una vez. Naturalmente, nadie lo escuchó. Por lo tanto, el programador entró en el problema de tiempo más grave.



Por un lado, era necesario asegurar el funcionamiento actual del sistema. Esto se expresó en la constante sentada en el teléfono y la edición manual de datos en una mesa plana; es banal para que la tienda no tropiece. Por otro lado, lentamente, mientras había tiempo, intenté arreglarlo todo. La planta funcionaba todo el día, pero por la tarde y por la noche de alguna manera llamaban menos, por lo que el programador utilizó este tiempo para reparar la hermosa automatización.



Sin embargo, la negativa acumulada por el líder ya no se pudo contener. Querían despedir al programador. En realidad, esta fue una de las razones de la auditoría, en la que me apoyé.



Un par de días después, cuando el informe estuvo listo, pasé dos horas persuadiéndolos de que no despidieran al programador. Le recomendé que lo ascendieran y finalmente comience a escuchar lo que tiene que decir. Deje tiempo para refactorizar y ordenar. Logramos convencerlos de que el programador no debería ser expulsado al menos hoy. Acordamos celebrar varias reuniones más, incl. - con un programador. Y ese fue mi error.



Al día siguiente, todos se reunieron. Los ejecutivos de todo tipo comenzaron a enumerar los problemas que el programador no pudo resolver. Respondió con confianza a todas las preguntas. Como regla, con la misma frase - “Ya lo hice, te lo mostré”, a lo que el interrogador se calló. Yo, en la mayoría de los casos, confirmé que el programador estaba diciendo la verdad.



Para una argumentación más eficaz, sacaron una computadora y comenzaron a mostrar sobre la marcha lo que "el programador no puede hacer de ninguna manera". Encontramos casi todo, "que tanto nos faltaba para el trabajo normal". Y todo es lo suficientemente hermoso. Al menos funciona.



Al final de la reunión, nadie entendió cuál era su propósito. El programador, con esperanza en sus ojos, se dirigió a su lugar de trabajo. Los líderes también se dispersaron, quedando un par de los principales. Me senté y esperé el veredicto, esperando, por supuesto, una segunda oportunidad para el programador y siguiendo mis recomendaciones ("tienes todo lo que necesitas, simplemente no sabes cómo usarlo").



Pero el veredicto salió diferente: "ya ve, debe ser despedido". ¡¿Para qué?! Por supuesto, porque el sistema es hermoso. Pero no funciona. Y el programador tiene la culpa de esto.



PD: El programador se alegró de haber sido despedido. No se fue a sí mismo, porque sentía responsabilidad, o incluso hiperresponsabilidad por lo que estaba sucediendo en la planta. Una semana después trabajó en un nuevo trabajo con un salario más alto.



All Articles