¿Es fácil aprender a utilizar el front-end?
Ayer vi un artículo en reddit, un sitio web extranjero. El autor compartió su experiencia de encontrar trabajo después de nueve meses de programación autodidacta. El artículo recibió más de 3.000 me gusta y 200 respuestas en menos de un día. Leí el contenido y fue muy pertinente y tenía muchos consejos que mencioné muchas veces en las clases de programación. Así que traduje toda la noche. El artículo original es un poco largo, por lo que lo he acortado apropiadamente. Además, agregué un poco de mis pensamientos (cursiva entre paréntesis). Aunque las condiciones nacionales son diferentes, la esencia es la misma, lo cual es de gran valor de referencia para los amigos que quieran ingresar a la industria.
Para resumir, de 2017 a 2012, me encontré en una encrucijada en mi vida y no sabía si continuar completando mi interminable maestría en química o encontrar una salida nuevamente. En ese momento escribí algo de código (solo unos cientos de líneas de Python) y me sentí bastante bien. Decidí usar mis ahorros para aprender a programar hasta que pudiera encontrar un trabajo de desarrollo.
Echando una mirada retrospectiva a este largo y difícil viaje, me gustaría compartir algunas experiencias, cómo empezó y cómo terminó. Mis puntos no están en ningún orden en particular, aunque escribiré primero los que creo que son más importantes.
1) Fíjate un objetivo muy preciso. Me refiero a objetivos realistas. Este es el aspecto más importante de su viaje. Es necesario tener una idea clara de la línea de meta. ¿Aprendes programación porque quieres resolver algunos problemas prácticos? Tal vez quieras automatizar algunas tareas en el trabajo/la vida, tal vez quieras hackear juegos, tal vez tengas curiosidad, tal vez te guste aprender cosas nuevas, tal vez seas un emprendedor que quiere desarrollar aplicaciones pero no tiene dinero. En este artículo, hablo principalmente sobre aprender programación para encontrar trabajo.
2) Si tu objetivo es encontrar trabajo, mira el mercado laboral, no lo que está de moda en Twitter y Medium. ¿Recuerdas el primer punto? Hay que fijarse un objetivo muy preciso. Metas como "Quiero ser desarrollador y trabajar en la industria de los juegos" son demasiado vagas. ¿Cuál es tu primera tarea? ¿Conseguir un trabajo de desarrollo real o trabajar en la industria del juego? ¿Qué debo hacer si no puedo encontrar trabajo en la industria del juego? ¿Qué pasa si no existe tal empresa en su ciudad o no puede cumplir con los requisitos de una empresa de juegos? De hecho, no importa qué lenguaje de programación aprendas, me atrevo a decir que este conocimiento algún día podrá usarse en el desarrollo de juegos, siempre que sea tu objetivo. Necesitas aprender muchas cosas nuevas. Pero usted tiene las habilidades para resolver problemas y el conocimiento de programación para dar el primer paso.
Si eres un desarrollador autodidacta y no un graduado destacado del MIT, te resultará más difícil encontrar trabajo en un lugar diferente. 2017 12Cometí un error: pensé que mi primera prioridad era encontrar un trabajo de desarrollo front-end. Pero no me di cuenta de que la proporción de trabajos de C#/php/Java con respecto a trabajos de front-end JS en mi área es de 9:1. Así que consulte las empresas de su zona para descubrir cuáles son sus funciones y requisitos.
Si su objetivo es cambiar de carrera, también puede comenzar desde una posición junior primero y luego continuar ajustándose para desarrollarse en la dirección que desee.
3) Nunca, jamás asumas qué es más difícil y qué es más fácil en programación. Eso es lo que hice cuando decidí aprender front-end. Este es un gran error. Es difícil decir si el front-end es más fácil o más difícil que el back-end. El punto es que no puedes saber qué te gustará más o con qué te sentirás más cómodo. Así que no asumas. Nunca piense que JavaScript es más simple o más difícil que C. Diferentes herramientas tienen diferente complejidad para diferentes problemas. No has podido diferenciar entre lo que es "más difícil" y lo que es "más fácil", y yo tampoco, así que no lo midas. ¿Puede dejar claro que dentro de 24 meses será "más fácil" mejorar la representación y el rendimiento de la red en una determinada plataforma que optimizar un algoritmo de pronóstico del tiempo basado en datos geoespaciales? ¿Está seguro de que es más fácil administrar el estado en una aplicación compleja en tiempo real que escribir sombreadores o enseñarle a la computadora cómo traducir o dibujar? Usted no sabe. Así que no hagas suposiciones tan absurdas.
4) Sigue aprendiendo. ¿Cuánto tiempo tienes para aprender programación? ¿Es usted un estudiante? Aún desempleado (como yo) pero con ahorros suficientes para invertir en estudios.
Tus objetivos deben ser realistas, pero persistentes. Escribir 1 hora al día te convertirá en un mejor programador que escribir 7 horas a la semana.
5) No necesitas saber todo lo que se requiere para este puesto. Esto es especialmente cierto para marcos y bibliotecas. Las principales empresas prestan gran atención a las estructuras de datos y los algoritmos, lo que demuestra que se pueden pensar y resolver problemas. Más específicamente, no importa qué lenguaje de programación elijas (probablemente puedas encontrar un trabajo en cualquiera de Java, JavaScript, C#, Python, PHP), aprende lo más básico posible. Estudié desarrollo front-end. Siento que de html a dom, necesitas aprender muchas bibliotecas, transpilación, paquete web, etc. Pero, de hecho, estos temas rara vez se plantean en las entrevistas de trabajo. Sólo querían saber si realmente conocía JavaScript. Solicité tres trabajos de front-end en React y a nadie le importaba si conocías las llamadas de React (quiero decir, si aprendiste React, al menos deberías tener una comprensión básica de cómo funciona), pero para ser un buen conocimiento básico. Lo que necesita un desarrollador de React es conocer JavaScript. Si conoce JavaScript y DOM, solo le llevará una semana aprender React. De lo contrario, nunca te convertirás en un buen desarrollador de React. Funciones de orden superior, este enlace, estos son los problemas y el conocimiento que los desarrolladores de React realmente necesitan enfrentar todos los días, y el resto es solo una búsqueda en Google. Lo mismo se aplica a cualquier otro idioma. Sin una base de lenguaje sólida, varios errores te dejarán indefenso. El simple hecho de leer algo no significa que lo hayas absorbido, y mucho menos que lo hayas dominado. Una persona que conoce 10 habilidades/herramientas pero no domina realmente ninguna de ellas tendrá dificultades para ganarse la confianza de los demás.
6) Intenta buscar un mentor. Mucha gente en Slacks, IRC y Discord tiene más experiencia que tú. Es posible que encuentre a alguien dispuesto a ayudarlo a largo plazo. Gracias a todos los miembros del canal JavaScript de freenode por ayudarme a aprender (especialmente a ljharb, slikts, stennowork, liste, innovati, zsoc, cjhonson, qswz, GreenJello, sillyslux). Tenga en cuenta que no le estoy pidiendo que se comunique con estas personas. Ayudan en grupos de discusión, no uno a uno. Dos sugerencias: 1. No pongas a prueba la paciencia y la voluntad de tu mentor. Si sigues haciendo preguntas básicas que se pueden buscar o encontrar en libros, se aburrirán y no se molestarán en responderte. 2. Los programadores, incluido usted, quieren que otros reconozcan su inteligencia. Creo que ésta es la naturaleza de las personas racionales. Puedes aprovechar esto. Por ejemplo, si ingresa a una sala de chat y escribe "Para ser honesto, no creo que nadie aquí sepa cómo vincular la función de flecha", obtendrá 20 respuestas. Si pregunta "¿Cómo utilizar las funciones de flecha?", probablemente no haya ninguna respuesta.
El consejo y orientación de una persona con experiencia es de gran ayuda para el aprendizaje, que no se puede lograr con ningún libro, tutorial o vídeo. Los estudiantes que hayan participado en la programación de acciones de código en el aula deben tener un conocimiento profundo de esto)
7) Comprender qué es la programación: tomar datos como entrada, realizar algún procesamiento sobre ellos y generar una salida. Esto es lo que hace cada programa. Suma dos números: ingresa el número->transporte->genera la suma. Renderice el modelo 3D en la pantalla: Camera Vertex Matrix -> Mango -> Imagen 2D en la pantalla. Configure su foto de perfil en el sitio web: Dirección de entrada de datos - gt; Portal - gt; De esto se trata la programación. Todo es cuestión de cálculo. datos - gt; manejo - gt; Pero no sé mucho sobre estructuras de datos y algoritmos. No soy bueno implementando algoritmos de fusión o estructuras de datos complejas, y no pregunté mucho sobre ellos durante las entrevistas. Comprender la complejidad del tiempo y la aplicación de diferentes estructuras de datos fue suficiente para mi entrevista. Pero puede ser diferente en otras empresas y puestos.
8) Entender qué hacen los programadores. Resuelven problemas a través del código.
Como programador, necesitas resolver problemas (a menudo de tu propia creación). Si no puedes resolver problemas de código, ¿de qué te sirve? Si crees que seguir algunos vídeos sin sentido en youtube/udemy podría convertirte en programador, estás totalmente equivocado. Ver a otros ayudarle a resolver problemas demuestra que sus habilidades para resolver problemas no han mejorado. Entonces, cuando no comprenda algún código, no se apresure a buscar en Google ni preguntar a otros. Ya sabes, este es el trabajo que tienes que afrontar. Sea bueno resolviendo problemas, algunos pueden ser problemas gramaticales (como se mencionó anteriormente), otros pueden estar relacionados con el rendimiento, etc. Aprenda a utilizar un depurador. El código es solo la implementación de una idea y estoy acostumbrado a programar con lápiz y papel. Defina su problema, entradas, salidas y cómo llegar de una a otra. Organice su código, observe su código espagueti desordenado, observe sus funciones y variables desordenadas y con nombres incorrectos, cientos de líneas de código que son difíciles de mantener y trabaje duro para mejorarlo.
9) Dominar los conocimientos básicos de informática. Cara seria. Al menos deberías conocer la estructura y el modelo de memoria de von Neumann, que se pueden aprender en unas pocas horas. Aunque sea a través de Wikipedia, Youtube o algún blog, al menos hazlo. Al comprender el modelo de memoria y la pila de llamadas, sus habilidades de codificación mejorarán y codificará más rápido. Nunca más te confundirás: por qué no puedes modificar una cadena o por qué los tipos no primitivos se pasan por referencia en lugar de por valor. Esto es de gran importancia para mejorar su velocidad de aprendizaje y profundizar su comprensión de los principios del funcionamiento de la computadora.
10) No sigas el vídeo. Cuanto más avanzado y de nicho necesites hacer, menos recursos tendrás a tu disposición. Hay que acostumbrarse a no poder encontrar mucha información usando Google. Necesitará usar una biblioteca con poca o ninguna documentación, y necesitará mirar el código para descubrir por qué la biblioteca cambió el tipo de objeto o se comportó de manera diferente a lo esperado. Vaya a Github y consulte algunas bibliotecas populares; hay muchos temas para investigar allí. Esos grandes ingenieros nunca antes se habían enfrentado a estos problemas. Sé que no es fácil, pero es un buen hábito. Todavía tengo que ver un problema de programación mejor escrito en un vídeo que en un buen libro o artículo. Y cabe señalar que muchas personas que hacen estos cursos no son necesariamente buenos programadores, aunque lo sean, no son necesariamente buenos profesores;
No estoy diciendo "no uses vídeo". Hay muchos videos que me han sido de mucha ayuda, ayudándome a entender conceptos, resolver problemas y ver cómo utilizar algunas técnicas. Pero al final, no uses este recurso y no confíes en él. Por ejemplo, me gusta mucho el curso React de Andrew Mead, pero si no lo estudio yo mismo y lo intento una y otra vez, nada de lo que he visto se convertirá en mío. Depender de vídeos para aprender ejemplos de una versión específica de un software sólo debe utilizarse como último recurso.
¿Crees que los revendedores de programación reales transmitirán en vivo todo el día para decirte cómo escribir el código de entrada? )
11) Depuración y control de versiones. Esto es muy importante para aprender idiomas y conceptos básicos de informática, y más necesario en un entorno laboral. El segundo es el uso de herramientas. Si dominas Java, aprender Spring es mucho más fácil que aprender Docker y Git. Pero probablemente dediques el 95% de tu tiempo a escribir código Spring. Por ejemplo, si domina Python, puede aprender Django en un fin de semana, pero le llevará más tiempo aprender a depurar código Python erróneo. Lo mismo ocurre con la idea. Conocer cinco IDE no es tan bueno como usar uno de manera competente. Estas no son habilidades necesariamente necesarias para puestos de nivel inicial, ni es necesario comprenderlas, pero serán útiles después de usarlas durante mucho tiempo.
La depuración y el control de versiones son signos importantes que distinguen a los principiantes de los programadores, y también suman puntos a la hora de solicitar empleo. Consulte 5 minutos de desarrollo y 2 horas de depuración: ¿cuál es su problema? )
12) No intentes aprender demasiado a la vez. Da pequeños pasos, pero mantenlos firmes. Cometí este error y pagué un alto precio. No es que sea inútil ver los trabajos de Hennessy y Patterson, o que sea inútil observar patrones de diseño, o que sea inútil ver videos de Youtube, discusiones técnicas interesantes o diseño basado en el comportamiento, pero ¿aún recuerdas el primer punto? Debes comprender qué es el número uno y dar cada pequeño paso con los pies en la tierra.
Si tienes tanta curiosidad como yo, genial. ¿Pero no sería mejor encontrar un trabajo, ganar un salario en un ambiente cómodo, aprender de desarrolladores experimentados y luego volver a casa e intentar programar en Rust mientras miras la charla sobre inmutabilidad?
13) Consejo 1: Si tienes de seis a siete meses para prepararte antes de buscar trabajo oficialmente, te recomiendo aprender el lenguaje C. Es un idioma pequeño, pero puede enseñarte mucho. Digámoslo de esta manera, si primero paso dos meses aprendiendo el lenguaje C (al menos cuatro horas al día) y luego paso cuatro meses aprendiendo otro lenguaje de alto nivel y usando Leetcode para resolver algunos problemas simples y de dificultad media, me convertiré en un mejor programador que tú ahora. Hay demasiadas tecnologías ahora y hay mucho "ruido" en los lenguajes de alto nivel.
Pronto pasarás de la pregunta "¿cómo llego de la entrada a la salida" a otras preocupaciones, que es el paso más básico para escribir un código completo? Sé que no está bien escribir "entrada" y "salida", pero ¿recuerdas el punto uno? Necesitamos encontrar un trabajo digno que nos permita ganar dinero lo más rápido posible. Aprender el lenguaje C puede resultar lento al principio. Pero cuando aprenda el siguiente idioma, eventualmente descubrirá que es lo mismo que resolver problemas en lenguaje C, solo que usando innumerables API.
14) Consejo 2: Aprende a gestionar tu propio tiempo. Es tentador para usted sentarse frente a una computadora todo el día y aprender a programar, pero es una pérdida de tiempo. Si gestionas bien tu tiempo, tu tiempo de preparación puede reducirse significativamente en semanas o incluso meses.
15) Consejo 3: Descansar, socializar, enamorarse, divertirse y cuidarse son súper importantes. Sentarse solo, leer blogs y mirar Visual Studio todo el día no es bueno para su salud mental y lo desafiará con los demás. Estudia mucho y sabes controlarte, pero también debes controlarte en otros aspectos de tu vida. Porque una vez que se rompa este equilibrio, los problemas surgirán en otros lugares.
Eso es todo. Por favor, no te preocupes si es demasiado largo. Espero que alguien haya encontrado útil este artículo y es solo mi opinión personal; es posible que muchos no estén de acuerdo con ella.