Avanço digital - como aconteceu

Este não é o primeiro hackathon que ganho, nem o primeiro sobre escrevendo, e este não é o primeiro post no Habré dedicado ao “Digital Breakthrough”. Mas não pude deixar de escrever. Considero minha experiência única o suficiente para ser compartilhada. Provavelmente sou a única pessoa neste hackathon que venceu a etapa regional e as finais como parte de equipes diferentes. Quer saber como isso aconteceu? Bem-vindo ao gato.

Etapa regional (Moscou, 27 a 28 de julho de 2019).

Vi pela primeira vez um anúncio de “Digital Breakthrough” em algum lugar entre março e abril deste ano. Naturalmente, não pude deixar passar um hackathon tão grande e me registrei no site. Lá tomei conhecimento das condições e do programa da competição. Acontece que para chegar ao hackathon era necessário passar em um teste online, que começou em 16 de maio. E, talvez, eu tivesse convenientemente esquecido disso, já que não recebi uma carta lembrando do início dos testes. E, devo dizer, no futuro TODAS AS CARTAS que chegaram até mim da CPU acabaram consistentemente na pasta de spam. Mesmo que eu tenha clicado no botão “não questionável” todas as vezes. Não sei como eles conseguiram esse resultado, não funcionou para mim com o mailing no MailGun. E os caras parecem não saber nada sobre a existência de serviços como o isnotspam.com. Mas nós divagamos.

Fui lembrado do início dos testes em uma das reuniões clube de startups, lá também discutimos a formação da equipe. Depois de abrir a lista de testes, comecei primeiro a fazer o teste de Javascript. Em geral, as tarefas foram mais ou menos adequadas (como será o resultado se você adicionar 1 + '1' no console). Mas, pela minha experiência, eu usaria esses testes ao recrutar para um emprego ou uma equipe com grandes reservas. O fato é que no trabalho real, um programador raramente encontra essas coisas, com sua capacidade de depurar código rapidamente - esse conhecimento não se correlaciona de forma alguma, e você pode treinar para essas coisas em entrevistas com bastante facilidade (eu sei por mim mesmo). Em geral, cliquei no teste com bastante rapidez, em alguns casos me verifiquei no console. No teste python as tarefas eram aproximadamente do mesmo tipo, também me testei no console e fiquei surpreso ao marcar mais pontos do que em JS, embora nunca tenha programado profissionalmente em Python. Mais tarde, em conversas com os participantes, ouvi histórias sobre como programadores fortes tiveram notas baixas nos testes, como algumas pessoas receberam cartas dizendo que não passaram no processo de seleção para a CPU e, mesmo assim, foram convidadas para isso. É claro que os criadores desses testes provavelmente não ouviram nada sobre teoria do teste, nem sobre sua confiabilidade e validade, nem sobre como testá-los, e a ideia dos testes teria sido um fracasso desde o início, mesmo que não tivéssemos em conta o objetivo principal do hackathon. E o principal objetivo do hack, como aprendi mais tarde, era estabelecer um recorde do Guinness, e os testes contradiziam isso.

Em algum momento depois de passar nos testes, me ligaram, perguntaram se eu participaria, esclareceram os detalhes e me disseram como entrar no chat para seleção de equipe. Logo entrei no chat e escrevi brevemente sobre mim. Havia um lixo completo no chat; parecia que os organizadores estavam anunciando para um monte de gente aleatória que não tinha nada a ver com TI. Vários gerentes de produto “no nível de Steve Jobs” (uma frase real do envio de um participante) postaram histórias sobre si mesmos, e os desenvolvedores normais nem sequer eram visíveis. Mas tive sorte e logo me juntei a três programadores JS experientes. Já nos conhecemos no hackathon e depois adicionamos uma garota à equipe para nos inspirar e resolver problemas organizacionais. Não me lembro por que, mas pegamos o tema “Treinamento em Segurança Cibernética” e incluímos na trilha “Ciência e Educação 2”. Pela primeira vez me encontrei em uma equipe de 4 programadores fortes e pela primeira vez senti como era fácil vencer nessa composição. Chegamos despreparados e discutimos até o almoço e não conseguimos decidir o que faríamos: um aplicativo mobile ou web. Em qualquer outra situação eu teria pensado que era um fracasso. O mais importante para nós era entender como seríamos melhores que nossos concorrentes, porque havia muitas equipes por aí que faziam testes de corte, jogos de cibersegurança e afins. Depois de analisar isso e pesquisar programas de treinamento e aplicativos no Google, decidimos que nosso principal diferencial seriam os exercícios de simulação de incêndio. Selecionamos uma série de funcionalidades que achamos interessantes de implementar (cadastro com e-mail e verificação de senha em bancos de dados de hackers, envio de e-mails de phishing (na forma de cartas de bancos conhecidos), treinamento de engenharia social em chat). Tendo decidido o que faríamos e entendendo como poderíamos nos destacar, rapidamente escrevemos um aplicativo da web completo e desempenhei o papel incomum de desenvolvedor back-end. Assim, vencemos com confiança a nossa pista e, como parte de outras três equipes, nos classificamos para a final em Kazan. Mais tarde, em Kazan, descobri que a seleção para a final era uma ficção; lá conheci muitos rostos conhecidos das equipes que não passaram na seleção. Fomos até entrevistados por jornalistas do Canal 1. Porém, no relatório dele, nosso aplicativo foi mostrado apenas por 1 segundo.

Avanço digital - como aconteceu
Equipe nevada, onde venci a etapa regional

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

Mas então os fracassos começaram. Todos os programadores da equipe Snowed, em cerca de um mês, um após o outro, relataram que não poderiam ir a Kazan para as finais. E pensei em encontrar uma nova equipe. Primeiramente fiz uma ligação no chat geral do Russian Hack Team e, embora lá tenha recebido muitas respostas e convites para ingressar em equipes, nenhum deles me chamou a atenção. Havia equipes desequilibradas, como produto, desenvolvedor mobile, front-end, lembrando cisne, lagostim e lúcio de fábula. Também havia equipes que não eram adequadas para mim em termos de tecnologia (por exemplo, com o desenvolvimento de um aplicativo mobile em Flutter). Por fim, em um chat que considerei trash (o mesmo VKontakte onde ocorreu a seleção das equipes para a etapa regional), foi postado um anúncio sobre a busca de um frontender para a equipe, e escrevi de forma puramente aleatória. Os caras eram estudantes de pós-graduação da Skoltech e imediatamente se ofereceram para se conhecerem. Gostei, equipes que preferem se conhecer logo em um hackathon costumam me alarmar com a falta de motivação. Nos conhecemos em “Rake” em Pyatnitskaya. A galera parecia inteligente, motivada, confiante em si mesma e na vitória, e tomei a decisão ali mesmo. Ainda não sabíamos quais seriam as trilhas e tarefas da final, mas presumimos que escolheríamos algo relacionado ao Machine Learning. E minha tarefa será escrever um administrador para esse assunto, então preparei um modelo para isso com antecedência baseado no antd-admin.
Fui para Kazan de graça, às custas dos organizadores. Devo dizer que muita insatisfação já foi expressa em chats e blogs em relação à compra de ingressos e, em geral, à organização da final, não vou recontar tudo.

Chegando na Kazan Expo, registrado (tive um pouco de dificuldade para conseguir o crachá) e tomado o café da manhã, fomos escolher uma pista. Só fomos à inauguração, onde os dirigentes falaram, durante cerca de 10 minutos, aliás já tínhamos as nossas pistas preferidas, mas estávamos interessados ​​nos detalhes. Na faixa nº 18 (Rostelecom), por exemplo, descobriu-se que era necessário desenvolver uma aplicação mobile, embora isso não constasse na breve descrição. Fizemos a escolha principal entre a pista nº 8 Defectoscopia de oleodutos, Gazprom Neft PJSC e a pista nº 13 Centros Perinatais, Câmara de Contas da Federação Russa. Em ambos os casos, a Ciência de Dados foi necessária e, em ambos os casos, a web poderia ter sido acrescentada. Na faixa nº 13, fomos interrompidos pelo fato de que a tarefa de Ciência de Dados ali era bastante fraca, era necessário analisar o Rosstat e não estava claro se era necessário um painel de administração. E o próprio valor da tarefa estava em dúvida. No final decidimos que em equipe éramos mais adequados para a pista 8, principalmente porque a galera já tinha experiência na resolução de problemas semelhantes. Começamos pensando no cenário em que nossa aplicação seria utilizada pelo usuário final. Acontece que teríamos dois tipos de usuários: técnicos interessados ​​em informações técnicas e gestores que precisavam de indicadores financeiros. Quando surgiu uma ideia do cenário, ficou claro o que fazer no front-end, o que o designer deveria desenhar e quais métodos eram necessários no back-end, tornou-se possível distribuir tarefas. As responsabilidades na equipe foram distribuídas da seguinte forma: duas pessoas resolveram ML com dados recebidos de especialistas técnicos, uma pessoa escreveu o backend em Python, eu escrevi o front end em React e Antd, o designer desenhou as interfaces. Até nos sentamos para que fosse mais cómodo comunicarmos enquanto resolvíamos os nossos problemas.

O primeiro dia passou quase despercebido. Em comunicação com os especialistas técnicos, descobriu-se que eles (Gazprom Neft) já tinham resolvido este problema, apenas se perguntavam se poderia ser resolvido melhor. Não direi que isso reduziu a minha motivação, mas deixou um resíduo. Fiquei surpreso que à noite os moderadores da seção notavam as equipes de trabalho (como disseram para as estatísticas); isso geralmente não é praticado em hackathons. Pela manhã tínhamos um protótipo da frente, alguns rudimentos da parte traseira e a primeira solução de ML pronta. Em geral, já havia algo para mostrar aos especialistas. Na tarde de sábado, o designer obviamente desenhou mais interfaces do que eu teria tempo de codificar e passou a criar uma apresentação. O sábado foi reservado para o registro do registro, e pela manhã todos que trabalhavam no salão foram expulsos para o corredor, em seguida a entrada e saída do salão foram feitas por meio de crachás, não sendo possível sair mais mais de uma hora por dia. Não direi que isso nos causou algum inconveniente significativo; a maior parte do dia ainda sentávamos e trabalhávamos. A comida, aliás, era muito escassa; no almoço recebemos um copo de caldo, uma torta e uma maçã, mas novamente isso não nos incomodou muito, estávamos focados em outra coisa.

Eles distribuíam periodicamente red bull, duas latas por mão, o que era muito útil. A receita de energético + café, testada há muito tempo em hackathons, me permitiu programar a noite toda e no dia seguinte, alegre como um copo. No segundo dia, simplesmente adicionamos novas funcionalidades ao aplicativo, calculamos indicadores financeiros e passamos a exibir gráficos com base nas estatísticas de defeitos em rodovias. Não houve revisão de código propriamente dita em nossa trilha; especialistas avaliaram a solução para o problema no estilo kaggle.com, com base na precisão da previsão, e o front-end foi avaliado visualmente. Nossa solução de ML acabou sendo a mais precisa, talvez seja isso que nos permitiu nos tornar líderes. Na noite de sábado para domingo trabalhávamos até as 2 da manhã, e depois íamos dormir no apartamento que usávamos como base. Dormimos cerca de 5 horas, no domingo às 9h já estávamos na Kazan Expo. Preparei algo às pressas, mas passei a maior parte do tempo me preparando para a pré-defesa. As pré-defesas ocorreram em 2 fluxos, diante de duas equipes de especialistas; fomos convidados a falar por último, pois ambas as equipes de especialistas queriam nos ouvir. Consideramos isso um bom sinal. O aplicativo foi mostrado do meu laptop, de um servidor de desenvolvimento em execução; não tivemos tempo de implantar o aplicativo corretamente, porém todos fizeram o mesmo.

No geral correu tudo bem, foram-nos apontados pontos em que poderíamos melhorar a nossa aplicação, e no tempo que antecedeu a defesa até tentámos implementar alguns desses comentários. A defesa também correu surpreendentemente bem. Com base nos resultados da pré-defesa, sabíamos que estávamos à frente em termos de pontos, estávamos na liderança em termos de precisão de solução, tínhamos um bom front-end, um bom design e, em geral, tivemos bons sentimentos. Outro sinal favorável foi que a apresentadora da nossa seção tirou uma selfie conosco antes de entrar na sala de concertos, e então suspeitei que ela pudesse saber de alguma coisa))). Mas não sabíamos nossa pontuação após a defesa, então o tempo até nosso time ser anunciado na fase passou um pouco tenso. No palco entregaram um papelão com a inscrição 500000 mil rublos e cada pessoa recebeu uma sacola com uma caneca e uma bateria de celular. Não conseguimos aproveitar a vitória e celebrá-la adequadamente, jantamos rapidamente e pegamos um táxi para o trem.

Avanço digital - como aconteceu
Equipe WAICO vence a final

Ao retornar a Moscou, jornalistas da NTV nos entrevistaram. Filmamos por uma hora inteira no segundo andar do café Kvartal 44 em Polyanka, mas o noticiário durou apenas cerca de 10 segundos, afinal, um forte progresso em relação à etapa regional.

Se resumirmos as impressões gerais do Digital Breakthrough, elas são as seguintes. Muito dinheiro foi gasto no evento; nunca vi hackathons dessa escala antes. Mas não posso dizer que isso seja justificado e que realmente valha a pena. Uma parte significativa dos participantes que vieram a Kazan eram simplesmente foliões que não sabiam fazer nada com as próprias mãos e que foram forçados a estabelecer um recorde. Não posso dizer que a competição nas finais foi maior do que na fase regional. Além disso, o valor e a utilidade das tarefas de algumas faixas são questionáveis. Alguns problemas já foram resolvidos há muito tempo no nível industrial. Como se viu mais tarde, algumas organizações que conduziram as trilhas não estavam interessadas em resolvê-las. E essa história ainda não acabou, as equipes líderes de cada faixa foram selecionadas para o pré-acelerador, e presume-se que serão startups BREAKTHROUGH. Mas ainda não estou pronto para escrever sobre isso, veremos o que acontece.

Fonte: habr.com

Adicionar um comentário