Los desarrolladores de pila completa están de hecho atrapados en el nivel medio. Ahórrate el sufrimiento, no sigas ese camino


En aquellos tiempos cuando recién comencé a aprender a codificar, confié en las viejas comadrejas sabias con su mantra "Los lenguajes de programación no importan". Me obsesioné con la idea de algún día convertirme en un desarrollador que pueda hacer cualquier cosa. Ese tipo que transfiere su experiencia de una tecnología a otra y trasciende las minucias. Pero esa idea fracasó miserablemente.


La obsesión de saberlo todo


Aprendí C # y .NET en diferentes dominios de aplicación (asp.net, wpf, xamarin), js / ts (react / redux, node) y me convencí de que tenía el poder de hacer lo que quisiera. Mi pensamiento era abstracto, era eficiente en varios paradigmas de programación al mismo tiempo y tenía habilidades prácticas en todos los aspectos de la ingeniería profesional de software. Estaba listo para ridiculizar a esas personas mayores de 40 años con su adicción a una sola tecnología, que habían pasado la mitad de su vida para comprender lo que podía comprender en una semana. Estuve a punto de declarar que profundizar en algún dominio del conocimiento era para imbéciles que estaban felices de tener el mismo trabajo por el resto de sus vidas, mientras que yo estaba abstraído de todo.


Pensé que todo era lo mismo de siempre, así que vi un patrón consistente. Ahora, cuando mi trabajo consistía en codificar en una ridícula Python, decía: 'Dame algo de tiempo para leer rápidamente las especificaciones, y estaré listo para trabajar con esta mierda en un nivel superior. ¿Por qué, qué complicaciones probablemente podrían estar allí, del tipo que no he visto antes? Y así caí presa del culto al descuido de los detalles. Deje que los jóvenes jueguen con los detalles, viendo que son incompetentes con la abstracción.


Las brechas de conocimiento son sutiles y no visibles de inmediato


Una vez elaboré un diseño basado en clases abstractas en TypeScript, y me ridiculizaron porque aparentemente nadie lo hace así en TypeScript. Ciertamente fingí que mis colegas eran idiotas sin remedio. Solía ​​ayudar antes, pero esa vez me dejó con un mal sabor de boca.


Su reputación de buen desarrollador puede ocultar sus lagunas de conocimiento tanto de sus colegas como de usted mismo. Por lo tanto, ignora una enorme cantidad de detalles críticos, pero, por supuesto, no puede verlos, exactamente porque no los conoce.


Fue entonces cuando comenzó mi mala racha. Poof! No tenía idea de los tipos de índices en SQL. Bam! Olvidé cuándo debería llamar a un constructor estático en C #. ¡Uy! No podría implementar IDisposable correctamente sin buscarlo en Google. Ah, y estaba tratando de mutar el estado de un componente de reacción.


Entonces sospeché que mi abstracción no estaba funcionando realmente. Que los tipos de tecnología con los que estaba tratando eran diferentes después de todo y que los detalles importaban. Cada ecosistema técnico tiene sus mejores prácticas únicas. Su experiencia .NET no le hará daño cuando trabaje con jvm, pero no puede reemplazarla. Mi habilidad autoevaluada de "haber aprendido a aprender" resultó ser un juego de imaginación. Mi velocidad de aprendizaje no fue más rápida que la de los demás. Esta comprensión llegó demasiado tarde.


Mi habilidad era solo una bolsa de ideas en conflicto: estaba siendo destrozado con pedazos de conocimiento de aquí y de allá. No me convertí automáticamente en un Jack-of-all-trades senior. En cambio, me convertí en un desarrollador de nivel medio con múltiples habilidades, un material de risa para personas mayores de 40 años que habían dominado una tecnología. Por lo tanto, me di cuenta de que elegir el camino de la pila completa fue un error.


Golpeándome sobre eso


El problema es que las empresas necesitan desarrolladores completos. No, no las imitaciones como yo, sino las personas mayores versátiles, los muchachos que tienen cinco años de experiencia en cada una de las tecnologías full-stack bajo sus cinturones.


Sin embargo, estos unicornios no existen, por lo que las empresas se engañan a sí mismas. Toman a un ingeniero mediocre de nivel medio que se especializa en tres tecnologías importantes y lo llaman desarrollador senior de pila completa. Este título de trabajo convierte al ingeniero en un impostor y sirve como una fuente inagotable de un complejo de inferioridad. Cualquier desarrollador ordinario que se concentre en una sola tecnología lo conoce mejor. Ahora puedo admitir que no estoy listo para colaborar en igualdad de condiciones con personas que son mucho mejores que yo en algo. De lo contrario, pasará una semana antes de que me haya golpeado hasta la muerte.


La auto-recriminación es una gran enfermedad en nuestra industria, pero la curamos con el remedio equivocado. Intercambiamos proclamas de cómo somos superhéroes rodeados de imbéciles. Negamos cosas como la devaluación de los altos ejecutivos, seguimos diciendo que nos subestimamos, solo tenemos que desechar nuestra humildad y creer en nuestra diosa interna del desarrollo de software. Creemos que debemos ponernos el sombrero de arrogancia y señalar a cualquiera que tenga muy poca fe en nosotros.


Bueno, solo tenemos que reconocer que el desarrollo es difícil no solo para los extraños, sino también para nosotros. No saber algo en un momento dado está bien. Si tiene una brecha, no significa que valga menos y que deba ser expulsado de la comunidad.


Pero en algún lugar en el nivel más profundo de autorreflexión todavía nos estamos golpeando. Los desarrolladores completos se maldicen por no tener un conocimiento profundo de la tecnología. Los expertos de una sola disciplina lamentan que no tienen una amplia gama de habilidades.


Aprender en amplitud vs aprender en profundidad


Aquí tenemos el mismo viejo dilema: puedes aprender en profundidad o en profundidad, pero no ambos al mismo tiempo. Noté un efecto secundario interesante: cuando comienzas a aprender una nueva tecnología, la anterior parece menos interesante. Pero en el mundo de TI, si no actualiza su conocimiento de la tecnología dentro de un año, lo vuelve obsoleto.


Si desea seguir siendo un desarrollador de pila completa, tendrá que leer las notas de la versión de algunos TypeScript, probando todo eso a medida que lee, incluso si no tiene ganas. Aún así, estará a millas de distancia de un desarrollador que codifica todos los días específicamente en TypeScript.


El principal problema de este conflicto es que no tenemos idea de qué es lo mejor. Nosotros, y especialmente las empresas, lo queremos en ambos sentidos. Para que todos tengan las habilidades correctas y profundas.


No sé qué es lo mejor, pero sé cómo se siente desde el punto de vista de un desarrollador de pila completa. Pasará mucho más tiempo aprendiendo, en comparación con los desarrolladores de un solo idioma. Esto continuará mientras dure su carrera, y aún así le faltará su nivel de competencia.


Serás bienvenido en todas partes, pero en ninguna parte realmente en casa. A pesar de sus enormes esfuerzos, cada gurú de la próxima gran cosa hará espuma en la boca alegando que no vale la pena ser llamado un mayor.


Estarás atrapado en el nivel medio para siempre.


Por mi parte, decidí seguir mi camino. Podría intentar aprender algo realmente profundo, podría volver a entrenarme para la gestión (el campo donde el conocimiento superficial es un estándar de la industria), pero preferiría mantenerme como soy y soportar el sufrimiento hasta que realmente aprenda todo sobre cualquier cosa.

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


All Articles