Avance digital: cómo sucedió

Este no es el primer hackathon que gano, ni el primero sobre escribiendo, y esta no es la primera publicación en Habré dedicada al “Avance digital”. Pero no pude evitar escribir. Considero que mi experiencia es lo suficientemente única como para compartirla. Probablemente soy la única persona en este hackathon que ganó la etapa regional y la final como parte de diferentes equipos. ¿Quieres saber cómo sucedió esto? Bienvenido al gato.

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

La primera vez que vi un anuncio de “Digital Breakthrough” fue entre marzo y abril de este año. Naturalmente, no podía dejar pasar un hackathon tan grande y me registré en el sitio. Allí conocí las condiciones y el programa del concurso. Resultó que para poder participar en el hackathon era necesario pasar una prueba en línea, que comenzó el 16 de mayo. Y tal vez lo hubiera olvidado convenientemente, ya que no recibí ninguna carta recordándome el inicio de las pruebas. Y debo decir que en el futuro TODAS LAS CARTAS que me llegaban de la CPU terminaban constantemente en la carpeta de spam. Aunque siempre hice clic en el botón "no objetable". No sé cómo lograron tal resultado, no funcionó para mí con el envío de correo en MailGun. Y los chicos no parecen saber nada sobre la existencia de servicios como isnotspam.com. Pero estamos divagando.

En una de las reuniones me recordaron el inicio de las pruebas. club de inicioAllí también discutimos la formación del equipo. Habiendo abierto la lista de pruebas, primero me senté a la prueba de Javascript. En general, las tareas fueron más o menos adecuadas (como cuál será el resultado si sumas 1 + '1' en la consola). Pero, según mi experiencia, utilizaría este tipo de pruebas a la hora de contratar para un puesto o un equipo con grandes reservas. El hecho es que en el trabajo real, un programador rara vez se encuentra con tales cosas, con su capacidad para depurar código rápidamente; este conocimiento no se correlaciona de ninguna manera y es bastante fácil capacitarse para tales cosas en entrevistas (lo sé por mí mismo). En general, hice clic en la prueba con bastante rapidez, en algunos casos lo revisé yo mismo en la consola. En la prueba de Python, las tareas eran aproximadamente del mismo tipo, también me probé en la consola y me sorprendió obtener más puntos que en JS, aunque nunca he programado profesionalmente en Python. Más tarde, en conversaciones con los participantes, escuché historias sobre cómo los programadores fuertes obtuvieron calificaciones bajas en las pruebas, cómo algunas personas recibieron cartas diciendo que no habían pasado el proceso de selección de la CPU y luego fueron invitadas a participar de todos modos. Está claro que lo más probable es que los creadores de estas pruebas no hayan oído nada sobre teoria de la prueba, ni sobre su fiabilidad y validez, ni sobre cómo probarlos, y la idea de las pruebas habría sido un fracaso desde el principio, incluso si no tuviéramos en cuenta el objetivo principal del hackathon. Y el objetivo principal del truco, como supe más tarde, era establecer un récord Guinness, y las pruebas lo contradecían.

En algún momento después de pasar las pruebas, me llamaron, me preguntaron si participaría, me aclararon los detalles y me dijeron cómo entrar al chat para seleccionar un equipo. Pronto entré al chat y escribí brevemente sobre mí. Había mucha basura en el chat; parecía que los organizadores estaban publicitando a muchas personas al azar que no tenían nada que ver con TI. Numerosos gerentes de producto "al nivel de Steve Jobs" (una frase real de la presentación de un participante) publicaron historias sobre ellos mismos, y los desarrolladores normales ni siquiera eran visibles. Pero tuve suerte y pronto me uní a tres programadores JS experimentados. Ya nos conocimos en el hackathon y luego agregamos una chica al equipo para inspirarnos y resolver problemas organizativos. No recuerdo por qué, pero tomamos el tema “Capacitación en ciberseguridad” y lo incluimos en el tema “Ciencia y Educación 2”. Por primera vez me encontré en un equipo de 4 programadores fuertes y por primera vez sentí lo fácil que era ganar en tal composición. Llegamos desprevenidos y discutimos hasta el almuerzo y no pudimos decidir qué haríamos: una aplicación móvil o una web. En cualquier otra situación habría pensado que era un fracaso. Lo más importante para nosotros era entender cómo íbamos a ser mejores que nuestros competidores, porque había muchos equipos alrededor que estaban realizando pruebas, juegos de ciberseguridad y cosas por el estilo. Después de mirar esto y buscar en Google programas y aplicaciones de capacitación, decidimos que nuestro principal diferenciador serían los simulacros de incendio. Seleccionamos una serie de funciones que nos parecieron interesantes de implementar (registro con correo electrónico y verificación de contraseña en bases de datos de piratas informáticos, envío de correos electrónicos de phishing (en forma de cartas de bancos conocidos), formación en ingeniería social en el chat). Habiendo decidido lo que estábamos haciendo y entendiendo cómo podíamos destacarnos, rápidamente escribimos una aplicación web completa y yo desempeñé el papel inusual de desarrollador backend. Así ganamos con confianza nuestra pista y, junto con otros tres equipos, nos clasificamos para la final en Kazán. Más tarde, en Kazán, supe que la selección para la final era una ficción; allí conocí muchas caras conocidas de los equipos que no pasaron la selección. Incluso fuimos entrevistados por periodistas del Canal 1. Sin embargo, en el informe, nuestra aplicación se mostró solo durante 1 segundo.

Avance digital: cómo sucedió
Equipo Nevado, donde gané la etapa regional.

Final (Kazán, 27 al 29 de septiembre de 2019)

Pero entonces empezaron los fracasos. Todos los programadores del equipo Snowed durante aproximadamente un mes, uno tras otro, informaron que no podrían ir a Kazán para la final. Y pensé en buscar un nuevo equipo. Primero hice una llamada en el chat general del Russian Hack Team, y aunque allí recibí bastantes respuestas e invitaciones para unirme a los equipos, ninguna me llamó la atención. Había equipos desequilibrados, como producto, desarrollador móvil, front-end, que recordaban a un cisne, un cangrejo de río y un lucio de una fábula. También hubo equipos que no me convenían en términos de tecnología (por ejemplo, con el desarrollo de una aplicación móvil en Flutter). Finalmente, en un chat que consideré basura (el mismo VKontakte donde se realizó la selección de equipos para la etapa regional), se publicó un anuncio sobre la búsqueda de un frontend para el equipo, y escribí de forma puramente aleatoria. Los chicos resultaron ser estudiantes de posgrado de Skoltech e inmediatamente se ofrecieron a conocerse y conocerse. Me gustó, los equipos que prefieren conocerse inmediatamente en un hackathon suelen alarmarme por su falta de motivación. Nos encontramos en "Rake" en Pyatnitskaya. Los muchachos parecían inteligentes, motivados, confiados en sí mismos y en la victoria, y tomé la decisión allí mismo. Todavía no sabíamos qué pistas y tareas habría en la final, pero asumimos que elegiríamos algo relacionado con Machine Learning. Y mi tarea será escribir un administrador para este asunto, así que preparé una plantilla para esto con anticipación basada en antd-admin.
Fui a Kazán gratis, a cargo de los organizadores. Debo decir que ya se ha expresado mucho descontento en chats y blogs sobre la compra de entradas y, en general, sobre la organización de la final, no lo volveré a contar todo.

Después de llegar a la Expo de Kazán, registrarnos (me costó un poco conseguir una insignia) y desayunar, fuimos a elegir una pista. Solo fuimos a la gran inauguración, donde hablaron los funcionarios, por unos 10 minutos, de hecho ya teníamos nuestras pistas preferidas, pero nos interesaban los detalles. En el track nº 18 (Rostelecom), por ejemplo, resultó que era necesario desarrollar una aplicación móvil, aunque esto no figuraba en la breve descripción. Hemos elegido principalmente entre la vía nº 8 Defectoscopia de tuberías de Gazprom Neft PJSC y la vía nº 13 Centros perinatales de la Cámara de Cuentas de la Federación de Rusia. En ambos casos se necesitaba Ciencia de Datos, y en ambos casos se podría haber añadido la web. En la pista número 13, nos detuvo el hecho de que la tarea de ciencia de datos allí era bastante débil, era necesario analizar Rosstat y no estaba claro si se necesitaba un panel de administración. Y el valor mismo de la tarea estaba en duda. Al final decidimos que como equipo éramos más adecuados para la pista 8, sobre todo porque los muchachos ya tenían experiencia en resolver problemas similares. Comenzamos pensando en el escenario en el que el usuario final utilizaría nuestra aplicación. Resultó que tendríamos dos tipos de usuarios: técnicos interesados ​​en información técnica y gerentes que necesitaban indicadores financieros. Cuando surgió una idea del escenario, quedó claro qué hacer en el front-end, qué debería dibujar el diseñador y qué métodos se necesitaban en el back-end, fue posible distribuir las tareas. Las responsabilidades en el equipo se distribuyeron de la siguiente manera: dos personas resolvieron ML con datos recibidos de expertos técnicos, una persona escribió el backend en Python, yo escribí el front-end en React y Antd, el diseñador dibujó las interfaces. Incluso nos sentamos para que nos fuera más cómodo comunicarnos mientras resolvíamos nuestros problemas.

El primer día pasó casi desapercibido. En comunicación con los expertos técnicos, resultó que ellos (Gazprom Neft) ya habían resuelto este problema, solo se preguntaban si se podría resolver mejor. No diré que esto redujo mi motivación, pero dejó un residuo. Me sorprendió que por la noche los moderadores de la sección anotaran los equipos de trabajo (como decían para las estadísticas), esto no se suele practicar en los hackathons. Por la mañana teníamos listo un prototipo del frente, algunos rudimentos de la parte trasera y la primera solución ML. En general, ya había algo que mostrar a los expertos. El sábado por la tarde, el diseñador obviamente dibujó más interfaces de las que yo tendría tiempo de codificar y pasó a crear una presentación. El sábado se reservó para el registro del acta, y por la mañana todos los que trabajaban en la sala fueron expulsados ​​​​al pasillo, luego la entrada y salida de la sala se realizó mediante insignias, y no se pudo salir por más tiempo. más de una hora por día. No diré que esto nos causó ningún inconveniente importante; la mayor parte del día todavía nos sentamos y trabajamos. La comida, efectivamente, era muy escasa, para el almuerzo nos dieron un vaso de caldo, una tarta y una manzana, pero tampoco esto nos molestó mucho, estábamos concentrados en otra cosa.

Periódicamente repartían Red Bull, dos latas por mano, lo cual fue muy útil. La receta de bebida energética + café, que había sido probada durante mucho tiempo en hackatones, me permitió codificar toda la noche y al día siguiente, estando tan alegre como un vaso. De hecho, el segundo día simplemente agregamos nuevas funciones a la aplicación, calculamos indicadores financieros y comenzamos a mostrar gráficos sobre las estadísticas de defectos en las carreteras. En nuestro track no hubo revisión del código como tal; los expertos evaluaron la solución al problema al estilo kaggle.com, basándose en la precisión del pronóstico, y la interfaz se evaluó visualmente. Nuestra solución de ML resultó ser la más precisa, quizás esto sea lo que nos permitió convertirnos en líderes. La noche del sábado al domingo trabajamos hasta las 2 de la mañana, y luego nos fuimos a dormir al departamento que usábamos como base. Dormimos unas 5 horas, el domingo a las 9 de la mañana ya estábamos en la Kazan Expo. Me apresuré a preparar algo, pero la mayor parte del tiempo lo pasé preparándome para la predefensa. Las predefensas se desarrollaron en 2 secuencias, frente a dos equipos de expertos; nos pidieron que habláramos al último, ya que ambos equipos de expertos querían escucharnos. Lo tomamos como una buena señal. La aplicación se mostró desde mi computadora portátil, desde un servidor de desarrollo en ejecución; no tuvimos tiempo de implementar correctamente la aplicación, sin embargo, todos hicieron lo mismo.

En general todo salió bien, nos señalaron puntos en los que podíamos mejorar nuestra aplicación, y en el tiempo previo a la defensa incluso intentamos implementar algunos de estos comentarios. La defensa también fue sorprendentemente fluida. Según los resultados de la predefensa, sabíamos que estábamos por delante en términos de puntos, estábamos a la cabeza en términos de precisión de solución, teníamos un buen front-end, un buen diseño y, en general, teníamos una buena sentimientos. Otra señal favorable fue que la moderadora de nuestra sección se tomó una selfie con nosotros antes de entrar a la sala de conciertos, y luego sospeché que ella podría saber algo))). Pero después de la defensa no sabíamos nuestros resultados, por lo que el tiempo hasta que nuestro equipo fue anunciado desde el escenario transcurrió un poco tenso. En el escenario entregaron una cartulina con la inscripción 500000 rublos y a cada persona se le entregó una bolsa con una taza y una batería de celular. No logramos disfrutar la victoria y celebrarla como es debido, cenamos rápidamente y cogimos un taxi hasta el tren.

Avance digital: cómo sucedió
El equipo WAICO gana la final

Al regresar a Moscú, nos entrevistaron periodistas de NTV. Filmamos durante una hora entera en el segundo piso de la cafetería Kvartal 44 en Polyanka, pero las noticias solo mostraron unos 10 segundos, después de todo, un gran progreso en comparación con el escenario regional.

Si resumimos las impresiones generales del Avance Digital, son las siguientes. Se gastó mucho dinero en el evento; nunca antes había visto hackatones de tal escala. Pero no puedo decir que esto esté justificado y que realmente valdrá la pena. Una parte importante de los participantes que vinieron a Kazán eran simplemente fiesteros que no sabían hacer nada con sus propias manos y se vieron obligados a establecer un récord. No puedo decir que la competencia en la final fuera mayor que en la fase regional. Además, el valor y la utilidad de las tareas de algunas pistas son cuestionables. Algunos problemas se han resuelto desde hace mucho tiempo a nivel industrial. Como resultó más tarde, algunas organizaciones que realizaban los seguimientos no estaban interesadas en solucionarlos. Y esta historia aún no ha terminado, los equipos líderes de cada pista fueron seleccionados para el pre-acelerador, y se supone que resultarán ser startups INNOVADORAS. Pero todavía no estoy preparado para escribir sobre esto, veremos qué sale de ello.

Fuente: habr.com

Añadir un comentario