A beleza que não salvou o programador

“Pelo que você foi aceito, pelo que você será despedido”, diz a velha sabedoria. Fui chamado para esta fábrica para auditar contabilidade, sistema de informação, código, processos, etc. Mas eles começaram dizendo que têm um programador ruim. Padrão, fábrica, terrível.



A fábrica criou produtos lindos. E ele mesmo era bonito. Muito bonito - aparentemente, os mesmos designers que desenharam os produtos participaram do projeto do prédio. Também há beleza e harmonia nas oficinas. Limpeza, ordem, tudo em seu lugar. E o mais importante, todo o processo de produção é perfeitamente automatizado.



Cada lote de produtos é acompanhado por uma folha de roteiro, que contém todas as operações tecnológicas necessárias, o que chegar onde, para onde enviar, etc. Em um pedaço de papel - apenas códigos de barras, com um mínimo de texto.



O trabalhador simplesmente pega um lote de peças, faz a coleta com um scanner - e o sistema sabe imediatamente que ele iniciou o processamento. Lotes de tamanho pequeno, não mais do que um turno é processado, portanto não há necessidade de dividi-lo ao refletir o fato de liberação ou passagem da operação. O operário, ao terminar de processar todo o lote, simplesmente faz a coleta com um scanner, e o sistema sabe que o lote está pronto e pode ir para a próxima pessoa. O sistema também sabe que as peças estão presas entre os tratamentos - há um pico no final, mas não há pico no início da próxima operação.



Beleza e harmonia. O sonho de qualquer líder. Transparência total - você sempre sabe o quê, onde, quando. Portanto, o líder conduz a excursão com muito bom humor. Ele gosta da maneira como as coisas funcionam. Boa automação.



Percebo que os trabalhadores estão falando muito ao telefone de maneira suspeita. Quando nos aproximamos de alguém, pare e olhe para uma bela máquina ou para o trabalho ágil das mãos - a pessoa sorri e trabalha. Assim que saímos, ele começa a ligar para alguém.



Bem, nunca se sabe, talvez eles sejam sociáveis ​​aqui. Ou a cultura corporativa é assim - você pode experimentá-la o dia todo. Não tenho tempo - preciso descobrir onde está o esqueleto no armário. Em todo caso, afinal, o departamento de contabilidade fica em algum lugar e movimenta uma quantidade enorme de documentos corrigindo problemas, operações técnicas e a movimentação de produtos semiacabados.



Vamos ao departamento de contabilidade - não, é tranquilo lá. Eles se sentam e bebem chá. Nas telas de computador - sim, é claro, o sistema de informação - mas certamente não a entrada de questões. Trabalho regular de contabilidade. Ir em frente.



Provavelmente um bloqueio no departamento de despacho de planejamento (PDO). Nós vamos lá. Bem, isso não é um bloqueio - apenas muito trabalho. O gerente diz honestamente que o gargalo no momento é a impressão de um grande número de guias de remessa - para cada lote e pedido. Tendo em conta o seu tamanho reduzido, obtém-se muito papel - na verdade, leva a maior parte do tempo dos funcionários do PDO.



Onde está o esqueleto? Não pode ser tão bom. Ok, vamos conversar com o gerente, vou falar com o programador. Ele sabe com certeza.



O programador está sentado em um armário apertado, falando ao telefone, enquanto faz algo freneticamente no sistema. Espero alguns minutos até pegar o jeito, consigo nos conhecer rapidamente - e novamente o telefone do programador toca. Estou esperando novamente. Na próxima pausa, insiro a pergunta "Posso ver como funciona o seu sistema?" - e novamente a chamada. Ao mesmo tempo, mensageiros instantâneos de todas as cores conhecidas - verde, azul, violeta - piscam no computador do programador.



O programador, continuando a falar, abre o sistema e os códigos-fonte para mim em um computador próximo. Ele dirige de volta, abre bate-papos, vê fotos e rapidamente coloca algo no sistema.



Não tendo nada para fazer, olho para o sistema. Eu gero relatórios - sobre vendas, produção, custo, preços, etc. Todos os relatórios são lindos como um só. O mínimo de configurações disponíveis - apenas opções bonitas, como por região, grupo de produtos, etc. Você clica e desfruta das belas vistas - tudo é limpo, lambido, penteado.



Isso geralmente não é feito em sistemas corporativos, para uso interno. Lá, a abordagem é tecnologicamente avançada - há uma certa forma universal, e apenas a solicitação que extrai alterações de dados de relatório para relatório. Em seguida, o mecanismo os transforma conforme necessário, fornece as configurações do usuário - agrupamentos, filtros, classificação, cores, etc. Como nos sistemas de BI, só que mais simples, sem cubos e outras belezas. Estranho, você precisa olhar o código.



Eu olho para o código - meus pés estão na minha boca ... 4-5 mil linhas de código para gerar um relatório de lançamento. Para efeito de comparação - normalmente 50-100 linhas são suficientes, e todas são textos de consulta, o resto é fornecido pela plataforma. É estranho, o que ele está fazendo aqui, nessas 4-5 mil linhas?



Eu olho para os nomes dos procedimentos e funções - novamente, algum tipo de selvageria. Eles são legíveis por humanos, e já pelos nomes é claro - ele, droga, tem seu próprio procedimento para cada unidade. Um exibe dados para o workshop 1, o segundo para o workshop 2, etc.



Não, tudo bem, acontece - a declaração de lucros será pior. Eu desdobro os textos, eu olho. Quantas diferenças vemos? Um - o parâmetro de solicitação muda. Em vez da loja 1 - loja 2.

Compartilhando mais alguns módulos - o mesmo lixo. Kilotons de código que geram belos relatórios. Embora, agora, os relatórios não pareçam mais tão bonitos. Estou ansioso para almoçar. O almoço é sagrado.



E aqui está. Exatamente às 12h00, o programador termina a conversa, joga o telefone debaixo do monitor, levanta-se e sai do escritório. Eu o sigo. Felizmente, ele está com tanta raiva que está pronto para falar.



Bem, acabou. Trabalhei como programador em uma fábrica, não toquei em ninguém. Aos poucos, ele ajudou os usuários, acrescentou algo, manteve o sistema e os servidores, recarregou cartuchos. Normalmente.



Mas então o chefe da empresa fez uma viagem de negócios ao exterior - ele viu como as pessoas vivem. E as pessoas no exterior vivem lindamente.



E ele trouxe a ideia de uma bela automação. Eu perguntei ao programador, ele respondeu - algum tipo de bobagem. Fraco. O chefe encontrou empreiteiros, eles se encaixaram - por que não se encaixar, então? Os principais requisitos funcionais são que todos nas lojas devem escolher scanners, e não trabalhar com um computador com as mãos, e os dados sobre lançamentos, operações e movimentos aparecem instantaneamente, após a implementação de eventos da vida real.



Não antes de dizer que acabou. Vários meses de tormento e as oficinas foram preenchidas com picos mágicos de leitores de código de barras, como um verdadeiro hipermercado. O gerente foi convocado a entregar a obra para conhecer pessoalmente a beleza da automação. Eles trouxeram uma grande TV, com uma placa que refletia a vida da oficina em tempo real.



Nós passamos com um estrondo. O trabalhador estava colhendo com um scanner - o resultado foi imediatamente exibido na TV. O segundo pico, o terceiro, o décimo - a vida começou a ferver, tanto na loja quanto na TV. O gerente ficou satisfeito. Eu assinei os atos, os empreiteiros foram embora.



E o programador ficou. Ele tentou dizer ao gerente que o que foi feito foi, para dizer o mínimo, não o que era necessário. O fato de uma simples mesa plana à qual as leituras de código de barras são adicionadas sequencialmente não é um reflexo do problema. Este é apenas um trabalho de laboratório de conexão de scanners em modo teclado - para ler dados, escrever em uma mesa, decifrar um código de barras - era longo, composto, com os números do pedido, lote, operação técnica, nomenclatura etc. costurados no interior.



Mas o líder não quis ouvir essa bobagem. Foi lindo na oficina. Você nunca sabe o que este nerd da aldeia está carregando. Deixou sem uma reversão, provavelmente - e o serviu bem.



Bem, então o inferno começou, para o programador. Ele trabalhou sem parar por vários dias para garantir pelo menos algum funcionamento do sistema. Julgue por si mesmo: mais cedo, embora por um lugar, com atraso, mas os dados de liberação chegaram onde são necessários. Havia pedaços de papel padrão com números de liberação, que eram arrastados da oficina para o departamento de contabilidade ou PDO, e esses números eram inseridos no sistema, a rotatividade interna funcionava, os saldos estavam corretos, o custo foi considerado.



Agora existe apenas uma mesa plana com códigos de barras digitalizados e decodificados. Bem, o mecanismo de cavalo para a formação e impressão desses códigos de barras dos planos de produção. Os dados de saída simplesmente não iam para as partes do sistema onde eram necessários - nem na gestão, nem na rotação da contabilidade. Uma mesa plana estava próxima e simplesmente acumulava dados de leitura de código de barras.



No início, o programador, sob pressão do departamento de contabilidade, imprimiu esta mesa plana em seu joelho - aproximadamente na forma de papéis manuscritos da loja antes. Imprimi esta tabela para eles uma vez por dia, os bukhs foram inseridos no sistema.



Em seguida, com dor pela metade, escrevi um código que transferiu dados da tabela plana para as credenciais normais do sistema. E parecia que era possível se acalmar, mas não estava lá. O gerente novamente foi para alguma empresa e aprendeu que lindos relatórios podem ser recebidos do sistema.



Anteriormente, como na maioria das fábricas, os relatórios para o gerente eram preparados por pessoas especiais - contadores, economistas, financiadores, etc. Eles pegaram dados do sistema e os trouxeram de uma forma concisa, compreensível e bonita. Agora o gerente queria receber relatórios diretamente do sistema.



O segundo círculo do inferno começou. Os prazos, claro, eram extremamente apertados - o programador já era considerado um truque sabotando o progresso, e ninguém o deixava relaxar. Foi assim que apareceram os quilotons de código copiar-colar, escrito com pressa e na hora. E dezenas de belos relatórios.



O terceiro círculo do inferno veio de onde ninguém esperava - de uma mesa plana com códigos de barras. Parecia bom como um estande de demonstração, mas no trabalho real todos os erros de design foram descobertos muito rapidamente, tanto em termos de tecnologia quanto no processo de uso.



Para começar, o desempenho de escrever na mesa diminuiu terrivelmente. Então, a velocidade de leitura caiu. Blocos iniciados. Encontramos solicitações escritas por uma empresa contratada, as quais foram executadas a cada pico do scanner 1,5 mil (!) Vezes. Havia lugares com uma recursão sem fim, que era interrompida no décimo milésimo passo por um esforço de vontade, expresso pelo comentário "// vamos restringir para demonstração". De alguma forma, muitos usuários descobriram repentinamente os direitos para editar dados manualmente, dos quais alguns não deixaram de aproveitar. O controle da sequência de operações realizadas pelo número da linha na folha de dados, e não pelo número da operação técnica (essas são colunas estupidamente diferentes da tabela e não precisam corresponder), como resultado da qual as pessoas receberam uma mensagem informativa "A sequência de operações foi violada. Usando folhas de roteamento de papel,sem consertar o fato de entrega na loja e controle de mudanças, levava a constantes falhas de leitura - mudanças nos dados do sistema mudavam estupidamente a composição do código de barras, e o impresso não era mais reconhecido. Etc.



Naturalmente, o programador foi ao gerente com essa informação, e mais de uma vez. Naturalmente, ninguém o ouviu. Portanto, o programador entrou no problema de tempo mais grave.



Por um lado, era necessário garantir o funcionamento atual do sistema. Isso se expressou na constante sentar ao telefone e na edição manual dos dados em uma mesa plana - é banal para que a loja não emperre. Por outro lado, aos poucos, enquanto dava tempo, tentei consertar tudo. A fábrica trabalhava o tempo todo, mas à noite e à noite eles ligavam menos, então o programador usou esse tempo para consertar uma bela automação.



No entanto, o negativo acumulado pelo líder não pôde mais ser contido. Eles queriam demitir o programador. Na verdade, esse foi um dos motivos da auditoria, na qual me apoiei.



Alguns dias depois, quando o relatório estava pronto, passei duas horas persuadindo-os a não despedir o programador. Eu recomendei que ele fosse promovido e finalmente comece a ouvir o que ele tem a dizer. Reserve tempo para refatorar e organizar. Conseguimos convencê-los de que o programador não deve ser expulso pelo menos hoje. Concordamos em realizar várias outras reuniões, incl. - com um programador. E esse foi meu erro.



No dia seguinte, todos se reuniram. Executivos de todos os tipos começaram a listar os problemas que o programador não conseguia resolver. Ele respondeu com confiança a todas as perguntas. Via de regra, com a mesma frase - “Já fiz isso, mostrei-te”, ao que o questionador se calou. Eu, na maioria dos casos, confirmei que o programador estava falando a verdade.



Para uma argumentação mais eficaz, eles pegaram um computador e começaram a mostrar em movimento o que "o programador não pode fazer de forma alguma". Encontramos quase tudo “que tanto nos faltou para o trabalho normal”. E tudo é bonito o suficiente. Pelo menos funciona



Ao final da reunião, ninguém entendeu qual era seu objetivo. O programador, com esperança em seus olhos, foi para seu local de trabalho. Os líderes também se dispersaram, deixando alguns dos principais. Sentei-me e esperei pelo veredicto - esperando, é claro, por uma segunda chance para o programador e seguindo minhas recomendações (“você tem tudo que precisa, só não sabe como usar”).



Mas o veredicto saiu diferente - "você vê, ele deve ser demitido." Para quê?! Claro, porque o sistema é lindo. Mas não funciona. E o programador é o culpado por isso.



PS O programador ficou feliz por ter sido demitido. Ele não se afastou, pois se sentia responsável, ou mesmo hiper-responsabilizado, pelo que acontecia na fábrica. Uma semana depois, ele trabalhou em um novo local, com um salário mais alto.



All Articles