Esta história aconteceu em uma empresa real, apesar de alguns nomes e eventos serem fictícios.
Glory era um desenvolvedor comum em uma pequena empresa na cidade de N. A empresa estava envolvida na prestação de serviços a organizações educacionais. Havia vários aplicativos que precisavam ser suportados, desenvolvendo gradualmente pouco a pouco. Mas as autoridades da Glória não acreditaram em seus esforços e no fato de que ele come seu pão por um motivo. Além disso, os chefes em tecnologia da informação realmente não queriam, mas queriam entender o que os funcionários estavam fazendo e que tipo de produtividade o departamento de vendas (que devo dizer consistia em uma pessoa e meia).
As autoridades olharam para o gerente de vendas com um olhar astuto e perguntaram: o que você fez hoje pela Pátria? O vendedor respondeu: realizou muitas reuniões, ofereceu serviços a tantas pessoas. A gerência chegou à Glory e diz: me diga se os funcionários estão dizendo a verdade ou se estão carregando uma mordaça. Precisa de estatísticas.
O diálogo ocorreu:
- Os usuários pagam pelo serviço através de um serviço de terceiros para receber pagamentos on-line? Então
- Então
- A gerência da empresa tem acesso a este serviço?
- existem.
- Então, provavelmente, há uma descarga de pagamentos lá.
- existem.
"Mas você precisa de um relatório adicional?"
- Necessário.
Porque?
- Porque é mais conveniente, porque você precisa, porque "isso e aquilo".
Para ser justo, é preciso dizer que dados adicionais eram necessários.
Sem hesitar, Glory realizou uma consulta simples com a seleção subsequente no Excel.
O relatório era um conjunto de dados em uma coluna em uma página. A princípio, eles abordaram Glory de maneira caótica, no meio do dia, e perguntaram. Mas me dê um relatório sobre essa organização e agora sobre esta. Sem hesitar, Slava decidiu que era suficiente suportar isso e que algo bonito e unificado deveria ser feito para satisfazer as necessidades daqueles que solicitavam.
Surgiu um pequeno script que permitia o envio de boletins para as pessoas interessadas:
import openpyxl, pymysql, os from smtplib import SMTP_SSL from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import datetime
Made, é claro, realmente não achava Glory. Mas como eles dizem: "Ah, e assim será".
Todas as manhãs, Slava vinha trabalhar, executava um script e enviava um email para as partes interessadas.
O próximo passo foi configurar o envio automático. Funcionou algo como isto:
docker build --tag = relatórios.
docker run -it --rm relatóriosE em palavras da coroa:
0 8 * * * docker run --rm fooTodos os dias às 8 da manhã a carta saía. A gerência era bonita e até começou a pensar que Slava vinha trabalhar todos os dias exatamente às 8 horas da manhã, redigia um relatório em Excel e depois o enviava por correio para suas mãos. E ele fez isso no sábado e domingo, e na neve, e na chuva e na noite polar.
GithubPor enquanto, por um tempo, tudo estava bem e a liderança durou, mas não por muito tempo. Uma vez houve uma reunião em que um novo pedido foi anunciado. Ouça, ouça e não diga que você não ouviu. Sim declara que todo funcionário, todos os dias, deve reportar-se a uma classificação mais alta e até mais alta. Bem, em geral, você entende.
"Todo dia?" Perguntou Glory.
Todos os dias. - respondeu o chefe do departamento técnico.
- Ou talvez não?
- É necessário Glória, é necessário.
Slava tinha várias perguntas sobre essa situação. A responsabilidade imediata foi finalizar o software e seus relatórios devem consistir em algo assim:
feat (Módulo) Corrigido um erro no NoteLineCount ... não seriamente ...
upd (Módulo2) Não preste atenção ao homem atrás da cortina
fixo (Módulo3) Me disseram para deixá-lo em paz, mas eu tenho essa coisa chamada TOC, você vê* Nota: o nome das mensagens a
serem confirmadas
é retirado daquiGlory decidiu que ele elaboraria um relatório baseado neles. Uma semana se passou. Ocorreu uma nova conversa sobre o seguinte conteúdo:
- Você envia relatórios todos os dias, mas nenhum progresso é visível. O que, por exemplo, é: “uma máscara foi adicionada ao inserir um número de telefone no front-end”.
Bem, olhe. Antes, era necessário digitar seu número de telefone e verificar o número de dígitos, o que era inconveniente. E assim é conveniente.
- Hum. Bom Eu vejo. E como você explica isso: “Refatoração de código para o módulo de contrapartes. A função de validação está em um método separado. ”
- Bem, você vê. Existe um sistema de controle de versão, que indica quem, quando e o que fez. Olha aqui. Aqui estão os commits, e aqui está o código que foi alterado. Aqui está o código adicionado, aqui está o código excluído.
- bom Vamos fazer então. Faça um relatório com base nesses compromissos, e depois nos reuniremos e verificamos como sim o que você escreveu lá.
No final - foi o que aconteceu:
GithubO script sofreu alterações no repositório e enviou uma carta sobre o que foi feito e o que não foi.
Anteriormente, Slava estava com vergonha de informar que aqueles que não verificam nada não entendem como escrever código. Talvez a gerência entenda vendas, compras e todo tipo de outras coisas e pague dinheiro, mas você verá certas linhas de código em uma linguagem pouco familiar, observe como as linhas verde e vermelha piscam ao alternar entre confirmar e confirmar.
Sim, Slava é uma pessoa responsável e o trabalho funcionou, mas havia dias em que o código mal era finalizado ou era preguiça. De qualquer forma, em geral, o sistema funcionou sem falhas e não queria adicionar outras 15 camadas de abstração, mas os relatórios precisavam ser enviados todos os dias.
Não havia mais nada a fazer senão tornar-se um novo Mayakovsky e escrever uma mordaça com uma escada. Mas todo dia eu realmente não queria inventar um novo. Como resultado, Vyacheslav começou a desenvolver a primeira solução que veio à mente e se transformou em um código simples, onde, na ausência de qualquer trabalho realizado e pressionado por alterações, um relatório foi compilado. Parecia algo assim:
GithubFaltava ser feito para que um código falso fosse formado com confirmações subsequentes. Existe alguma necessidade de fazer isso? O tempo dirá.
PS: A história da Glory não terminou aí. Houve vários outros eventos que influenciaram seu destino, mas essa é uma história completamente diferente. É interessante ler nos comentários histórias semelhantes da vida e as decisões que foram criadas com base em elas. É possível que o projeto seja desenvolvido com base nesses comentários.