
Mirando hacia el futuro, me gustaría llamar la atención sobre la situación caótica con el ganador de la primera etapa de la competencia. El ganador tomó 50 mil presidentes estadounidenses. PERO, hubo al menos otro desarrollador que escribió una aplicación idéntica y no fue recompensado de ninguna manera. Ni siquiera tomó el último lugar. Este desarrollador públicamente, a través de su sitio web - https://tgcontest.braychuk.com/ , contactó al equipo de Telegram con preguntas. Si alguien sabe algo sobre esto, por favor escriba en los comentarios.
Entonces comencemos.
Como saben, recientemente, Telegram envió un mensaje directo a todos sus usuarios de que iba a celebrar una competencia de programación.
Qué genial, pensé.
Bueno, lee los términos del concurso de Android:
Y lo que vemos allí: "El criterio principal es la velocidad y el rendimiento". Genial ¿No es esto lo que a muchos programadores les gustan las tareas de optimización? Solo los adoro. Entonces, se tomó la decisión de participar en la competencia, queda por determinar el enfoque para la implementación. Una cosa está clara: debe abordar la solución del problema de rendimiento de manera exhaustiva y fundamental. Entonces, para romper si no todos, entonces al menos la mayoría. Dado que un criterio más de la competencia, que, por supuesto, tenía menos rango que rendimiento, era el diseño de la interfaz de usuario, lo más probable es que tengamos que girar en torno a la interfaz de usuario de Java y usar los controles estándar que aparecen en el boceto del diseño. Sin embargo, no será rentable usar la interfaz de usuario de Java y renderizar en el área de superposición de OpenGL, aquí al menos causarán una reducción en el cambio de contexto. Pero queremos romper a todos con alto rendimiento. Entonces, la interfaz de usuario de Java desaparece, confiamos en el rendimiento y trabajamos en el diseño. Deje que los diseñadores lo hagan, somos orgullosos programadores :) . La solución es obvia: use OpenGL en pantalla completa, sombreador de vértices y escriba todo el código en NDK / C ++. Es decir solo necesitamos escribir un motor / renderizado de gráficos, que generalmente está escrito para juegos móviles, para dibujar gráficos de Telegram.
Sí, lo sé, estoy loco :)
Hay un gran inconveniente para este enfoque: necesitaremos escribir todos los elementos de la interfaz de usuario y prescribir interactividad para ellos, lo que consumirá una gran cantidad de tiempo. Por lo tanto, nos detenemos en la implementación de interfaz de usuario más simple: escribimos widgets interactivos de interfaz de usuario simples que pueden determinar el clic en sí mismos y hacerlo en forma dinámica (al moverse por la pantalla, en tiempo real).
Resultó aproximadamente lo siguiente:
En realidad, todo lo anterior se implementó en dos semanas, en tiempo libre del trabajo de oficina, con noches de insomnio, por supuesto.
¿Qué hace Telegram? Completamente elimina mi aplicación de la competencia con la redacción "Incumplimiento del diseño, que muestra gráficos en una pantalla".
STA?
Supongo que la competencia me confundió inicialmente :) Entonces, ¿no es una competencia de desarrolladores que pueden mostrar su nivel de competencia mediante la implementación de aplicaciones / algoritmos de alto rendimiento, sino más bien una competencia de diseñadores? ¿O es una competencia máxima para los desarrolladores de UI que pueden usar herramientas estándar de diseño de UI, así como también pueden tocar el lienzo en la misma IU?
De acuerdo, higos con él, con el diseño. No discuto, hay una discrepancia :) . ¿Y qué pasa con la redacción: "mostrar gráficos en una pantalla"? Pero esto ya es interesante.
Si nos fijamos en las condiciones de la competencia, entonces no veremos tales requisitos a partir de la palabra "completamente". Entonces no puede ser. Entonces me equivoqué en alguna parte. Telegram sigue estrictamente sus bocetos de diseño y los sigue estrictamente. Por lo tanto, este requisito "visualmente" debe mostrarse en los mismos bocetos.
Nos fijamos en los bocetos:
Ejem ... En ninguna parte es visible que los gráficos están en una "hoja" común y se desplazan. En cambio, vemos gráficos dibujados por separado en una pantalla. Hay dos opciones posibles:
- Todos los horarios están realmente en la misma hoja común y desplazamiento, pero simplemente no lo mostraron visualmente en los bocetos y no registraron explícitamente todo en la competencia
- Los gráficos están cambiando de alguna manera. Cómo no se indica, lo que significa que es "predeterminado" y, en consecuencia, se deja al desarrollador. Puede darse cuenta de esto a su discreción.
En general, el equipo de Telegram, aprende a escribir TK, te será útil ;) . En serio
Calificación de desempeño
De lo anterior se deduce: mi solicitud no estuvo a la altura de una evaluación de rendimiento. Pero aun así. ¿Cómo califica el carrito el rendimiento?
Se ve así: "Probamos su aplicación en dispositivos antiguos y funciona menos fácilmente en comparación con los demás".
STA?
Telegram, ¿dónde están los números? Tablas de resumen de pruebas, comparación con otras aplicaciones basadas en datos objetivos expresados en términos numéricos.
Debería haberse visto así:
- Tomamos su solicitud, la lanzamos en 1000 puntos de inicio de nuestro cuadro, luego a 10,000, luego a 100,000 y a 1,000,000, obtuvimos estos números FPS
- Su aplicación recibió más puntos por el rendimiento alcanzado.
- Por la discrepancia entre el diseño y la basura importante para nosotros, su solicitud recibió menos tantos puntos
- Como resultado, en total, su solicitud obtuvo N puntos
- Y como resultado, su aplicación es Kth en la tabla de resultados general
Este enfoque en la evaluación de algo es algo natural para cualquier profesional. ¿Quizás Telegram también evalúa la calidad de sus algoritmos de comunicación de audio? Por el oído? No es de extrañar entonces por qué todavía deja mucho que desear. A mis colegas estadounidenses, en tales casos, les gusta decir: "Es un dolor de culo". Sin embargo, es justo decir que tenía una opinión mucho mejor del equipo de Telegram en general.
Evaluación de estabilidad de la aplicación
Y el final.
¿Cómo evalúa el carro la estabilidad de la aplicación? De hecho, de acuerdo con este criterio, el Carrito eliminó una tonelada de aplicaciones de la competencia. Por un momento, llamaré su atención sobre el hecho de que el criterio de estabilidad en las condiciones de la competencia "Etapa 2" no aparece de la palabra "completamente".
Pero no obstante. Cortaron las aplicaciones con una redacción de plantilla: “Lanzamos su aplicación en varios dispositivos. En el dispositivo K y M se estrelló "
Me da vergüenza preguntar, pero ¿dónde está la lista de dispositivos en los que va a probar aplicaciones competitivas? Se suponía que esta lista era pública, de modo que todos los competidores lo supieran de antemano. De lo contrario, ¿quién garantizará que si una aplicación de 10 falla en un dispositivo de 5, entonces funciona menos estable que todas las aplicaciones restantes que no se "cayeron"? Pero, ¿qué pasa si tomo estas 9 aplicaciones y las ejecuto en los otros 5 dispositivos en los que bloquearán todo, de lo contrario, no lo es? ¿Cómo te gusta este caso? Entonces, ¿cómo evaluará Telegram la estabilidad de las 10 aplicaciones?
Por lo tanto, hay un error clásico cometido por el sobreviviente.
Aplauda Telegram, cortina ...
La conclusión del patólogo.
Por lo tanto, concluimos que esta competencia es una pirámide financiera y alimentaria, Naedalovo:
Y desafortunadamente, hay muchos participantes en la competencia que tampoco entienden cómo y por qué tomaron este o aquel lugar, o no lo tomaron en absoluto. Por supuesto, siento pena por el tiempo y el esfuerzo invertido. Pero todos los arrepentimientos se nivelarían si el concurso fuera abierto y transparente.
Gracias por su atencion!
PS
Descargue apk-chechka desde aquí