¿Qué opinas sobre Google Code Jam distribuido?

La idea es genial. Me encanta el nuevo estilo de problemas, especialmente aquellos que son triviales cuando se resuelven secuencialmente pero que resultan altamente no triviales en el entorno distribuido.

La ejecución de esa idea aún no es óptima. Uno de los principales problemas que percibo es la noción completa de entradas grandes que se transfirió del CodeJam regular (GCJ) … pero en CodeJam distribuido (DCJ) no es lo mismo en absoluto. En GCJ estoy ejecutando mi propio código en mi propia máquina, puedo tener una estimación bastante buena de su tiempo de ejecución en la entrada de tamaño máximo antes de descargarlo y ejecutarlo. La corrección de su salida es el único problema. Esto funciona bien En DCJ tenemos demasiados factores diferentes que están fuera de nuestro control. Es difícil estimar el rendimiento de la vida real de nuestro código en algunas máquinas remotas desconocidas. La interfaz testrun no siempre se puede usar debido a los diferentes límites de los diferentes problemas. Incluso si puede, es costoso, porque necesitamos dedicar tiempo a crear un caso de prueba grande e integrarlo en nuestro código, y luego dedicar más de 2 minutos a la espera de que se complete la prueba. Además, el resultado de dicha prueba aún no es representativo, porque nuestro caso de prueba cableado puede leerse más rápido de lo que sucedería durante la evaluación. Para colmo, los límites suelen ser bastante estrictos, y este no es solo el límite de tiempo. Por ejemplo, tenga en cuenta la gran cantidad de soluciones correctas que superaron por poco el límite de memoria en DCJ 16 ronda 1. Es demasiado fácil escribir una solución que sea asintóticamente correcta en todos los aspectos y, sin embargo, no cumple uno de los requisitos. Es demasiado difícil para los competidores descubrirlo por su cuenta. En mi humilde opinión, los organizadores de DCJ deberían pensar mucho sobre cómo resolver este problema en los próximos años.

Una posibilidad que viene a la mente es más comentarios. Cada envío “grande” puede colocarse en una cola de turnos y probarse en un caso de prueba a la vez a medida que los recursos estén disponibles; y los concursantes pudieron ver el informe de progreso de esta prueba, por ejemplo, “ya pasó 20 de 100 pruebas, el peor tiempo de ejecución de 4,7 segundos”, mientras que todavía tiene la capacidad de volver a enviar, independientemente de si la solución ya falló o no.

Además, como cada presentación “fácil” ya viene con una penalización de tiempo inherente, ¿existe realmente la necesidad de los minutos de penalización de +4 para cada reenvío? Este es otro sobrante de GCJ que se puede eliminar de forma segura. Junto con el cambio anterior, incluso podría tratar todos los subproblemas de la misma manera.

La ejecución de este año (2016) fue una mierda. Pasé dos de las tres horas de la ronda 1 esencialmente depurando por qué una característica que se prometió que no funcionaba. (A veces, mi solución que intentaba enviar mensajes que se encontraban dentro de los límites establecidos fue juzgada como “Infracción de la regla”). Mis preguntas sobre el tema aparentemente fueron mal entendidas y / o ignoradas. No fue nada divertido, quiero resolver las tareas de la competencia en lugar de luchar contra el medio ambiente y discutir con los organizadores. Solo cuando mencioné el mismo problema durante la ronda de práctica entre las rondas 1 y 2, los organizadores reconocieron el problema. ¿Qué siguió? Radio silencio. Y aparentemente el error, sea lo que sea, no se solucionó cuando apareció la ronda 2, por lo que el problema se “resolvió” silenciosamente al introducir en silencio un nuevo límite de tamaño de mensaje mucho más pequeño. Esto luego hizo tropezar a algunos competidores en la ronda 2, ya que no había (hasta donde sé) ningún anuncio al respecto, y no notaron el nuevo límite oculto entre todos los otros límites.

Comparando los dos años, disfruté mucho más de DCJ 15. En algunos momentos, DCJ 16 se sintió como si todos los organizadores que sabían lo que estaban haciendo se fueran, y los que quedaban se quedaron en sus cabezas. Además del problema mencionado anteriormente, las tareas de la ronda 2 de DCJ 16 me parecieron bastante aburridas, casi no había nuevas ideas (para alguien que resolvió los concursos anteriores), solo mucha codificación técnica fea.

Para terminar con una nota positiva, todavía es casi seguro que participaré en DCJ 17, si hay un DCJ 17 y mi horario lo permite. Entiendo que esta nueva competencia todavía es un trabajo en progreso, y lo que mencioné anteriormente son solo dolores de crecimiento. Es genial que alguien intente ejecutar este tipo de competencia, y espero ver en qué se convertirá en el futuro.

Creo que es una competencia bastante ordenada: aún necesita el conjunto de conocimiento algorítmico “regular” que necesita de Code Jam, pero algunos aspectos son bastante novedosos. Esta novedad combinada con el hecho de que no hay muchos materiales de entrenamiento hace que la competencia sea más interesante y les da a las personas “regulares” la oportunidad de llegar a uno de los 3 mejores sitios individuales (por ejemplo, ver Cuadro de indicadores – Ronda distribuida en línea – Google Código Jam – el turista no calificó).

More Interesting

¿Cuántos detalles técnicos sobre proyectos pasados ​​deben estar en el currículum de un desarrollador de software?

¿Son los desarrolladores de software rusos los mejores del mundo?

¿Por qué no hay más desarrolladores de software en el 1% superior de los que obtienen ingresos?

¿Cuál es la importancia del ciclo de vida de desarrollo de software?

¿Te pierdes o te confundes cuando tienes varios proyectos de desarrollo de software en marcha y en diferentes plataformas?

¿En qué proyecto simple puedo trabajar para tener una experiencia práctica en Docker?

¿Cuáles son las mejores herramientas para desarrolladores de software?

Como desarrollador de software / web para principiantes, ¿debería centrarme en aprender nuevos idiomas o crear proyectos?

¿Cuál es mejor, un desarrollador de software que escribe las pruebas unitarias pero no cumple con la fecha límite del proyecto o un desarrollador de software que ignora las pruebas unitarias y cumple con la fecha límite del proyecto?

¿Cómo trato con un compañero de trabajo lento que está comiendo demasiado de mi tiempo?

¿Cuáles son las compañías más seguras para desarrolladores / ingenieros de software en India?

¿Quiénes son los mejores desarrolladores de aplicaciones para niños?

¿Cuántos ingenieros de software hay en el mundo?

¿Qué campo de la ciencia de la computación se enfoca principalmente en algoritmo / lógica?

¿Los desarrolladores de Windows son menos inteligentes que otros desarrolladores de sistemas operativos?