Você deveria demitir um desenvolvedor por um erro grande e caro? Acho que não, mas a administração queria sangue





Todos na Inglaterra são obcecados por futebol. Muitos times amadores e vários estádios. E através de alguns conhecidos, um inglês se aproximou de mim que tinha uma ideia e algum dinheiro - ele me pediu para fazer um aplicativo no qual as pessoas pudessem gerenciar seu time de futebol amador. Coloque pessoas em campo, faça substituições, procure jogadores, reserve estádios e converse.



Naquela época, passei por um período estranho em minha vida - e não sei como sobrevivi. Universidade durante o dia, à noite trabalho como back-end de plantão até a manhã, e em algum lugar entre os cursos de desenvolvimento de andróides. Além disso, tive energia e entusiasmo suficientes para ir lá não para me exibir, mas para realmente pegar fogo.



Então concordei em trabalhar. E foi apenas uma saída depois do que passei no desenvolvimento de back-end.



Na minha escola, na aula de matemática, havia uma placa com uma inscrição que me intrigou imediatamente. Então eu estava mais de uma vez convencido da exatidão dessas palavras:



O programa não faz o que você quer, mas o que está escrito



Quando entrei na universidade, numa reunião com os professores, eu falei, falam, quero ser programador. Eu estava certo - você vai. É verdade que eles acrescentaram que, para se tornar um programador, você terá que estudar por toda a vida. Tendo interpretado isso de alguma forma à minha própria maneira, não estiquei o treinamento para o resto da vida e acumulei na íntegra: casais na universidade, cursos à noite, freelancers à noite.



A procura de um emprego de meio período me levou a um projeto interessante: o desenvolvimento de um motor de reconhecimento de voz no lado positivo. Junto com a equipe, lutamos pelo percentual de reconhecimento: esperava muito bombar o carro até 100% do resultado!



Foi a verdadeira dor de um perfeccionista. Eu criei minhas próprias soluções, peguei os mecanismos de código aberto de outras pessoas, desmontei-os em engrenagens e remontei-os. Customizei o código, não dormi à noite, biquei aos pares. Desenrolei quilômetros de código para alguns por cento na linha de chegada.



Não deu em nada. Só alguns anos depois descobri que isso era inatingível. Recebi a notícia de que a rede neural do Facebook reconhece rostos com uma probabilidade de no máximo 95%. Eu simpatizava com o Facebook: mesmo uma empresa tão grande não conseguiu chegar a cem. E havia também um excelente pós-escrito no artigo que uma pessoa reconhece rostos com uma probabilidade de 93%. Seriamente?



Então, pela primeira vez, fiquei um pouco decepcionado com o desenvolvimento



Eu tentei o frontend, mas tudo que eu sabia sobre eles estava na área do estereótipo “eles fazem sites”. Parecia chato até então. Eu queria algo mais interessante. Para encontrar uma nova área, mudei-me para Skolkovo.



A magistratura Skolkovo pagou uma boa bolsa de estudos. Mas se você quer viver em Moscou em grande escala, pregue um pouco mais. Me deparei com uma vaga para uma empresa do setor financeiro. Era necessário escrever de volta em python e às vezes ficar de plantão à noite.



Na entrevista, fui totalmente impulsionado por multithreading, por vantagens em um pedaço de papel (era difícil escrever código à mão). Eles perguntaram algumas coisas básicas sobre python e, no final, eles aceitaram.



Antes desta empresa, trabalhava apenas em pequenas equipes. No caso do reconhecimento de voz, trabalhamos cinco, mas aqui a maçã não tinha para onde cair dos desenvolvedores. E todos eles sabiam mais do que eu. Fui bombardeado com perguntas e fiquei extasiado quando meu trabalho recebeu feedback. Nas primeiras três semanas, dominei o ofício. Cada revisão de código terminou com uma resposta “ruim”. Refiz tudo, mas não melhorou. Meu código teve que ser aprovado por pelo menos 4 pessoas. Às vezes, três diziam "normas", e o quarto ainda achava do que reclamar.



Eles também me mostraram uma maneira interessante de revisar - eu dou um código ao lead, ele marca alguns lugares, mas não diz qual é o problema, devo tentar entendê-lo sozinho. E você realmente começa a pensar - é muito estimulante.



Mas mesmo esse controle de qualidade estrito não nos salvou de problemas.



O trabalho estava relacionado a bancos de dados. Os servidores da empresa armazenavam toneladas de informações financeiras dos clientes (cartões bancários, histórico de transações). Uma vez a cada 5 dias, havia uma noite que eu tinha que passar no trabalho. Eu me certifiquei de que tudo funcionou, respondi e-mails e ligações. Eu gostava do turno da noite. Pela saída não pagaram nem o dobro, mas o triplo. Fiquei de plantão das nove da noite às seis da manhã - recebia como em 3 dias. O que mais um aluno precisa?



Além de dinheiro, o aluno precisa dormir o suficiente



Na nossa empresa, todos os processos de trabalho foram construídos de forma impecável. Verificações, testes, análises. Novamente verificações, testes e avaliações. Mas mesmo esse sistema pode falhar, e você deve estar preparado para, como um soldado recruta, ser alertado pela manhã.



Um belo dia, voltei do serviço. Eu simplesmente caí do chão. Fui para a universidade e retratei um aluno. À noite, desmaiei morto, e não eram nem oito horas. Eu queria dormir pela eternidade, nada menos.



Mas às 4 da manhã fui acordado pelo responsável por todo o apoio da empresa - ele me ligou pela primeira vez na vida.



- Você fez alguma coisa com a base ontem?

- Não, nada de especial.

- Levante-se e vá ao seu computador com urgência.



Sou uma pessoa matinal, é claro, mas ainda assim fiquei louco com a ligação. Meu relógio foi na véspera do acidente.



Claro, o primeiro pensamento é que quebrei tudo



Acontece que todo um grupo de usuários tinha acabado de ser cortado. Ela não estava na loja. Mas ela sempre existiu aqui, onde ela caiu? Comecei a procurar. Olhei para os logs que começaram. Comecei a fumar esses logs (a primeira meia hora foi gasta acordando, outra meia hora - para aquecer os logs e entender quais scripts foram lançados). Eu baixei os scripts para mim, olhei o que eles estavam fazendo, desenterrei quais deles escalaram para aquele lugar específico. E eu encontrei um erro.



Lançado em um ambiente de teste - usuários de teste serrados. Hmm, olha como essa coisa foi testada. Por algum motivo desta vez, embora tenhamos três devstends, o primeiro e o segundo foram perdidos, e o terceiro nem mesmo caiu. Ninguém escreveu um teste para isso (marquei a mim mesmo para escrever para que isso não acontecesse novamente).



Paralelamente a mim, muitas pessoas estavam sentadas procurando um problema, ligando constantemente. Finalmente, às 6 da manhã, percebemos que alguém havia escrito um roteiro, conferido em uma prova, mas não levou em consideração um caso importante. Como resultado, os usuários se enquadraram naqueles que estavam sujeitos a remoção.



Então, atingimos cerca de um milhão de usuários durante a noite



Restauramos o banco de dados, fizemos um backup. Até que soubéssemos do problema, os usuários inseriam cada vez mais dados durante a noite. Escrevemos a todos sobre um problema técnico, fechamos a entrada para que não houvesse fluxo de novas informações. Foi necessário congelar o banco de dados em 7 horas, passar para o que era zero, retornar todos os usuários. Para aqueles que tentaram entrar, mas não conseguiram, a empresa cancelou um pedido de desculpas separado, cobrando bônus.



Consertamos tudo por volta das 7h. Às 8 horas, a empresa demitiu o homem que preparava tudo.



O cara trabalhava bem, sempre conferia tudo. Algumas vezes ele até me revisou e sugeriu coisas muito legais. Mas é como dirigir. No primeiro ano ao volante, você tem medo de tudo e segue na pista certa. Aí você relaxa um pouco e, neste exato momento, tem um acidente!



Eu despediria uma pessoa por um erro? "O programa faz o que você escreveu." Mas somos desenvolvidos, cometemos erros constantemente. Imagine o quão ruim esse cara estava naquela manhã. E por que contratar uma pessoa que agora verificará todos os caracteres de seu código? Mas a gerência queria sangue e, nas semanas seguintes, vários outros envolvidos neste caso foram embora.



Trabalhei lá por algumas semanas, mas já percebi que queria sair do backend.



Em Skolkovo percebi como estou interessado em um projeto com desenvolvimento android. Desenvolvemos um aplicativo e o vinculamos ao arduino. A tarefa era bem simples: você tinha que se conectar ao arduino via bluetooth ou wi-fi do seu telefone e enviar o comando. O aplicativo tinha algumas telas com botões. Conforme concebido, o arduino foi associado ao layout de uma casa inteligente e esses botões deveriam abrir e fechar janelas.



Havia motivos mais do que suficientes para se apaixonar por um andróide à primeira vista



Eu realmente gostei que existe uma IU. Eu gostei da capacidade de fazer animações (agora no desenvolvimento para Android eu adoro isso). A documentação do Google era muito melhor do que eu havia visto antes. Java se tornou mais python e C ++. Enquanto fazia cursos de android sobre o cursor, percebi uma coisa:



é importante para mim ver imediatamente o resultado.



Também tornou mais fácil explicar o que estou fazendo. Tente dizer à pessoa o que é trabalho de back-end. Por que isso é necessário e assim por diante. Com um andróide, basta pegar o telefone e dizer - Fiz este aplicativo.



Aquele caso do futebol - recebi um rascunho escrito por índios. Para ser honesto, eles não se saíram muito bem. Em vez de extrair o código para uma função, eles copiaram 700 linhas novamente. A refatoração levou duas semanas.



E eu terminei de qualquer maneira e fiquei loucamente alto. Percebi que queria continuar fazendo isso e comecei a procurar uma empresa para trabalhar. Passei pela e-legion escolar do Android, fiz um teste, consegui um emprego - e agora estou liderando o desenvolvimento do Android aqui.



E estou incrivelmente feliz que às quatro da manhã eles não me levantem para salvar as bases em chamas e não me obriguem a fazer listas de execução.



All Articles