¿De qué trata este artículo?
De hecho, el artículo trata sobre cómo mi forma de pensar debería haber cambiado con el cambio de profesión, la comprensión del contexto y los momentos a los que debería prestarse atención, así como la influencia de la elección de "lo que debería enseñar" en los años posteriores de mi desarrollo profesional personal.
Debo decir de inmediato que no consideraré y no consideraré significativo comenzar, como en la mayoría de los artículos, sobre qué lenguaje de programación elegir. No tiene sentido No, no eliges un lenguaje de programación. De hecho, eliges tu futuro, ni más ni menos. Su elección futura se basará en su aplicación y plataforma.
Un poco para mi
Me convertí en programador a principios de 2016 a la edad de 35 años, esto es si miras el historial de actividad en mi perfil de GitHub y aceptas el primer trabajo serio. Edad bastante decente para un cambio de profesión. Sí, este no es un momento sin importancia: dejé el diseño. Esto es en realidad un cambio muy radical, y no solo porque por primera vez has estado tratando con una profesión más bien humanitaria, con imágenes, diseño, composición e incluso usabilidad en mi caso, y de repente entras en código, tecnología, compilación, base datos y así sucesivamente. Esto es esencialmente solo la punta del iceberg, visible desde el exterior. Hablaré sobre conclusiones personales más profundas un poco más en el texto.
¿Cómo sucedió esto y por qué? Hay dos razones: esta vez no logré el diseño, la depresión es dos. Para convertirme en un diseñador exitoso tanto como quisiera, necesitaba un efecto WOW, y no solo UX lógico, composición concisa, escenarios operativos para usar el producto, y algunas habilidades del gerente del producto, nuevamente. Necesitábamos fotos geniales y jugosas. Para ellos, no tenía suficiente propiedad de la composición de color, y debido a la depresión o por alguna otra razón, no podía dominarla. Y luego ... primero, viendo la película Ex Machina, algo me dio la vuelta y me inscribí en un curso de Machine Learning de Andrew Ng. Realmente me gustó, simplemente salvaje, a pesar de las noches de insomnio y los ojos rojos en la mañana.
Luego, en mi opinión, tomé la decisión más trivial y simple: tomé la decisión inevitable para ese volumen y calidad de conocimiento de la industria de TI moderna y mis capacidades que tenía en ese momento. Decidí cambiar gradualmente la programación front-end a front-end de aplicaciones basadas en navegador en JavaScript. Y desde aquí podemos decir el verdadero camino de la prueba y el error, caminando el rastrillo y comenzó una innumerable serie de descubrimientos sorprendentes.
Ahora he llegado al punto en que ya puedo expresar de manera ordenada mis pensamientos sobre esta transición, qué pozos y rastrillos se deben esperar en el camino. Espero que alguien que se enfrente a la misma opción que yo hace unos años sea útil. ¡Así que adelante!
Sobre un rastrillo y errores del principiante
Cuando cambié de profesión no sabía algunas cosas y cometí algunos errores por los que tuve que pagar con nervios, noches de insomnio y dinero.
En primer lugar, como creo, hay una cierta escala en la que puedes definir un programador y probablemente también una persona. Todo es interesante para él en un extremo, quiere ayudar a la causa común, en el otro extremo se concentrará por completo en una cosa, cavará una trinchera durante años, décadas, y está de acuerdo con eso (probablemente). Tanto allí como hay ventajas, desventajas y dificultades que debe conocer. Yo mismo pertenezco al primer tipo, el "Tigre loco", por lo que puedo hablar más sobre él. Pero lo que importa es entender a qué tipo pertenece lo antes posible.
Si le gusta cavar una cosa, entonces es poco probable que tenga problemas para encontrar un trabajo en el mercado laboral abierto: los especialistas limitados obtienen una experiencia más rápida y profunda en su campo al mismo tiempo, es más fácil para el empleador llevarlo porque incluso sabe que comiste un perro en una cosa que es muy importante para él: por ejemplo, optimizar la animación de botones en un navegador de un sitio. Pero no tan simple. Al contratar, por supuesto, estará muy contento, pero pueden surgir dificultades durante el trabajo, porque es muy probable que los colegas esperen involucrarse en el producto como un todo y en todo su conjunto tecnológico. Voluntad de ayudar, incluso ir más allá del alcance de sus deberes directos: trabajar sin una tarea técnica específica, irrumpir en una tienda de abarrotes, hablar con un delincuente en su idioma, etc. Y aquí probablemente sea hasta un lugar. Lo más probable es que no seas criado, y tú mismo no querrás hacerlo. Según tengo entendido, quienes se sientan al borde de esta escala cambian de trabajo una vez al año o dos para indexar los salarios. Porque esta es básicamente la única forma si trabajas en la oficina. La segunda forma es independiente con acceso a mercados más desarrollados, aunque al final, si realmente necesita mucho dinero, aún tiene que ampliar su arsenal de habilidades.
Si es más probable que le complazca ayudar a sus colegas, prepárese. Después de que tenga suficiente (para la primera contratación) para aprender una cosa, luego, con lo que decida ingresar al mercado por primera vez, se verá afectado de pila en pila de tecnología en tecnología. Puede encontrarse en el papel de devops, gerente de proyectos, diseñador de productos (no el que dibuja), arquitecto y el diablo sabe quién más. Obtendrá una experiencia muy diversa y tendrá algo que contar. Y si te unes a un buen equipo versátil con un gran producto interesante, entonces mantenme siete. El problema es que los proyectos están terminando, las empresas quiebran, los jefes se hacen el ridículo, y aquí estás sin trabajo, tienes un mercado laboral abierto y no lo necesitas, él necesita especialistas confiables y limitados. Todas las puertas estarán cerradas. Bueno, porque incluso si pasa por todas las entrevistas técnicas en una especialización, le dirán que pulió los botones solo seis meses en los últimos años, y que necesitan un pulidor de botones. Y luego resulta que debes ir al desarrollador principal o superior, pero es un fastidio, por lo general no lo sacan de la calle. Lo único que sé es crear una marca personal. No importa si trabaja en una oficina o remotamente bajo contratos, haga algo. Las referencias no te ayudarán por cierto. Hasta ahora conozco dos opciones: asistir a conferencias de la industria, presentar elegancia en general y escribir un blog personal. Cualquier cosa, al menos cualquier tontería, pero comenzar a hacerlo en el primer año desde el momento en que te contrataron por primera vez. Esto es importante
Aquí, sí, hay una contradicción con el mercado laboral: quieren ver una cosa sobre la contratación, pero luego quieren trabajar en un equipo con otra.
Acerca de la tecnología y "¿qué idioma debo elegir?"
Aquí tenemos la escala de gradación nuevamente. Ni siquiera una escala, espacio multidimensional. Hay tecnologías de moda de las que a menudo se habla en conferencias, escriben mucho en blogs y redes sociales. Existen tecnologías que no tienen competidores, como JavaScript y sus variaciones en los navegadores web. Hay viejos dinosaurios en los que se escriben muchas cosas y esto debe ser compatible. Y entre estos puntos hay diferentes intersecciones en forma de casos específicos.
Cuando elija, tendrá que decidir, y cuanto antes mejor, darse cuenta de que su pila elegida lo limita no es muy agradable. Decida lo que quiere: confiabilidad, dinero y una buena base de conocimiento, o ni siquiera sé otra cosa. Si es el primero, me parece mejor elegir entre los dinosaurios que aún están vivos y se desarrollan bien. Como yo mismo soy todo acerca de la web, puedo decir que hay dos tecnologías confiables. C # y Java. Los desarrolladores de PHP pueden estar indignados, pero sugiero dejar esta pregunta al gusto y al color, por así decirlo ... La peculiaridad es que los proyectos pueden vivir y desarrollarse durante mucho tiempo sin dificultades adicionales solo cuando están escritos en lenguajes maduros con herramientas suficientes para estructurar el código. Esta vez La segunda opción será un marco específico. .Net o Spring o algo más es posible. Aquí el criterio es este: debe encontrarse a menudo, utilizarse en grandes corporaciones y proyectos de larga duración, e idealmente, debería ser conveniente trabajar en él. Por ejemplo, Spring Boot ahora le permite crear rápidamente prototipos de servicios, así como escribir cosas serias con una arquitectura muy sofisticada y una gran cantidad de funcionalidades que necesita el negocio, y lo implementa de inmediato.
Por el contrario, todo lo que está "de moda", como regla general, es muy joven, tiene una infraestructura débil o ingenua, pero la comunidad de fanáticos con los ojos ardientes está lista para venderle cualquier cosa solo por amabilidad. El problema con todas estas tecnologías nuevas o no ampliamente utilizadas es que no tienen suficientes herramientas listas para usar; lo más probable es que tenga que escribir una gran cantidad de la funcionalidad trivial usted mismo, por ejemplo, autorización a través de las redes sociales. Esto es realmente monstruoso. Una empresa rara vez quiere pagar dinero por bicicletas. Y luego todavía tienes que mantener este código. Ejemplos? Para Python, no hay un solo marco web completo (a excepción de Django, con algunas reservas) con el que puede vivir y no volverse loco trabajando en un proyecto durante más de un año o dos. Sus problemas comenzarán de inmediato y son bastante triviales, como la importación cíclica de módulos. Lamento haber omitido PHP, hacen muchas cosas al respecto, pero hay un punto: no escuché que ninguna de las grandes compañías lo usara, y no un tenedor muy renovado, como lo hizo Facebook.
Las líneas separadas son una especie de monopolio. Swift para el ecosistema de Apple, que crea sus propios marcos de desarrollo de aplicaciones. Google con Android (por cierto, también Java / Kotlin). Lenguaje R y entorno de desarrollo para el análisis de datos. JavaScript como el único lenguaje de programación que se ejecuta en los navegadores.
Con Swift, todo parece estar claro. Hay pocos programadores, pagan bien (según los rumores), el lenguaje se está desarrollando rápidamente, está de moda, pero difiere de la exageración en que es compatible con el dinosaurio ObjC y todo lo que se ha escrito en él durante muchos años. Apple también lo respalda y está desarrollando rápidamente plataformas de plataformas. Además, puede compilarse en otros sistemas y parece prometer compatibilidad con C / C ++. Si esto sucede, ni siquiera sé ... habrá algo o muy bueno, u otra cosa. Debido a que ya se ha escrito tanto en C / C ++ que puede girar la cabeza, este es un gran recurso.
Javascript El lenguaje como lenguaje. Muchos lo consideran un lenguaje inferior. Tiene muchos problemas, eso es cierto. Estas son principalmente lesiones de nacimiento que son casi imposibles de superar en un sentido técnico. Se puede usar para aplicaciones de servidor, pero no recomendaría seguir este camino. NodeJS es pura publicidad sobre la cual su creador mismo dijo directamente que se cometieron errores fundamentales durante su creación. En cuanto al desarrollo del navegador, recomendaría tomar lo que más se usa ahora, esto es React junto con Redux. Solo mucho de eso. Lo necesitan en todas partes. Encontrarás un trabajo. Aunque solo está en el navegador, aunque esté completamente apilado, un minion de una parrilla de cerámica siempre será suficiente en el filete.
Como resultado, sus conclusiones personales.
Si tuviera que volver a seleccionar, tomaría un montón de Java / Spring + React. Por supuesto, la primavera no es primavera ahora, y lo mismo se aplica a React, pero los criterios son los mismos.
Lo que personalmente me toca en esta pila. Es relativamente fácil "vender" a un cliente de React, es bien conocido por todos, porque es una exageración que al mismo tiempo ha crecido demasiado en infraestructura y está firmemente arraigada en el mercado, por lo que puede usarse en proyectos serios. Al mismo tiempo, no existen contradicciones inquietantes con respecto al desarrollo y el futuro de la programación del navegador: está orientada a componentes, la comunidad conoce muy bien la programación reactiva, que ahora es bastante relevante, y la utiliza. Las nuevas versiones de React no rompen el código antiguo sin advertencias; las reglas de composición de la aplicación no cambian drásticamente. No se puede decir sobre Angular que ya ha empañado su reputación muchas veces (espero que ahora todo esté bien y ya no haya tormentas). Bueno, a excepción de Vue, me parece que todo lo demás es mejor no tocarlo.
Java, por otro lado, proporciona un gran campo de soluciones listas para usar, y casi cualquier "Lista de deseos" de su cliente o empleador puede ser buena, si no es fácil, pero al menos no se realiza a través de una valla de muletas. Sinceramente, creo que con .Net y especialmente el desarrollo de .Net Core multiplataforma, todo está igual de bien, pero personalmente no me gusta C #, bueno, resultó.