El avance digital — cómo fue

No es la primera hackathon que gano, ni es la primera de la que escribo, y definitivamente no es la primera publicación en Habr dedicada al 'Salto Digital'. Pero no podía dejar de escribir. Considero que mi experiencia es lo suficientemente única como para compartirla. Probablemente, soy la única persona en esta hackathon que ha ganado la etapa regional y la final en diferentes equipos. ¿Quieres saber cómo sucedió? Bienvenido al artículo.

Etapa regional (Moscú, 27 - 28 de julio de 2019).

Vi el anuncio del 'Salto Digital' por primera vez alrededor de marzo a abril de este año. Por supuesto, no podía pasar de largo una hackathon tan importante, así que me registré en el sitio web. Allí, también revisé las condiciones y el programa del concurso. Resulta que para participar en la hackathon, había que pasar una prueba en línea que comenzaba el 16 de mayo. Y, quizás, lo habría olvidado, ya que no recibí ningún correo de recordatorio sobre el inicio de las pruebas. Y, debo decir, posteriormente TODOS LOS CORREOS que recibía de CP caían consistentemente en la carpeta de spam. Aunque siempre presionaba el botón de 'no es spam'. No sé cómo lograron ese resultado, ya que a mí no me funcionó así con el envío en MailGun. Y sobre la existencia de servicios como isnotspam.com, los chicos, al parecer, no tienen idea. Pero nos hemos desviado del tema.

Me recordaron sobre el inicio de las pruebas en una de las reuniones del club de startups, ahí también discutimos la formación del equipo. Abriendo la lista de pruebas, lo primero que hice fue dedicarme a la prueba de Javascript. En general, las tareas eran más o menos adecuadas (por ejemplo, ¿cuál sería el resultado si sumamos en la consola 1 + ‘1’?). Pero por mi experiencia, usar pruebas como estas al seleccionar personal o formar un equipo lo haría con muchas reservas. El hecho es que en el trabajo real, un programador se encuentra raramente con tales cosas y su capacidad para escribir código rápidamente no se correlaciona con estos conocimientos, además, prepararse para estas cosas para entrevistas es bastante fácil (lo sé por experiencia propia). En general, completé la prueba bastante rápido, en algunos casos me verifiqué en la consola. En la prueba de python, las tareas eran de un tipo similar, también me verifiqué en la consola y, con sorpresa, obtuve más puntos que en JS, aunque nunca había programado profesionalmente en python. Luego, al comunicarme con los participantes, escuché historias de cómo programadores talentosos obtenían bajas puntuaciones en las pruebas, cómo algunas personas recibían correos informando que no habían pasado la selección para el CP y luego las invitaban a ello de todos modos. Es evidente que los creadores de estas pruebas, probablemente, no escucharon nada sobre la teoría de las pruebas, ni sobre su fiabilidad y validez, ni sobre cómo validarlas, y la idea con las pruebas desde el principio sería fallida, incluso sin tener en cuenta el objetivo principal del hackathon. Y el objetivo principal del hackathon, como supe más tarde, era establecer un récord Guinness, y las pruebas eran contradictorias a ello.

En algún momento después de pasar las pruebas, me llamaron, preguntaron si quería participar, aclararon detalles y me dijeron cómo entrar al chat para formar un equipo. Pronto, entré en el chat y escribí brevemente sobre mí. En el chat hubo un completo caos, da la impresión de que los organizadores habían atraído a muchas personas al azar a través de publicidad, quienes no tenían relación alguna con IT. Muchos gerentes de producto "nivel Steve Jobs" (una frase real de la presentación de un participante) compartían historias sobre sí mismos, y apenas había desarrolladores competentes a la vista. Pero tuve suerte y pronto me uní a tres experimentados programadores de JS. Nos conocimos en el hackatón, y en ese momento añadimos a una chica para inspiración y para resolver cuestiones organizativas. Ya no recuerdo por qué, pero elegimos el tema "Educación en ciberseguridad" y entramos en la categoría "Ciencia y Educación 2". Era la primera vez que formaba parte de un equipo de cuatro programadores fuertes y sentí por primera vez lo fácil que es ganar en una formación así. Llegamos sin preparación y durante el almuerzo discutimos y no podíamos decidir qué íbamos a hacer: ¿una aplicación móvil o una web? En cualquier otra situación, habría pensado que eso era un fracaso. Lo más importante para nosotros era entender cómo seríamos mejores que los competidores, ya que había muchas equipos haciendo pruebas, juegos relacionados con la ciberseguridad y cosas similares. Al ver esto y buscar programas y aplicaciones educativas, decidimos que nuestra principal característica distintiva serían entrenamientos bajo el principio de alarmas contra incendios. Seleccionamos una serie de características que nos parecieron interesantes para implementar (registro con verificación de email y contraseña en bases de datos de hackers, envío de correos de phishing (como si fueran cartas de bancos conocidos), entrenamientos de ingeniería social en el chat). Una vez que definimos lo que íbamos a hacer y comprendimos en qué podíamos destacarnos, escribimos rápidamente una aplicación web completa, y de hecho, desempeñé un papel poco común para mí como desarrollador backend. Así, ganamos con confianza nuestra categoría y como parte de otros tres equipos, llegamos a la final en Kazán. Más tarde en Kazán, supe que la selección para la final había sido una ficción, y vi muchos rostros conocidos de equipos que no pasaron esa selección. Incluso nos entrevistaron periodistas del primer canal. Sin embargo, en el reportaje, solo mostraron nuestra aplicación durante un segundo.

El avance digital — cómo fue
El equipo Snowed, con el que gané la etapa regional

Final (Kazan, 27 – 29 de septiembre de 2019)

Pero luego empezaron los contratiempos. Todos los programadores del equipo Snowed, durante aproximadamente un mes, informaron uno tras otro que no podrían ir a Kazan para la final. Así que empecé a considerar la posibilidad de buscar un nuevo equipo. Al principio, lancé un llamado en el chat general del equipo Russian Hack Team, y aunque recibí bastantes respuestas e invitaciones a equipos allí, ninguno me convenció. Había equipos desequilibrados, como por ejemplo, un product owner, un desarrollador móvil y un frontend, que me recordaban a la fábula del cisne, el cangrejo y la lucioperca. También había equipos que no se adaptaban a mi tecnología (por ejemplo, desarrollo de aplicaciones móviles en Flutter). Finalmente, en un chat que consideraba un desastre (el mismo de ВКонтакте, donde se hacía la selección de equipos para la etapa regional), publicaron un anuncio buscando un frontend, y por casualidad escribí. Los chicos resultaron ser estudiantes de posgrado de Skoltech y de inmediato propusieron conocernos. Me gustó, los equipos que prefieren conocerse en un hackathon suelen inquietarme por su falta de motivación. Nos encontramos en
Fui a Kazan gratis, gracias a los organizadores. Hay que decir que en los chats y blogs ya se había expresado mucha insatisfacción con respecto a la compra de boletos y, en general, la organización de la final, no voy a repetir todo eso.

Al llegar a Kazan Expo, después de registrarme (a pesar de que tuve algunos problemas menores con la obtención del gafete) y de desayunar, fuimos a elegir la pista. Solo pasamos unos 10 minutos en la ceremonia de apertura, donde estaban presentes funcionarios oficiales. En realidad, ya teníamos pistas preferidas, pero queríamos detalles. En la pista No 18 (Rostelecom), por ejemplo, resultó que había que desarrollar una aplicación móvil, aunque eso no estaba en la descripción breve. Principalmente, estábamos decidiendo entre la pista No 8, Inspección de tuberías, de PJSC Gazprom Neft, y la pista No 13, Centros perinatales, de la Cámara de Cuentas de la Federación de Rusia. En ambos casos se necesitaba Data Science, y en ambos se podría incorporar web. En la pista No 13, nos detuvo el hecho de que la tarea de Data Science era bastante débil, era necesario analizar datos de Rosstat y no estaba claro si se requería un panel de administración. Además, el valor de la tarea generaba dudas. Al final, decidimos que como equipo estábamos más orientados hacia la pista No 8, especialmente porque los chicos ya tenían experiencia en la resolución de tareas similares. Empezamos por pensar en el escenario en el que nuestra aplicación sería utilizada por el usuario final. Resultó que tendríamos dos tipos de usuarios: técnicos, que se interesan por la información técnica y gerentes, que necesitaban indicadores financieros. Cuando tuvimos una idea del escenario, se hizo evidente qué hacer en el frontend, qué dibujar al diseñador y qué métodos necesitábamos en el backend, lo que permitió repartir las tareas. Las responsabilidades en el equipo se distribuyeron de la siguiente manera: dos personas se encargaban de ML con los datos obtenidos de los expertos técnicos, una persona escribía el backend en Python, yo escribía el frontend en React y Ant Design, el diseñador diseñaba las interfaces. Incluso nos sentamos de tal manera que nos fuera más fácil comunicarnos, resolviendo nuestras tareas.

Las primeras 24 horas pasaron casi desapercibidas. En la comunicación con los expertos técnicos, se supo que esta tarea ya ha sido resuelta por ellos ("Gazprom Neft"), simplemente les interesa saber si se puede resolver de mejor manera. No diré que esto disminuyó la motivación, pero quedó una pequeña sensación. Me sorprendió que durante la noche los moderadores de las secciones reconocieron a los equipos que estaban trabajando (como decían, para estadística), algo que normalmente no se practica en hackatones. Para la mañana, teníamos listo el prototipo del frontend, algunos esbozos del backend y la primera solución de ML. En general, ya teníamos algo que mostrar a los expertos. En la segunda mitad del día del sábado, el diseñador ya había creado más interfaces de las que yo podría codificar y se enfocó en la elaboración de la presentación. El sábado estaba reservado para el registro del récord, y por la mañana, todos los que trabajaban en la sala fueron sacados al pasillo; luego, la entrada y salida de la sala se realizaba mediante credenciales, y no se podía salir más de una hora al día. No diré que esto nos causó grandes inconvenientes; pasamos la mayor parte del día sentados y trabajando. La comida, de hecho, era muy escasa; para el almuerzo recibimos un vaso de caldo, una empanada y una manzana, pero de nuevo, esto no nos desanimó mucho, ya que estábamos concentrados en otras cosas.

De vez en cuando nos daban Red Bull, dos latas por persona, lo cual era muy oportuno. La combinación de bebida energética y café, que ya habíamos probado en hackatones, nos permitía programar toda la noche y el día siguiente, sintiéndonos frescos como una lechuga. Al segundo día, esencialmente ya solo estábamos agregando nuevas funciones a la aplicación, hicimos un cálculo de los indicadores financieros y empezamos a generar gráficos sobre la estadística de defectos en las autopistas. En nuestro track no hubo una revisión de código formal, los expertos evaluaron la solución del problema al estilo de kaggle.com, según la precisión de la predicción, y el frontend se evaluó visualmente. Nuestra solución de ML resultó ser la más precisa, lo que posiblemente nos permitió destacar como líderes. En la noche del sábado al domingo trabajamos hasta las 2 de la mañana y luego nos fuimos a dormir en el apartamento que utilizamos como base. Dormimos unas 5 horas y el domingo a las 9 de la mañana ya estábamos en Kazán Expo. Algo estaba ajustando de prisa, pero la mayor parte del tiempo se la llevó la preparación para la presentación preliminar. Las presentaciones preliminares se llevaron a cabo en dos grupos, ante dos equipos de expertos, y nos pidieron a nosotros que presentáramos al final, ya que ambos equipos querían escucharnos. Lo interpretamos como una buena señal. Mostramos la aplicación desde mi portátil, con el servidor de desarrollo en marcha; no tuvimos tiempo para desplegar la aplicación correctamente, aunque todos hicimos lo mismo.

En general, todo fue bien, nos señalaron aspectos en los que podríamos mejorar nuestra aplicación, y durante el tiempo que tuvimos antes de la defensa, incluso intentamos implementar algunas de esas observaciones. La defensa también fue sorprendentemente fluida. Tras la presentación preliminar, sabíamos que en términos de puntos estábamos adelante, liderábamos en precisión en la solución, teníamos un buen frontend, un buen diseño y, en general, nos sentíamos optimistas. Otro signo favorable fue que la chica moderadora de nuestra sección, antes de entrar al auditorio, se tomó una selfie con nosotros, en ese momento sospeché que posiblemente sabía algo))). Pero nosotros no conocíamos nuestros puntos después de la defensa, así que el tiempo hasta el anuncio de nuestro equipo desde el escenario fue algo tenso. En el escenario nos entregaron una cartulina con la inscripción de 500000 rublos y a cada uno un paquete con una taza y una batería para el teléfono móvil. No pudimos disfrutar de la victoria y celebrarla como se debe, cenamos rápido y tomamos un taxi hacia el tren.

El avance digital — cómo fue
El equipo WAICO gana en la final

Al regresar a Moscú, periodistas de NTV nos entrevistaron. Grabaron durante una hora en el segundo piso del café 'Kvartal 44' en Polyanka, pero en las noticias mostraron unos 10 segundos. Sin duda, un gran progreso en comparación con la etapa regional.

Si resumimos las impresiones generales de la Brecha Digital, serían las siguientes. Se gastó una cantidad exorbitante de dinero en el evento; nunca había visto hackatones de tal magnitud. Pero no puedo decir que esto fue justificado y que realmente valdrá la pena. Una parte significativa de los participantes que vinieron a Kazán eran simplemente fiesteros que no saben hacer nada con sus propias manos, y que fueron convocados para establecer un récord. No puedo decir que la competencia en la final fuera mayor que en la etapa regional. Además, el valor y la utilidad de las tareas de algunos tracks son cuestionables. Algunas tareas ya se habían resuelto hace tiempo a nivel industrial. Como se descubrió más tarde, algunas organizaciones que lideraron los tracks no estaban interesadas en su resolución. Y esta historia aún no ha terminado; los equipos líderes de cada track fueron seleccionados para un preacelerador, y se supone que de ellos surgirán startups INNOVADORAS. Pero no estoy listo para escribir sobre esto por ahora, veamos qué resulta.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster