¿Debería despedir a un desarrollador por un error grande y costoso? Creo que no, pero la gerencia quería sangre.





Todos en Inglaterra están obsesionados con el fútbol. Muchos equipos de aficionados y toneladas de estadios. Y a través de algunos conocidos, se me acercó un inglés que tenía una idea y algo de dinero: me pidió que hiciera una aplicación en la que la gente pudiera gestionar su equipo de fútbol amateur. Coloca gente en el campo, haz sustituciones, busca jugadores, reserva estadios y charla.



En ese momento tuve un período extraño en mi vida, y no sé cómo sobreviví en absoluto. La universidad durante el día, en la noche trabaja como backend de guardia hasta la mañana, y en algún punto intermedio entre los cursos de desarrollo de Android. Además, tenía la energía y el entusiasmo suficientes para ir allí no para mostrar, sino para encenderme de verdad.



Entonces acepté trabajar. Y fue solo una salida después de lo que pasé en el desarrollo de backend.



En mi escuela, en el aula de matemáticas, había un cartel con una inscripción que de inmediato me intrigó. Entonces me convencí más de una vez de la exactitud de estas palabras:



El programa no hace lo que quieres, sino lo que está escrito



Cuando entré a la universidad, en una reunión con los profesores, dije, ellos dicen, quiero ser programador. Me aseguraron que lo harás. Es cierto, agregaron que para convertirse en programador tendrás que estudiar toda la vida. Habiendo interpretado esto de alguna manera a mi manera, no estiré la formación durante toda la vida y me amontoné en su totalidad: parejas en la universidad, cursos por las tardes, freelance por la noche.



Buscar un trabajo a tiempo parcial me llevó a un proyecto interesante: el desarrollo de un motor de reconocimiento de voz en el lado positivo. Junto con el equipo, luchamos por el porcentaje de reconocimiento: ¡realmente esperaba impulsar el coche hasta el 100% del resultado!



Fue el verdadero dolor de un perfeccionista. Se me ocurrieron mis propias soluciones, tomé los motores de código abierto de otras personas, los desmonté en engranajes y los volví a ensamblar. Personalicé el código, no dormí por la noche, picoteé en parejas. Desenrollé kilómetros de código por un pequeño porcentaje en la línea de meta.



No salió nada de eso. No fue hasta un par de años después que descubrí que esto era inalcanzable. Recibí la noticia de que la red neuronal de Facebook reconoce rostros con una probabilidad de no más del 95%. Simpatizaba con Facebook: incluso una empresa tan grande no pudo llegar a los cien. Y también había una excelente posdata en el artículo de que una persona reconoce caras con una probabilidad del 93%. ¿Seriamente?



Así que, por primera vez, me decepcionó un poco el desarrollo.



Probé la interfaz, pero todo lo que sabía sobre ellos se encontraba en el área del estereotipo "hacen sitios web". Sonaba aburrido incluso entonces. Quería algo más interesante. Para encontrar una nueva área, me mudé a Skolkovo.



La magistratura de Skolkovo pagó una buena beca. Pero si quieres vivir en Moscú a gran escala, clava un poco más. Encontré una vacante para una empresa del sector financiero. Era necesario escribir en pitón y, a veces, estar de guardia por la noche.



En la entrevista, me impulsó a fondo el multiproceso, las ventajas en una hoja de papel (era difícil escribir código a mano). Preguntaron por algunas cosas básicas sobre Python, y al final lo aceptaron.



Antes de esta empresa, solo trabajaba en equipos pequeños. En el caso del reconocimiento de voz, trabajamos cinco, pero aquí la manzana no tenía dónde caer de los desarrolladores. Y todos sabían más que yo. Me bombardearon con preguntas y me sentí feliz cuando mi trabajo recibió comentarios. Las primeras tres semanas dominé el oficio. Cada revisión de código terminó con una respuesta "mala". Rehice todo, pero no mejoró. Mi código tenía que ser aprobado por al menos 4 personas. A veces, tres decían "normas" y el cuarto todavía encontraba algo de qué quejarse.



También me mostraron una forma interesante de revisar: le doy el código al cliente potencial, marca algunos lugares, pero no dice cuál es el problema, tengo que intentar resolverlo yo mismo. Y realmente empiezas a pensar, es muy emocionante.



Pero incluso un control de calidad tan estricto no nos salvó de problemas.



El trabajo estuvo relacionado con bases de datos. Los servidores de la empresa almacenaban toneladas de información financiera de los clientes (tarjetas bancarias, historial de transacciones). Una vez cada 5 días, había una noche que tenía que pasar en el trabajo. Me aseguré de que todo funcionara, respondí el correo y las llamadas. Me gustaron los turnos de noche. Por la salida no pagaron ni el doble, sino el triple. Me senté de guardia desde las 9 pm hasta las 6 am, me pagaron como por 3 días. ¿Qué más necesita un estudiante?



Además del dinero, el estudiante necesita dormir lo suficiente.



En nuestra empresa, todos los procesos de trabajo se construyeron a la perfección. Comprobaciones, pruebas, revisiones. Nuevamente verifica, prueba y revisa. Pero incluso un sistema así puede fallar, y debe estar preparado para que, como un soldado conscripto, lo levanten por la mañana en alarma.



Un buen día regresé del servicio. Me caí de los pies. Fui a la universidad e interpreté a un estudiante. Al anochecer me desmayé muerto, y ni siquiera eran las ocho. Quería dormir por la eternidad, nada menos.



Pero a las 4 de la mañana me despertó la persona responsable de todo el respaldo de la empresa; me llamó por primera vez.



- ¿Hiciste algo con la base ayer?

- No, nada especial.

- Levántate y ve a tu computadora con urgencia.



Soy una persona mañanera, por supuesto, pero todavía me volví loco por la llamada. Mi reloj estaba en vísperas del accidente.



Por supuesto, el primer pensamiento es que lo rompí todo



Resultó que acababan de eliminar a todo un grupo de usuarios. Ella no estaba en la tienda. Pero ella siempre existió aquí, ¿dónde cayó? Empecé a buscar. Miré los registros que comenzaron. Empecé a fumar estos registros (tardé la primera media hora en despertar, otra media hora en calentar los registros y comprender qué scripts se iniciaron). Descargué los guiones para mí, miré lo que estaban haciendo, desenterré cuál de ellos subió a este lugar en particular. Y encontré un error.



Lo lanzó en un entorno de prueba: los usuarios de prueba fueron eliminados. Mmmm, mira cómo se probó esta cosa. Por alguna razón esta vez, aunque tenemos tres devstends, el primero y el segundo se perdieron, y el tercero ni siquiera se cayó. Nadie escribió una prueba para esto (me marqué para escribir para que esto no volviera a suceder).



Paralelamente a mí, mucha gente estaba sentada y buscando un problema, llamando constantemente. Finalmente, a las 6 de la mañana, nos dimos cuenta de que alguien había escrito un guión, lo comprobó en una prueba, pero no tuvo en cuenta un caso importante. Como resultado, los usuarios cayeron dentro de los que estaban sujetos a eliminación.



Así que golpeamos alrededor de un millón de usuarios durante la noche



Restauramos la base de datos, hicimos una copia de seguridad. Hasta que supimos del problema, los usuarios ingresaban cada vez más datos durante la noche. Les escribimos a todos sobre un problema técnico, cerramos la entrada para que no hubiera flujo de información nueva. Era necesario congelar la base de datos en 7 horas, pasarla a la que era cero, devolver todos los usuarios. Para aquellos que intentaron ingresar, pero no pudieron, la compañía canceló una disculpa separada, cargada de bonificaciones.



Arreglamos todo a las 7 am. A las 8 en punto, la empresa despidió al hombre que lo elaboraba todo.



El chico trabajaba bien, siempre revisaba todo. Un par de veces incluso me revisó y sugirió cosas realmente interesantes. Pero es como conducir. En el primer año al volante, tiene miedo de todo y camina penosamente por el carril derecho. Luego te relajas un poco, ¡y en este mismo momento tienes un accidente!



¿Despediría a una persona por un error? "El programa hace lo que usted escribió". Pero estamos desarrollados, cometemos errores constantemente. Imagínese lo malo que era este tipo esa mañana. ¿Y por qué poner a una persona que ahora verificará todos los caracteres de su código? Pero la gerencia quería sangre, y en las próximas semanas, varios más involucrados en este caso volaron.



Trabajé allí por un par de semanas más, pero ya me di cuenta de que quería dejar el backend.



En Skolkovo noté lo interesado que estoy en un proyecto con desarrollo de Android. Desarrollamos una aplicación y la vinculamos a arduino. La tarea era bastante simple: tenías que conectarte al arduino a través de bluetooth o wifi desde tu teléfono y enviar el comando. La aplicación tenía un par de pantallas con botones. Tal como se concibió, el arduino se asoció con el diseño de una casa inteligente y se suponía que estos botones debían abrir y cerrar ventanas.



Había razones más que suficientes para enamorarse de un androide a primera vista



Realmente me gustó que haya una interfaz de usuario. Me gustó la capacidad de hacer animaciones (ahora en el desarrollo de Android me encanta esto). La documentación de Google era mucho mejor que la que había visto antes. Java ha superado Python y C ++. Mientras estaba tomando cursos sobre Android en el cursor, me di cuenta de una cosa:



es importante para mí ver el resultado de inmediato.



También facilitó la explicación de lo que estoy haciendo. Trate de decirle a la persona qué es un trabajo de backend. Por qué es necesario y así sucesivamente. Con un Android, simplemente sacas tu teléfono y dices: Yo hice esta aplicación.



Ese caso con el fútbol: me dieron un borrador escrito por indios. Para ser honesto, no les fue muy bien. En lugar de extraer código en una función, volvieron a copiar 700 líneas. La refactorización tomó dos semanas.



Y lo terminé de todos modos y me coloqué tremendamente. Me di cuenta de que quería seguir haciendo esto y comencé a buscar una empresa con la que trabajar. Pasé por la e-legion de la escuela de Android, hice una prueba, conseguí un trabajo y ahora me dirijo al desarrollo de Android aquí.



Y estoy increíblemente contento de que a las cuatro de la mañana no me levanten para salvar las bases en llamas y luego no me obliguen a hacer listas de ejecución.



All Articles