A quebra digital — como tudo aconteceu

Este não é o primeiro hackathon que ganho, não é o primeiro sobre o qual escrevo, e este está longe de ser o primeiro post no Habr dedicado ao "Avanço Digital". Mas eu não podia deixar de escrever. Considero que minha experiência é única o suficiente para ser compartilhada. Provavelmente, sou a única pessoa neste hackathon que ganhou a fase regional e a final em equipes diferentes. Quer saber como isso aconteceu? Bem-vindo ao meu relato.

Fase regional (Moscovo, 27 a 28 de julho de 2019).

Vi o anúncio do "Avanço Digital" pela primeira vez em março ou abril deste ano. Naturalmente, não poderia deixar passar um hackathon tão grande e me inscrevi no site. Lá mesmo, me informei sobre as condições e o programa do concurso. Acontece que, para participar do hackathon, era necessário passar por um teste online, que começava em 16 de maio. E, talvez, eu tivesse esquecido disso, já que não recebi o e-mail de lembrete sobre o início do teste. E devo dizer que, posteriormente, todas as mensagens que recebi do CP foram diretamente para a pasta de spam. Mesmo clicando toda vez no botão "não é spam". Não sei como conseguiram esse resultado, comigo a distribuição pelo MailGun não funcionava assim. E parece que eles desconhecem a existência de serviços como isnotspam.com. Mas estamos divagando.

Fui lembrado sobre o início do teste em uma das reuniões do clube de startups, lá discutimos a formação da equipe. Ao abrir a lista de testes, a primeira coisa que fiz foi me concentrar no teste de Javascript. De modo geral, as tarefas eram mais ou menos adequadas (como, qual seria o resultado se somássemos no console 1 + ‘1’). Mas com a minha experiência, usar esses testes durante a seleção para um emprego ou para uma equipe eu faria com grandes reservas. O fato é que, no trabalho real, um programador raramente se depara com essas coisas, e a capacidade dele de codificar rapidamente não tem correlação com esses conhecimentos, além de que se preparar para esses tipos de questões para entrevistas é relativamente fácil (sei por experiência própria). No geral, eu acertei o teste bastante rapidamente, em alguns casos verifiquei minhas respostas no console. No teste de python, as tarefas eram de natureza semelhante, também verifiquei minhas respostas no console, e com surpresa, obtive mais pontos do que em JS, embora nunca tenha programado profissionalmente em Python. Depois, nas conversas com outros participantes, ouvi histórias de como programadores talentosos obtiveram notas baixas nos testes, como algumas pessoas receberam cartas informando que não passaram na seleção para o CP, mas depois ainda assim foram convidadas. É evidente que os criadores desses testes provavelmente não tinham conhecimento nem sobre a teoria dos testes, nem sobre sua confiabilidade e validade, nem sobre como testá-los, e a ideia de criar testes era fadada ao fracasso desde o início, mesmo sem considerar o principal objetivo do hackathon. E o principal objetivo do hackathon, como descobri mais tarde, era estabelecer um recorde no Guinness, e os testes contrariavam esse objetivo.

Em algum momento após passar pelos testes, recebi uma ligação perguntando se eu participaria, pediram detalhes e informaram como acessar o chat para a formação da equipe. Logo, entrei no chat e escrevi brevemente sobre mim. O ambiente no chat era um verdadeiro caos, parecia que os organizadores haviam atraído muitas pessoas aleatórias com a publicidade, que não tinham nenhuma relação com TI. Vários gerentes de produto 'no nível de Steve Jobs' (uma frase real de uma apresentação de um participante) publicaram histórias sobre si mesmos, enquanto desenvolvedores competentes eram praticamente invisíveis. Mas eu tive sorte, e logo me juntei a três experientes programadores JS. Nos conhecemos pessoalmente no hackathon, e naquele momento adicionamos uma garota à equipe para inspiração e para resolver questões organizacionais. Já não me lembro por que, mas escolhemos o tema 'Treinamento em Cibersegurança' e nos colocamos na trilha 'Ciência e Educação 2'. Era a primeira vez que eu estava em uma equipe de 4 programadores fortes, e pela primeira vez senti o quão fácil é vencer em tal formação. Chegamos despreparados e até o almoço discutimos e não conseguimos nos decidir se faríamos um aplicativo móvel ou uma aplicação web. Em qualquer outra situação, eu pensaria que isso seria um fracasso. O mais importante para nós era entender como seríamos melhores que os concorrentes, uma vez que havia muitas equipes ao nosso redor criando testes, jogos sobre cibersegurança e coisas semelhantes. Observando isso e pesquisando programas e aplicativos educativos, decidimos que nossa principal característica diferenciadora seriam os treinos no estilo de alarme de incêndio. Selecionamos uma série de recursos que achamos interessantes para implementar (registro com verificação de email e senha em bases hackeadas, envio de emails de phishing (na forma de mensagens de bancos conhecidos), e treinamentos em engenharia social no chat). Ao definir o que faríamos e entender como poderíamos nos destacar, conseguimos rapidamente desenvolver uma aplicação web completa, e eu assumi um papel incomum como desenvolvedor backend. Assim, vencemos nossa trilha com confiança e, junto com mais três equipes, nos classificamos para a final em Kazan. Mais tarde, em Kazan, descobri que a seleção para a final foi uma farsa, encontrei muitos rostos conhecidos de equipes que não foram aprovadas. Nós até fomos entrevistados por jornalistas do canal 1. No entanto, na reportagem, nosso aplicativo só foi mostrado por um segundo.

A quebra digital — como tudo aconteceu
A equipe Snowed, com a qual ganhei a etapa regional

Final (Kazan, 27 a 29 de setembro de 2019)

Mas depois começaram os contratempos. Todos os programadores da equipe Snowed, em um período de cerca de um mês, disseram um por um que não poderiam ir a Kazan para a final. Comecei a pensar em encontrar uma nova equipe. Primeiro, fiz um apelo no chat geral da Russian Hack Team, e embora tenha recebido muitas respostas e convites, nenhuma delas me convenceu. Havia equipes desequilibradas, como, por exemplo, um produt designer, um desenvolvedor mobile, e um frontender, lembrando a fábula do cisne, da langosta e do perca. Havia também equipes que não se adequavam à minha tecnologia (por exemplo, aquelas que desenvolviam aplicativos móveis em Flutter). Finalmente, em um chat que eu considerava fraco (aquele no VKontakte, onde estava a seleção das equipes para a etapa regional), postaram um anúncio à procura de um frontender, e eu mandei uma mensagem aleatória. Os caras eram pós-graduandos do Skoltech e imediatamente sugeriram que nos encontrássemos para nos conhecermos. Eu gostei disso, as equipes que preferem se conhecer no próprio hackathon geralmente me preocupam pela falta de motivação. Nos encontramos no “Grably” na Piatnitskaya. Os caras me pareceram bons, motivados, confiantes em si mesmos e na vitória, e eu tomei a decisão ali mesmo. Nós ainda não sabíamos quais seriam os tracks e tarefas na final, mas presumimos que escolheríamos algo relacionado a Machine Learning. E minha tarefa seria criar uma administração para isso, então preparei previamente uma base usando antd-admin.
Fui a Kazan gratuitamente, à custa dos organizadores. É preciso dizer que já havia expressado muita insatisfação nos chats e blogs sobre a compra de passagens e, em geral, sobre a organização da final; não vou retratar tudo isso.

Ao chegar ao Kazan Expo, após registrar (tive algumas pequenas dificuldades para obter o crachá) e tomar café da manhã, fomos escolher a trilha. Para a abertura solene, onde estavam presentes autoridades, entramos apenas por cerca de 10 minutos. Na verdade, já tínhamos trilhas preferidas, mas estávamos interessados nos detalhes. Na trilha Nº 18 (Rostelecom), por exemplo, descobrimos que era necessário desenvolver um aplicativo móvel, embora isso não estivesse especificado na descrição breve. Nossa escolha principal era entre a trilha Nº 8, Detecção de Falhas em Pipelines, da PJSC Gazprom Neft, e a trilha Nº 13, Centros Perinatais, do Tribunal de Contas da Federação Russa. Em ambas, era necessário conhecimento em Data Science, e em ambas poderia ser integrado um site. Na trilha Nº 13, nos preocupou o fato de que a tarefa relacionada a Data Science era bastante fraca, precisávamos extrair dados do Rosstat e não estava claro se uma interface administrativa era necessária. E a própria importância da tarefa levantou dúvidas. No final, decidimos que como equipe estávamos mais preparados para a trilha 8, especialmente porque os membros já tinham experiência em resolver tarefas semelhantes. Começamos pensando no cenário em que nosso aplicativo seria utilizado pelo usuário final. Isso significava que teríamos dois tipos de usuários: técnicos, que se interessavam por informações técnicas, e gerentes, que precisavam de indicadores financeiros. Quando surgiu uma ideia clara do cenário, ficou evidente o que deveria ser feito no front-end, o que desenhar para o designer e quais métodos seriam necessários no back-end, foi possível distribuir as tarefas. As responsabilidades na equipe foram distribuídas da seguinte forma: duas pessoas lidavam com ML utilizando os dados obtidos dos especialistas técnicos, uma pessoa escrevia o back-end em Python, eu desenvolvia o front-end em React e Ant Design, e o designer criava as interfaces. Inclusive, nos organizamos de maneira a facilitar a comunicação enquanto resolvíamos nossas tarefas.

As primeiras 24 horas passaram quase desapercibidas. Durante as conversas com os especialistas técnicos, descobrimos que essa tarefa já havia sido resolvida por eles ("Gazprom Neft"), eles apenas estavam curiosos para saber se poderia ser feita melhor. Não posso dizer que isso diminuiu a motivação, mas deixou uma impressão. Fiquei surpreso que à noite os moderadores das seções estavam marcando as equipes que estavam trabalhando (como disseram, para estatísticas); normalmente, isso não acontece em hackathons. Pela manhã, já tínhamos um protótipo da interface, alguns rudimentos do backend e uma solução inicial de ML. Em resumo, já havia algo para mostrar aos especialistas. Na segunda metade do sábado, o designer desenhou comprovadamente mais interfaces do que eu conseguiria programar e se concentrou na criação da apresentação. O sábado foi reservado para registrar a marca, e pela manhã, todos os que estavam trabalhando na sala foram expulsos para o corredor. Em seguida, a entrada e saída da sala foram controladas por crachás, e a saída durante o dia não poderia exceder uma hora. Não posso dizer que isso nos causou grandes inconvenientes, já que passamos a maior parte do dia sentados e trabalhando. A alimentação, de fato, foi muito escassa; no almoço, recebemos um copo com caldo, um pastel e uma maçã, mas novamente, isso não nos desapontou muito, estávamos concentrados em outra coisa.

Periodicamente, eram distribuídas latas de Red Bull, duas por pessoa, o que foi muito útil. O já testado na hackathon receita de energético + café permitiu que programássemos a noite toda e o dia seguinte, mantendo-nos alertas como um cristal. No segundo dia, estávamos basicamente apenas acrescentando novas funcionalidades ao aplicativo, fizemos um cálculo dos indicadores financeiros e geramos gráficos sobre a estatística de defeitos nas rotas. Não houve uma revisão de código em nossa trilha, os especialistas avaliavam a resolução do problema no estilo kaggle.com, com base na precisão da previsão, enquanto o frontend era avaliado visualmente. A nossa solução de ML se revelou a mais precisa, talvez isso tenha nos permitido assumir a liderança. Na noite de sábado para domingo, trabalhamos até às 2 da manhã e depois fomos dormir no apartamento que usamos como base. Dormimos cerca de 5 horas, e no domingo, às 9 da manhã, já estávamos no Kazan Expo. Eu estava me apressando para finalizar, mas a maior parte do tempo foi ocupada com a preparação para a pré-defesa. As pré-defesas ocorreram em dois grupos, diante de duas equipes de especialistas; fomos solicitados a nos apresentar por último, pois ambas as equipes gostariam de nos ouvir. Nós consideramos isso como um bom sinal. O aplicativo foi apresentado a partir do meu laptop, com o servidor de desenvolvimento em funcionamento; não conseguimos fazer o deploy adequado do aplicativo, mas, na verdade, todos estavam na mesma situação.

No geral, tudo correu bem, eles nos apontaram os pontos em que poderíamos melhorar nosso aplicativo, e no tempo anterior à defesa, até tentamos implementar algumas dessas observações. A defesa também foi surpreendentemente tranquila. Após a pré-defesa, sabíamos que estávamos à frente em pontos, lideramos em precisão de solução, tivemos um bom frontend, um bom design e, no geral, tínhamos boas expectativas. Outro sinal positivo foi que a moderadora da nossa seção, antes de entrar na sala de concertos, fez uma selfie conosco, e eu então suspeitei que ela talvez soubesse de algo))). Mas não sabíamos os nossos pontos após a defesa, por isso o tempo até o momento em que nosso time foi anunciado no palco foi de um pouco de tensão. No palco, foi entregue um cartão com a inscrição de 500.000 rublos e, para cada um, um pacote com uma caneca e um carregador portátil. Não conseguimos aproveitar a vitória e comemorá-la devidamente; jantamos rapidamente e pegamos um táxi até a estação de trem.

A quebra digital — como tudo aconteceu
A equipe WAICO vence na final

Após retornar a Moscovo, fomos entrevistados por jornalistas da NTV. Filmamos durante uma hora no segundo andar do café "Quartal 44" na Polyanka, mas nas notícias mostraram uns 10 segundos. De qualquer forma, é um grande progresso em comparação com a fase regional.

Resumindo as impressões gerais do Digital Breakthrough, elas são as seguintes. Foram gastos valores exorbitantes no evento, nunca vi hackathons dessa magnitude. Mas não posso afirmar que isso foi justificado ou que realmente valha a pena. Uma parte considerável dos participantes que vieram a Kazan eram apenas festivos, sem habilidades práticas, que foram convocados para estabelecer um recorde. Não posso dizer que a concorrência na final foi maior do que na fase regional. Além disso, o valor e a utilidade de algumas tarefas de certas trilhas levantam dúvidas. Algumas tarefas já foram resolvidas a nível industrial há muito tempo. Como se revelou depois, algumas organizações que organizaram as trilhas não estavam nem interessadas na sua solução. E essa história ainda não acabou, as equipes líderes de cada trilha foram selecionadas para o pré-acelerador, e espera-se que delas surjam STARTUPS DISRUPTIVAS. Mas não estou pronto para escrever sobre isso ainda, vamos ver no que isso vai dar.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster