Perdí la fe en el desarrollo, me quemé, pero el culto a la herramienta me salvó



A menudo critico las tecnologías que me parecen incorrectas, y a cambio recibo no solo argumentos, sino también malicia, resentimiento e incluso en la cara.

Las inyecciones dirigidas a la tecnología son desarrolladas por los desarrolladores a su cargo. La herramienta de culto es algo muy extraño que no se puede explicar lógicamente. Algunos dicen que todos tienen un culto, porque el pensamiento está estrechamente entrelazado con el ladrido. Otros dicen que es una enfermedad juvenil: usted escribió algo por primera vez, sucedió, por placer pensó que su ladrido era un milagro de Dios.

Sea lo que sea, nunca entendí esta basura.

Los partidarios de los cultos me parecen imbéciles intransitables. Y siempre trato de entender cómo los tontos se convirtieron en tontos, y por qué no me convertí en tonto. Comenzó a pensar y bam! - Me di cuenta de que lo hice. Soy un cultista tonto que elogia a F #. Y, por supuesto, hay una historia detrás de esto.



Comencé mi carrera como junior C # dev. Raw luego Xamarin, desarrollo para Android. Los primeros pasos en el primer trabajo estuvieron llenos de dolor. Solo hice la aplicación usando capturas de pantalla y gifs de la versión de iOS. Todo funcionó una vez, hubo muchos problemas y el único comentario que recibí fue "¿por qué no me gusta en la imagen?". Fue una pesadilla, y rápidamente me fui.

Estudió en casa durante seis meses, luego consiguió un trabajo en un gran personal. Todo estaba allí como en las personas: el equipo, los mentores, los exámenes, los patrones, las revisiones de código, la estricta interfaz, los requisitos más altos de calidad, legibilidad y rendimiento del código. En una palabra: un enfoque adulto. Definitivamente decidí por mí mismo: esto es exactamente lo que hay que hacer. Pero resultó que esta pesadilla es aún peor.

Durante más de un año, hemos formado un equipo completo de un módulo para una herramienta que funciona con herramientas diseñadas para desarrollar herramientas. Quizás los mismos que necesitamos para hacer el módulo. Todos los días nos vimos obligados a llamar a indios o estadounidenses, y no está claro sobre qué informar.

En algún momento, noté que estaba haciendo cada vez menos, pero nada estaba cambiando. En un inglés quebrado, mentí con franqueza: “Olvido vik ay serch por error. Steele sabe saxos. Continente de Ville »

"Ok Phil, suena genial", dijo en el extranjero.

Una vez, en un ataque de vergüenza y desesperación por mi inutilidad, fui a las autoridades y pedí que me despidieran, pero por alguna razón recibí un salario. Sobre esto ya lo he dicho . No era ni gracioso ni alegre: era un sur suicida, como si el mundo de la inutilidad hubiera derrotado al mundo de la lógica.

Una extraña contradicción, pero al mismo tiempo por aburrimiento y súper ambición, decidí interpretar a un desarrollador genial en casa. Muchas ideas siempre han estado plagando en mi cabeza cómo mejorar el mundo y su billetera con la ayuda de proyectos de software. Hice todo bien. TK, arquitectura, requisitos del sistema, proyecto en VSTS. Todo de manera adulta, al igual que las corporaciones.

Nikher no funcionó.

Decidido: la idea es una mierda. El código basura, tomo una nueva idea, renuncio, todo se repite varias veces. Les digo a mis colegas que están perplejos. ¿Cómo es eso? Después de todo, hago todo exactamente igual que aquellos que ya han arrebatado su pieza.

Una persona con mi autoestima suele ser más fácil de vivir que otras, pero cuesta mucho pagarla. Necesita autoengaño de alta calidad para soportar sus fallas. Y me dije a mí mismo: cualquier desarrollador puede hacer cualquier cosa. Toda la pregunta es cómo se hará esto. Y mis requisitos para este "cómo" son demasiado altos. No son adecuados para "startups" domésticas y no son dignas de tareas comerciales inútiles. El siguiente pensamiento: "No estoy listo para abandonar mis estándares de calidad". Incluso si necesita hacer una aplicación que coloque pedos en la pantalla, la haré de la mejor calidad y consideración posible.

Como resultado, organicé un culto local de negocios de carga en casa. Trajo rituales, procesos, órdenes, pero no contenido. Acabo de interpretar a un desarrollador de negocios sin un negocio, como un papú que cegó una pista y torres de paja, y ahora espera que los pájaros de hierro se sienten allí, como personas extrañas en una isla vecina.

Escribí montones increíbles de código formal que no me acercaron al resultado, pero por el contrario, deambulaba y daba vueltas. Mi carrera es, maldita sea, una historia de fracasos y decepciones. Escupí sobre todo, me puse fin y solo miré programas de televisión en el trabajo, bebí 16 tazas de café y fumé durante medio día.

Al llegar al fondo, absolutamente por casualidad leí un artículo sobre Habré sobre F #, lo intenté, y tal: “¡Hm! No está mal ". Mi empleador con mucho gusto me pagó un mes de capacitación (sin embargo, él no sabe sobre esto).

F # no fue difícil de aprender, tiene el mismo tiempo de ejecución que C # y apliqué el enfoque funcional a la programación todos los días en TypeScript. Entonces me di cuenta de que puedo transferir cualquiera de mis proyectos a F #. Dejemos mi habilidad técnica fuera de los corchetes, porque la habilidad es algo relativo. En los equipos donde trabajo ahora, soy genial, y en el equipo de, por ejemplo, desarrolladores de F #, podría reclamar, como máximo, el puesto de asistente de limpieza.

Pero a mi nivel ya podía resolver problemas. Aunque en el fondo lo sabía bien, no decidiré nada. Simplemente gire mis cerebros y continúe arrojando conocimiento a la basura. Perdí completamente la fe en el desarrollo.

Y un día decidí que abandonaría toda esta mierda. Era invierno, frío y oscuro. Salí de la oficina en la calle, me metí en una carretilla, no arrancará. Finalmente el motor se sacudió. No sé qué pasó antes, o sentí el olor a quemado o vi humo. Entonces una llama estalló debajo del capó. Otro segundo, y yo, como un psicópata, corro por el estacionamiento y les grito a todos que alejen mis autos del mío.

Después de cinco minutos de pánico y caos, solo había un viejo pedazo de mierda quemada y un vidyushka de todo tipo de tontos que luego obtuvieron miles de visitas en el local "escuchado". Menos 30, estoy en la chaqueta de otoño de un hombre que iba a irse a casa en un auto caliente. Relleno hasta el final, completamente roto moralmente. Sin dinero de taxi, transporte público para móviles. Me fui a casa a pie, diez kilómetros. En casa, debe ayudar a su esposa e hijo, comer, acostarlos, hacer mil cosas. Pero llega la noche, las distracciones terminan, las excusas también, y me quedo solo con decepciones e insomnio. No sirvo para nada, nada funcionará.

En esta peor tarde de mi vida, aún sin calentarme, decidí intentarlo por última vez.



Me senté y decidí escribir un pequeño bioma digital en F #, donde las unidades de aprendizaje automático interactuarán con ellas mismas, se desarrollarán, y cambiaré los parámetros y veré en qué convierten este mundo.

Y sí, tal vez entonces me volví loco.

Por lo general, uso una combinación de un enfoque de diseño de arriba hacia abajo y de abajo hacia arriba. Describo la solución en términos generales usando pseudocódigo. Luego empiezo a implementar los detalles más importantes, que, como módulos independientes, hago lo contrario. De detalles a general.

Ya sin pseudocódigo, implemento un par de tres módulos grandes y veo si esto funciona. Por lo general, no funciona, y comienzo a usar iteraciones, repitiendo este proceso de principio a fin hasta que comienza. Pero más a menudo solo lanzo iteraciones en el quinto o sexto.

Con F #, apliqué el mismo enfoque. Tuve una visión del proyecto, en términos generales. En la cabeza, ladrillo por ladrillo, se está construyendo la realización. Piensa en un caso tras otro, y en algún momento lo comprende: todo, ya sabe cómo codificarlo. Y luego te sientas a codificar, y entiendes que no. Los pensamientos no se transfieren a YP, aunque te pareció que piensas como si estuvieras en él. Lo tengo tan constantemente.

Pero resultó diferente. Creé un archivo txt en VSCode y escribí un pseudocódigo para una función que describe el ciclo de vida de mi aplicación. Y me di cuenta de que mi pseudocódigo es válido F #. No es necesario cambiar nada, acabo de escribir la función principal del proyecto. Bien, cambié la extensión del archivo, lo agregué a una solución limpia. Aquí está la función del ciclo de vida. Toma el estado actual del mundo, lo que lo procesa (en realidad el mundo mismo) y escupe el estado actualizado, lo que convierte el estado en un conjunto de parámetros para la IA y viceversa, y la IA en sí, que recibe sus parámetros, escupe la decisión.

Entonces todo es simple. Tomaron el estado, lo convirtieron en parámetros AI, alimentaron las funciones de la IA, volvieron el resultado al estado, a su vez, se le dio a la función del juego, y el resultado se le dio a la misma función del ciclo de vida. Recurrencia divina, algoritmo simple, código hermoso, todo GoF listo para usar. Queda por implementar todas estas funciones.

Pero el punto aquí es que ya no necesito pensar en arquitectura. Escribo lo que los sharpe-javists llaman el término genial Inversión del contenedor de control, una función que toma una función de ciclo de vida y la arroja a los parámetros de función de mis módulos (II, Juego). VScode lo subraya en rojo, porque todavía no hay módulos o funciones en ellos. Pero entendí lo principal: tan pronto como desaparezcan los subrayados rojos y se pueda construir el proyecto, la solución estará lista.

Solo lo tomo e implemento estos módulos uno a la vez, trabajando de la misma manera. Todo el proyecto son cinco archivos. Archivo AI: 500 líneas, muchas, pero idiomáticas. La belleza del enfoque es que pude escribir una función de ciclo de vida laboral, el corazón de mi aplicación, sin describir nada más.

Toda la arquitectura es de 10 líneas de código escritas en un minuto. No hay interfaces, fábricas abstractas, IOCs, todos estos DefaultInterfaceNameClass y otra basura que necesito hacer en C # antes de siquiera entender lo que quiero hacer. Toma y escribe un código tonto que simplemente resuelve el problema, y ​​lo obtiene aún mejor que su empresa que sufre con estos objetos punzantes de Java.

Lo hice simplemente dirigiendo mis pensamientos al editor, como si estuviera pensando en F #. En los lugares donde escribiría un plan de trabajo en C # en los comentarios al código, descubrí las funciones de trabajo. En lugar de describir docenas, y luego cientos de interfaces, un archivo pequeño con un modelo de dominio de la aplicación. Construirlo. Tengo una solución que funciona. Por la noche Con un buen código, que luego no tuvo miedo de mostrar en el perro. Tan simple

Por la mañana le escribí al trabajo que estaba enfermo, y me sumergí de lleno en el proyecto durante una semana, hasta que me di cuenta de que mi idea se realizó durante mucho tiempo y que nadie la necesitaba. Pero recuperé mi fe, y eso fue lo principal.



No sé cuál es el problema aquí: es F # la tecnología más increíble, o simplemente me queda muy bien, o fue creada específicamente para tales tareas, ¿cuál es la diferencia? Lo importante es que en ese momento me estaba ahogando y necesitaba un salvavidas. La vida me arrojó F # y salí. Ahora, esta no es solo una tecnología sin alma para mí, es un gran alcance emocional.

Cuando alguien se ríe de mí F #: “¡Tecnología nata muerta! Un juguete para nerds ... "- Inmediatamente recuerdo la oscuridad invernal, un auto en llamas, un cigarrillo congelado en mis labios, un estado deprimido y F # que me sacó de él. Es decir, parecían cagar a mi mejor amigo. Mi reacción es obvia: estoy ofendido y enojado.

Parece extraño desde el exterior, pero si vivieras ese día en lugar de mí, reaccionarías también. Creo que ese es el caso con todos los cultistas de la tecnología. Se enamoraron de sus yapis, porque las circunstancias en las que los conocieron son muy graves para ellos personalmente. Y aquí vengo, y escupo en sus almas. ¿Y quién es un idiota? Soy un idiota Ojalá no lo haga.

En todo caso, sobre F # aquí .

Source: https://habr.com/ru/post/es436202/


All Articles