¿Cómo logran las personas aprender todo lo relacionado con el desarrollo de software en 4 a 5 años?

Ellos no

“Full stack” se refiere a personas que conocen una amplia gama de complejidades de desarrollo basadas en web, pero pueden no tener ni idea de gráficos, inteligencia artificial, sistemas integrados, visualización científica, simulación y muchos otros subcampos.

Los anuncios de trabajo (especialmente en el desarrollo web) parecen arrojar un montón de detalles en la descripción del trabajo. No sé por qué hacen eso. ¡Hay literalmente cientos de paquetes de marcos de JavaScript por ahí, y el “moderno” del que todos hablan sobre los cambios aproximadamente cada semana aproximadamente! En la práctica, si conoce uno o dos de ellos, puede recoger fácilmente el que sea necesario en un trabajo en particular en una o dos semanas.

Las empresas inteligentes publicitan las habilidades básicas y reconocen que una buena persona puede recoger cosas rápidamente mientras trabajan … y colocar la LISTA LARGA de otras cosas en la lista de “Habilidades Deseadas” para los candidatos.

Si rechaza a un desarrollador absoluto de estrellas de rock porque no conocen “MongoDB”, y solo se conforman con un jack-of-all-all-trade que no domina nada, entonces rechazará a las mejores personas. para el trabajo – y eso es simplemente estúpido.

En primer lugar, considerando la dedicación para aprender algo, conozco a algunos de los desarrolladores que me rodean, que no son tan buenos en los estudios ni en otras actividades co-curriculares, pero a pesar de eso se enfocaron en lenguajes de programación y se dedicaron a ello en la medida en que no pueden serlo. distraído.

En segundo lugar, considerando el campo de trabajo, no todos los desarrolladores saben todo acerca de cada uno de los idiomas, pero trascienden su enfoque en cualquiera de los idiomas y ese idioma se convierte en su área de almacenamiento, por lo que considerar un vaso de agua de río puede presentarse como el Habilidad aprendida en un año o 5.

Esta es una muy buena pregunta. Y estos requisitos de trabajo dicen mucho sobre la compañía que lo está publicando. Por lo general, es una empresa pequeña, como una startup, que tiene muy poco dinero y no puede costear un equipo de desarrolladores adecuado y quiere encontrar a un tipo que sea Superman y que solo conquistará el mundo por ellos. En algunos casos, la administración no es experta en tecnología y no saben cómo funciona la tecnología y cómo contratar el conjunto de habilidades adecuado.

Las compañías grandes y establecidas no hacen esto. Publican trabajos dirigidos solo a conjuntos de habilidades específicas.

Hoy en día hay toneladas de pequeñas empresas de tecnología que no saben lo que están haciendo y no saben cómo contratar por lo que creen que están haciendo. Como dije, generalmente no tienen idea de cómo funciona la tecnología, y cuando publican para un ingeniero de software, no tienen idea de qué habilidades necesitarían en este ingeniero de software. Así que las descripciones de los trabajos terminan siendo realmente ridículas, con un conjunto de habilidades que no existe en una sola persona.

Por ejemplo, muchas empresas anuncian que están buscando un desarrollador de aplicaciones móviles. He interactuado con muchas de estas empresas. Tienen en mente que todos los dispositivos móviles usan el mismo software, por lo que un ingeniero escribirá un software y se ejecutará en todos los dispositivos Android, iPhones y Blackberries. De manera similar, muchas de las llamadas nuevas empresas de tecnología buscan un tipo que haga el desarrollo web por ellos, pero no tienen ni idea de que el desarrollo para el front-end sea totalmente diferente al backend, y las bases de datos aún son juegos completamente diferentes.

Una vez me entrevistaron en una empresa que buscaba un experto en AWS, y su mentalidad era que AWS es una máquina mágica que haría de ellos toda la web y las aplicaciones móviles y que no necesitarán ningún otro ingeniero. Y estaban pensando en hacer algo para rivalizar con Facebook. Tenían dinero también y ya habían invertido en su oficina y equipo.

Hay muchas historias divertidas como estas.

La industria de la tecnología es un desastre como lo veo, porque no está regulada y muy poca gente realmente entiende cómo funciona, y no todos con su próxima gran idea están listos para adaptar la tecnología, o pueden contratar el talento para ello.

No aprendes todos los detalles de cada tecnología. Es suficiente entender los principios básicos y agregar algo de práctica.

Sin embargo, los principios básicos incluyen no solo las tecnologías, sino también los patrones, algoritmos, arquitectura, gestión de proyectos y pruebas de calidad, integración, etc.

Para los detalles, tiene manuales, ejemplos, base de código de la empresa y colegas.

No hay una sola persona en la Tierra que sepa todo sobre el desarrollo de software. Eso sería similar a decir “¿cómo aprende un científico toda la ciencia en 4 a 5 años?”

Ahora que lo hemos aclarado, el desarrollo de software es una de esas cosas que puede obtener fácilmente o no. Si no lo haces, no es para decir que no puedes hacerlo, será más difícil.

Muchas personas están haciendo campañas de codificación de 12 semanas de duración y obteniendo trabajos de inmediato. Así que alguien puede aprender los conceptos básicos del desarrollo de software en 12 semanas y estar listo para un puesto de nivel junior.

“Sé” toneladas de lenguajes y tecnologías. Cómo, trabaja con un proyecto que tiene todas esas tecnologías y mágicamente eres un “experto” en eso … o al menos piensan que son expertos en eso.

Mi mamá tenía algo que decir “La virtud de un pato; Ellos caminan, nadan y vuelan ”(Tenga en cuenta que en realidad son los dioses que vuelan). Lo que significa que tratar de hacer muchas cosas te hace un experto en ninguno.

El poder usar muchas herramientas no lo convierte en un experto en todas esas herramientas. Puede haber algunas excepciones, pero he notado que las personas con ese tipo de perfiles “Sé todo” en realidad no son tan buenos como los programadores. Hay algunas excepciones, un muy buen programador de Java / C # que se cansó de backend y decidió aprender desarrollo web.

Sin embargo, sería realmente extraño ser un experto en todas esas tecnologías al mismo tiempo. Las razones que pienso de eso:

  • Los proyectos de 1 mes no te hacen un experto en nada, simplemente no hay tiempo suficiente para cometer todos los errores posibles y aprender de ellos.
  • Un proyecto de 6 meses te hará bien (pero no experto) en algunas de las cosas que haces (no en todas las tecnologías), pero comenzarás a olvidar las otras tecnologías.
  • Los proyectos realmente largos pueden convertirlo en un experto en tecnologías (a menos que solo esté manteniendo / repitiendo lo que hizo el primer mes del proyecto), pero olvidará las otras tecnologías o se volverán obsoletas (nuevas versiones del lenguaje). , por ejemplo).

Supongo que esas posiciones en realidad significan que quieren a alguien que haya trabajado con todas esas tecnologías y que puedan recordar cómo usarlas en pocos días.

Personalmente, prefiero contratar a alguien que sea realmente bueno en un lenguaje de programación de nivel medio (Java, C #), tenga conocimientos de RDB y tenga conocimientos sobre la herramienta que vamos a utilizar o similar. Es más fácil enseñar una herramienta a un buen programador que enseñar a un “administrador de herramientas” a programar.

Ellos no A pesar de que el campo aún está en su infancia, pasará el resto de su carrera aprendiendo sobre el desarrollo de software, a menos que decida criar cabras en su lugar. Lo que con frecuencia será tentador.

Sigo aprendiendo después de 35 años …