Para aquellos que simplemente se desplazan más lejos, un breve resumen: "google: freelance firman un contrato" gracias por su atención.
Una descripción un poco más completa: cómo descubrí nuevas alturas de gestión gracias a un cliente cuando trabajaba en un proyecto independiente conjunto.
Los primeros dos actos son esencialmente introductorios, la culminación de la acción y la aparición del esqueleto en el armario se produce en el tercer acto. Aquellos a quienes les gusta ver solo la película final pueden pasar directamente a la
tercera parte .
Acción uno: tolerante
Actores: I, conocido C, Compañía X, CEO1Septiembre:
- ¿Quieres escribir un programa para Android para X?
- Vamos, pero no estamos involucrados en el desarrollo del diseño, ni en las pruebas, ni en la parte administrativa, por cierto, vamos a escribir en React-Native.
Octubre:
Después de hablar con el CEO1, establecimos la fecha límite: ~ 3 meses, acordamos cómo se lanzará la aplicación; inicialmente entregaremos a un número limitado de usuarios, si todo está bien, lo daremos a un gran número, luego terminaremos los pagos, peinaremos el diseño y el lanzamiento, después del lanzamiento terminamos algunos, no es muy importante , cuestionario (prueba de usuario por material). Termina con seis meses de soporte. Hablamos un poco sobre la tecnología React-Native: el CEO1 temía que la tecnología fuera nueva, pero aseguramos que en caso de problemas críticos, nos culparíamos a nosotros mismos, lo que, por supuesto, podría afectar los términos. Los temores fueron en vano, React-Native + Redux ha demostrado ser bueno. La idea de que puede reemplazar la aplicación de iOS con una también le gustó a la otra parte, aunque esta tarea fue más allá del alcance del acuerdo.
Tan pronto como se acordó esto, en un par de semanas emitimos un prototipo y un documento que enumera la funcionalidad principal, después de lo cual el cliente inesperadamente deseaba comenzar a probar ya en diciembre para el nuevo año con el lanzamiento. Estábamos un poco sorprendidos de que aún no habíamos comenzado realmente, y los plazos ya se nos acababan, pero en cualquier caso no lo retrasaríamos y dijimos que lo intentaríamos.
Noviembre:
Lleno la aplicación con funcionalidad, sin olvidar la hermosa animación, incluso me tomo unos días libres en el trabajo principal para llegar a tiempo, atornillo los hilos para que luego el diseño se pueda cambiar de manera rápida y conveniente. En React-Native, todo se crea con bastante facilidad y sencillez. En un momento, todavía había problemas con Redux, pero, después de un día y medio de la prueba, llegué a la conclusión de que lo preparé un poco incorrectamente: no puede hacer "una página con redux <=> muchos componentes", pero necesita una "página <=> muchos componentes con redux ”, todo comienza a funcionar bien, pero desde entonces empiezo a iniciar periódicamente la aplicación en Redmi-2 con 1GB de memoria para prevenir tales casos. El resultado de noviembre: unos días antes de principios de diciembre, todo lo prometido está listo, la aplicación es bastante funcional y se puede enviar a la primera ronda de pruebas.
Diciembre:
Durante aproximadamente tres semanas, la otra parte intenta hacer una lista de 10 personas a las que se puede enviar la solicitud, después de que desaparece por completo, en general, es posible entender: el nuevo año está llegando pronto. Arreglo problemas menores, mejoro y optimizo algo.
Enero:
Mediados de enero Llega una carta que indica que la lista está lista y finalmente se envía a los primeros evaluadores. Llegan dos revisiones bastante detalladas, que en general evalúan positivamente la aplicación, e inmediatamente corrijo los comentarios no críticos. Pero algo estaba mal: comenzaron las quejas de que otros usuarios no podían iniciar sesión con sus nombres de usuario y contraseñas. Sin siquiera pensarlo, asumimos que el problema está en algún lugar del lado del cliente de prueba, y lo más probable es que los datos no coincidan con el hecho de que en el servidor principal, en un par de semanas, esto se aclara y corrige simplemente volviendo a cargar los datos del producto a la prueba.
Fijo la funcionalidad de pago a google-play, aunque su implementación aún no está en el back-end, hago la interacción por analogía con lo que está en la aplicación iOS para apple-store, escribo un emulador de back-end para esta funcionalidad, estoy probando.
Acción 2: incremental.
Actores: yo, amigo C, gerente CEO2, probador T, director D.Febrero:
Déjame recordarte que febrero ya ha comenzado. Pero, ¿qué pasa con el momento ?, ¿por qué tenía prisa? Bueno, está bien, la etapa ha terminado y la aplicación, incluso con un retraso, es en cualquier caso mejor que ninguna. Estamos a la espera de que se solicite a los primeros diez que vuelvan a realizar la prueba, pero no se vuelve a enviar el correo, ¿cómo es que nos sorprendemos? Estamos buscando empresas D. Un par de semanas después, llega una carta que dice que CEO1 está siendo reemplazado por CEO2, no se me ocurre nada excepto el banal "este es un turno". Por supuesto, asentimos con la cabeza, pensando que entendemos las razones por las que se eliminó al CEO1, y ahora todo probablemente funcionará. CEO2 comenzará a trabajar el próximo mes.
Marzo:
A mediados de mes, aparece un nuevo CEO2 que, en la primera semana, dice lo correcto: trae el probador T, nos dice que en ningún caso deberíamos pasar tiempo probando la consola o configurando cualquier otro asuntos administrativos, y el probador T se ocupará de todo esto. Lo principal es ahora que tenemos una JIRA común para la interacción y la coordinación. Es bueno e incluso excelente, decimos, pero los plazos ya se han perdido mucho, y el proyecto esencialmente se ha empujado a una caja larga, así que ahora, para sacarlo, establezcamos algunos plazos para ambos lados + entonces todavía tenemos que mantenerlo durante seis meses . Bueno, nos dicen, consideremos que el primer día de mayo es el comienzo del soporte y el pago de la garantía, incluso si no nos preparamos para este momento. No hay problemas, respondemos, determinemos lo que es crítico para nosotros.
Después de una semana o dos, resulta que hay tres cosas críticas principales:
1) Por alguna razón, el cuestionario fue el primero, aunque antes nos dijeron qué era lo menos importante de toda la aplicación.
2) La validación de la validación de correo electrónico de inicio de sesión está en el lado del cliente.
3) Pago, aunque también debe ser solo después de la primera etapa de prueba.
4) iniciar sesión a través de Facebook, aunque en enero se nos pidió que lo elimináramos.
La lista de bloqueadores y problemas críticos incluye cosas como:
4) El separador vertical entre inicio de sesión y contraseña en la página de registro.
5) Minimice el teclado en la página de cambio de contraseña en la cuenta de usuario al cambiar entre campos.
El punto # 1 se realiza durante la semana, en paralelo, la importancia del punto # 2 se discute aproximadamente tres horas dos veces por semana, ya que resulta que hay estándares de desarrollo de aplicaciones conocidos por todos (
excepto yo, por supuesto ), sin embargo insisto en que esto no solo no es necesario, pero no afecta significativamente el backend, no solo requiere la duplicación de la misma lógica en todas las aplicaciones y el sitio, además, hay usuarios corporativos en el sistema que no tienen un inicio de sesión por correo electrónico. La otra parte dice que entenderá este problema con gran detalle, después de una semana y media aparece un documento de varias páginas que describe todas las opciones de inicio de sesión en todas las aplicaciones y en el sitio (además, son las mismas), aunque todavía no está claro cómo coordinar los elementos para diferentes tipos de usuarios. . Me saltearé los detalles, solo diré el resultado de muchas horas, la otra parte finalmente acepta mi propuesta. Finalmente, CEO-2 está lanzando la funcionalidad de pago # 3 - google-play para backend.
Abril:
Realizo todas las tareas críticas, mayores e incluso menores (
incluso las que, en mi opinión, no son así ), ya que no es muy difícil, es más fácil de hacer que discutir. Backend realiza el pago, pero no devuelve algo en uno de los pasos, que generalmente es normal para el proceso de desarrollo.
Aquí es donde entra la primera llamada extraña, CEO-2 inesperadamente ofrece asegurarse de que la aplicación funcione "lo más rápido posible", que sea lo más rápido posible, no lo entiendo muy bien, el probador de T dice que en general todo está bien, ningún usuario anterior ha mencionado problemas de rendimiento, pero, aquí, ingenuidad, digo que en el teléfono más antiguo que encontré, noté que la salida de la página de búsqueda cuando se muestran los más de 300 libros aparece con retraso, pero para algunos problemas más relevantes, este problema no es tan crítico en No veo nada
Quedan dos semanas hasta el comienzo del próximo mes, todo lo que se prometió en esta etapa se ha hecho (de hecho, todo, excepto un archivo adjunto de diseño, incluido lo que no comunicaron), e incluso, en mi opinión, mucho más: se han mantenido horas de timbres inútiles, como ya nada puede pasar. Todo lo que estaba cerrado para mí en JIRA, pero ... comienzan los bloqueos de telegramas, donde tenemos una conversación común. En general, es intermitente, pero está claro que todos los participantes aparecen en línea, pero no responden y no escriben solo: CEO2 y T, después de una semana, finalmente está claro que algo está mal aquí, y nuevamente estamos buscando D.
Acto tres: final
Una semana después estamos invitados a telefonear. Se está expresando algo completamente nuevo que se decidió minimizar la aplicación, ya que su backend supuestamente tiene problemas de rendimiento, la razón parece dudosa, sigo diciendo que no observé ningún problema con el backend, y la aplicación almacena en caché todo , y tampoco puede influir en él. Pero se nos ofrece pagar solo una parte del trabajo, aunque también resulta que la aplicación ya se ha entregado a un cliente corporativo. No admito por qué demonios debería aceptar la parte cuando hicimos todo lo que prometimos, sin romper nunca los plazos, a diferencia de ..., y habría sucedido en enero, y esto se propone unos días antes del día programado pago A lo que CEO-2 afirma inesperadamente que la aplicación también tiene problemas de rendimiento (que es una razón conveniente y universal), aunque hace dos semanas durante las pruebas, esto no se anunció ni una sola vez. Pero eso no es todo, inmediatamente nos culpan por el hecho de que durante las pruebas en enero, la mayoría de los usuarios no pudieron iniciar sesión en la aplicación, ciertamente recuerdo la razón por la que fue, pero de alguna manera realmente no tiene en cuenta. D ofrece comprender los detalles de lo que se implementa, pero pide no entrar en detalles técnicos, no está muy claro cómo se puede hacer sin entrar en detalles técnicos, pero hago un informe detallado con el hecho de que se implementa en los puntos con el tiempo dedicado, además, grabo el video como la aplicación funciona y demuestro toda la funcionalidad, el video va acompañado del registro de la aplicación para que las solicitudes y respuestas del backend sean visibles.
Después de una semana y media, obtuvimos nuestro informe CEO-2, que hizo que mi cabello se moviera un poco, y luego mi estado de ánimo también disminuyó, por el hecho de que sucede. Noto que esto no es una especie de malentendido o, es ridículo pensar, la ingenuidad técnica del otro lado, hace un par de semanas hablamos un idioma que era comprensible el uno para el otro.
Voy a enumerar los puntos principales:
- El inicio de sesión de Facebook revela que es necesario activar el token de prueba para este usuario, del que escribí en JIRA. La conclusión del otro lado es que no hay una funcionalidad de inicio de sesión de Facebook.
- Registro a través de fb, no está claro de qué se trata, estamos tratando de averiguarlo, e incluso T está de acuerdo en que no hay tal funcionalidad en la aplicación, no hay funcionalidad, pero por alguna razón hay un punto. Veredicto: no implementado, pero no está muy claro qué es exactamente.
- Rendimiento: por alguna razón, nuevamente dos puntos, en ambos casos, aparece un teléfono nexus 5x con android 8.0.0 (en w3bsit3-dns.com y android-central hay muchos temas al respecto), y se muestra lo que dije en el teléfono al respecto: entra y sale muchas veces De la búsqueda, se puede ver que la aplicación ilumina periódicamente la pantalla blanca, que es visible en RN si la memoria está en problemas, lo que no observé incluso con 1 gb de memoria.
Pero en general, todas estas son pequeñas cosas que uno podría tratar de discutir, pero en el contexto de lo que sigue, esto no tiene sentido:
- Se toma una versión anterior de la aplicación , que emitió erróneamente una propuesta de registro en función de la disponibilidad de una suscripción, hace clic en el botón "Favoritos", aparece el mensaje "por favor regístrese", se concluye: no hay funcionalidad de favoritos. Lo mismo sucede en los botones "marcar como leído" y "recordatorios", y este mensaje crece a cinco puntos (de ~ 20 en total), algunos de los cuales se llaman de manera bastante global, no de otra manera que "entrega de contenido por la aplicación".
- No se menciona en absoluto la funcionalidad de reproducción de audio, pero lo curioso es que no hay pruebas sobre el material que se nos pidió que hiciéramos la semana pasada.
- Pago: con google-play va bien y va al back-end, pero en respuesta, el back-end muestra que no hay suscripción. El otro lado finge que no entiende en absoluto cuál es su backend , pero simplemente declara que la funcionalidad, como resultado de sus pruebas, se reconoce como no realizada, y el resto no son sus problemas. Es extraño por qué simplemente no se omite el backend y no se dice que la aplicación no produce nada más que un "error de conexión".
Y el clímax:
- Varios puntos de pago se consideran no implementados debido al hecho de que no hay suscripciones para 6, 9 y 12 en la lista de compras y algunos meses más que se toman de google-play, simplemente no los ingresaron allí , aunque dijeron que tratarían con la consola usted mismo
Los puntos se multiplican de alguna manera extraña, intenté hacerlo de diferentes maneras, pero no obtuve ese resultado, y concluimos que deberíamos estar contentos si pagan el 40% por el trabajo. ¿Cómo responde D, que parece haber asumido la responsabilidad de responder a tales argumentos? - De ninguna manera - fingió ser un pez.
Bueno, y el final, después de que quedó claro que no había nada más que descubrir y probar, se nos expresó directamente que lo que acordamos antes era exclusivamente nuestros problemas, pero lo que escribimos en JIRA y realmente no les importan los estados, ya que se está minimizando el desarrollo de aplicaciones.
Confieso la primera vez que me encuentro con una grosería similar en TI. Estaba listo para probar mi caso e incluso admitir que estaba equivocado si lo señalaba, pero lo que definitivamente no esperaba de una compañía que se posiciona como un producto para gerentes profesionales e incluso tenía un blog en un centro, una simple tontería.
Epílogo
Fue un momento decente, decidí preguntarle al backend si sabían sobre sus problemas de rendimiento, resulta que no había nada de eso. Decidí preguntarles a los que están involucrados en la aplicación iOS, y parece que ocurre un drenaje similar, pero la aplicación ya está funcionando: todo lo que están haciendo actualmente es cambiar los colores de las sombras y la longitud de la contraseña mínima de 6 a 8 caracteres y viceversa, mientras que Dijeron que había un problema de pago que requería un lanzamiento urgente, que los usuarios estaban en ebullición, la calificación de la aplicación está volando por una pala, pero parece que CEO-2 no lanzará correcciones. Por supuesto, compartí mis dificultades con ellos, a lo que me dijeron que la situación actual no causaba ninguna sorpresa, y contaron una historia sobre la que sabían de un ex empleado:
Hace mucho tiempo apareció un empleado en la empresa que no estaba relacionado con el desarrollo. Pero, después de un poco de trabajo, decidió que el sitio (ya que no había nada más) debería rehacerse, ya que le parece correcto (
aparentemente para que todo fuera "lo más rápido posible" ), pero, al final, parece que no pudo completar lo que comenzó y se le preguntó a la salida Sin embargo, después de varios años, de los que ya somos testigos, después del cambio de directores, volvió a aparecer en la empresa y continúa intentando activamente implementar su propio sitio, aún sin terminar. Y dado que el sitio, aparentemente, ni siquiera tiene una API primitiva para trabajar con aplicaciones, y los fideos de su preparación ya han sido colgados en los oídos del nuevo liderazgo, estas aplicaciones también interfieren con el plan de implementación, y necesitamos una excusa para deshacernos de ellas. y rehacerlo ya en el nuevo sitio.
En general, el mosaico se ha desarrollado, una cosa no está clara, y aquí está mi pago. Entonces, para el cambio, decidí describir este incidente. Tal vez alguien se divierta, pero alguien será ayudado a estar más atento (
probablemente nuevos desarrolladores futuros de la aplicación para Android :) ), y, probablemente, solo quería hablar y poner fin a esta historia.
PD:Si me reúno, también intentaré escribir un artículo técnico sobre React-Native, ya que realmente no quiero sacar ese color amarillento de este trabajo.