¿Es fácil aprender a utilizar el front-end?
De hecho, no existe tal cosa como si el aprendizaje front-end es fácil o no. El aprendizaje en sí es un avance continuo. Es un proceso de encontrar problemas y resolverlos. Bueno.
Ayer vi un artículo en el sitio web extranjero reddit. El autor compartió su experiencia de encontrar trabajo después de 9 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 lo encontré muy pertinente. Muchas de las sugerencias también las hice yo muchas veces en las aulas de programación. Así que lo traduje de la noche a la mañana. El artículo original es un poco largo, por lo que lo he acortado apropiadamente. Agregué algunos de mis pensamientos más (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, en diciembre de 2017, me encontraba en una encrucijada en mi vida y me sentía enredado en si debía continuar completando mi maestría en química sin un final a la vista o encontrar la mía propia. salir de nuevo. En ese momento escribí algo de código (solo unos cientos de líneas de Python) y me sentí bien. Decidí usar mis ahorros para aprender a programar hasta que encontré trabajo como desarrollador.
Mirando hacia atrás en 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 tu viaje y necesitas tener una visión clara de la línea de meta. ¿Estás aprendiendo programación porque quieres resolver algunos problemas prácticos? Tal vez quieras automatizar algunas tareas en tu trabajo/vida, tal vez quieras hackear juegos, tal vez estés motivado por la curiosidad, tal vez te guste aprender cosas nuevas, o tal vez seas un emprendedor que quiere desarrollar una aplicación pero no tiene fondos. En este artículo, hablo principalmente sobre la perspectiva de encontrar trabajo aprendiendo programación.
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. Un objetivo como "Quiero ser desarrollador y trabajar en la industria de los juegos" es demasiado vago. ¿Cuáles son tus principales prioridades? ¿Busca un trabajo de desarrollo real o trabaja en la industria de los juegos? ¿Qué pasa si no puedes encontrar trabajo en la industria del juego? ¿Qué debe hacer si no existe dicha empresa en su ciudad o si no puede cumplir con los requisitos de las empresas de juegos? De hecho, no importa qué lenguaje de programación aprendas, me atrevo a decir que este conocimiento puede usarse en el desarrollo de juegos algún día en el futuro, siempre que ese sea tu objetivo. Necesitarás 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 desarrollador autodidacta y no eres un graduado destacado del MIT, te resultará más difícil encontrar trabajo en otro lugar. Cometí un error en diciembre de 2017: pensé que mi primera prioridad era encontrar trabajo como desarrollador 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 ver cuáles son sus puestos y requisitos.
(Si tu objetivo es cambiar de carrera, también puedes comenzar en una posición junior primero y luego continuar ajustándote a la dirección que esperas)
3) Nunca, nunca asumir qué es más difícil en programación Qué es más fácil. Hice esto 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. La cuestión 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 pienses que JavaScript es más fácil o más difícil que C. Diferentes herramientas tienen diferentes complejidades para diferentes problemas, y todavía no estás en el punto en el que puedas decir qué es "más difícil" y qué es "más fácil", y yo tampoco. Simplemente no lo midas. ¿Puede decirme 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 para predecir el clima 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 una computadora a traducir o dibujar? No tienes idea. Por lo tanto, nunca 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 código durante 1 hora al día te convertirá en un mejor programador que codificar durante 7 horas una vez a la semana.
5) No es necesario saber todo lo requerido para el puesto. Esto es especialmente cierto para marcos y bibliotecas. Las principales empresas se centran mucho en estructuras de datos y algoritmos, lo que demuestra que puedes pensar y resolver problemas. Más específicamente, no importa qué lenguaje de programación elijas (probablemente puedas encontrar trabajo en cualquiera de Java, JavaScript, C#, Python y PHP), aprende todo lo que puedas sobre sus conceptos básicos. Aprendí desarrollo front-end. Creo que esto requiere aprender muchas bibliotecas, desde html hasta dom, transpilación, paquete web, etc. Pero en realidad estos temas rara vez se preguntan en las entrevistas de trabajo, solo quieren saber si realmente conozco JavaScript. Solicité 3 trabajos frontend de React y a nadie le importaba si conocías las llamadas de React (quiero decir, si aprendes React deberías tener al menos conocimientos básicos de cómo funciona), pero para ser un buen desarrollador de React, el conocimiento básico que uno necesita es saber JavaScript. Si conoce JavaScript y DOM, aprender React solo le llevará una semana. De lo contrario, nunca te convertirás en un buen desarrollador de React. Funciones de orden superior, este enlace, estas son las preguntas y el conocimiento que los desarrolladores de React realmente necesitan enfrentar todos los días, el resto es solo una búsqueda en Google. Lo mismo se aplica a cualquier otro idioma. Si no tienes una base de lenguaje sólida, varios errores te impedirán hacer nada. El hecho de que hayas leído algo no significa que lo hayas absorbido, y mucho menos lo hayas dominado. Una persona que conoce 10 habilidades/herramientas pero que no domina ninguna de ellas tendrá dificultades para ganarse la confianza de los demás.
6) Intenta buscar un mentor. Hay muchas personas en Slacks, IRC y Discord que tienen más experiencia que tú y es posible que puedas encontrar a alguien dispuesto a ayudarte 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; brindan ayuda en grupos de discusión en lugar de uno a uno. Dos sugerencias: 1. No poner a prueba la paciencia y la voluntad del instructor. Si sigues haciendo preguntas básicas que puedes buscar o consultar en un libro, se aburrirán y no se molestarán en responderte. 2. Todos los programadores, incluido usted, quieren que otros reconozcan su inteligencia. Creo que esta es la esencia de las personas racionales. Puedes aprovechar esto, por ejemplo: si entras a la sala de chat y escribes "Para ser honesto, no creo que nadie aquí sepa cómo vincular las funciones de las flechas", obtendrás 20 respuestas. Y si pregunta "¿Cómo utilizar las funciones de flecha?", es posible que no haya ninguna respuesta.
(El consejo y orientación de una persona con experiencia es muy útil para el aprendizaje, que no se puede lograr con ningún libro, tutorial o video. Al respecto, los estudiantes que hayan participado en la acción de código del aula de programación deben tener una comprensión profunda de esto)
7) Comprender qué es la programación: tomar datos como entrada, procesarlos y generar una salida. Esto es lo que hace cada programa. Suma dos números: ingresa número-gt; proceso-gt; genera la suma. Renderice un modelo 3D en la pantalla: matriz de vértices de la cámara -gt; procesamiento de imagen 2D en la pantalla. Configura tu foto de perfil en el sitio web: Dirección de entrada de datos -> Procesamiento -> Respuesta del servidor. De eso se trata la programación, se trata de informática. datos-gt; procesamiento-gt; Pero sé muy poco sobre estructuras de datos y algoritmos. No era muy bueno implementando algoritmos de fusión o implementando estructuras de datos complejas, y realmente no me los pidieron en las entrevistas. Conocer 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, resuelves problemas (normalmente de tu propia creación). Si no puede resolver el problema del código, entonces, ¿de qué le sirve? Si crees que seguir algunos vídeos de mierda en youtube/udemy podría convertirte en programador, estás totalmente equivocado. Ver a otros resolver problemas por usted significa que no está mejorando sus habilidades para resolver problemas. Entonces, cuando no comprenda algún código, no se apresure a buscar en Google ni a preguntarle a alguien. 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 la programación está acostumbrada al lápiz y al papel. Defina su problema, entradas, salidas y cómo llegar de una a otra. Limpia tu código, mira tu código espagueti desordenado, mira tus funciones y variables desordenadas y mal nombradas, mira tu código que no se puede mantener más allá de unos pocos cientos de líneas e intenta mejorarlo.
9) Dominar los conocimientos básicos de informática. Cara seria. Es necesario al menos comprender la estructura de von Neumann y el modelo de memoria, que se pueden aprender en unas pocas horas. Aunque sea a través de Wikipedia, Youtube o algunos blogs, al menos haz esto. Comprenda el modelo de memoria y la pila de llamadas, su nivel de código mejorará y codificará más rápido. Nunca más te preguntarás por qué no puedes modificar una cadena o por qué pasas tipos no básicos 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 aprendas de los vídeos. 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 ni siquiera en Google. Necesitará usar bibliotecas con poca o ninguna documentación, y necesitará mirar el código para descubrir por qué la biblioteca cambió ese tipo de objeto o se comportó de manera diferente a lo esperado. Vaya a Github y consulte algunas bibliotecas populares. Hay muchos temas para estudiar allí. Los mejores ingenieros anteriores a usted nunca se han 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 video que en un excelente libro o artículo. Y tenga en cuenta que muchas de las personas que realizan estos cursos no son necesariamente buenos programadores; incluso si lo son, no son necesariamente buenos profesores;
No estoy diciendo "no uses vídeo". Hay muchos videos que me han ayudado mucho, ayudándome a entender conceptos, resolver problemas y ver cómo utilizar algunas tecnologías. Pero hasta el 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 estudiara yo mismo y lo intentara una y otra vez, nada del contenido que vi sería mío. Confiar en un vídeo para conocer ejemplos de una versión específica de un software es sólo una alternativa de último recurso.
(¿Crees que un verdadero experto en programación transmitirá transmisiones en vivo todo el día para enseñarte cómo escribir 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 es lo que más se necesita en un entorno laboral. El segundo es el uso de herramientas. Si conoces Java, aprender Spring es mucho más fácil que aprender Docker y Git. Pero probablemente pasarás el 95% de tu tiempo escribiendo código Spring. Para otro 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 los IDE. Conocer 5 IDE no es tan bueno como usar 1 con soltura. Estas no son habilidades necesariamente necesarias para puestos de nivel inicial y no es necesario conocerlas, pero esto es útil a largo plazo.
(La depuración y el control de versiones son signos importantes que distinguen a los principiantes de los programadores, y también son una ventaja para la búsqueda de 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. Ya cometí este error antes y pagué un alto precio por ello.
No es que leer los trabajos de Hennessy y Patterson sea inútil, o que leer sobre patrones de diseño sea inútil, o que mirar videos de Youtube, discusiones técnicas interesantes y leer sobre diseño basado en el comportamiento sea inútil, pero ¿todavía recuerdas el primer punto? ? Debe comprender qué es lo primero y dar cada pequeño paso con los pies en la tierra. Si eres como yo y tienes curiosidad, está bien. ¿Pero no sería mejor conseguir un trabajo primero, ganar un salario en un ambiente cómodo, aprender de desarrolladores senior y luego volver a casa e intentar programar en Rust y ver las charlas sobre inmutabilidad?
13) Consejo 1: Si tienes de 6 a 7 meses para prepararte antes de buscar trabajo oficialmente, te recomiendo aprender el lenguaje C. Es un idioma pequeño pero te puede enseñar mucho. Digámoslo de esta manera, si pasara 2 meses aprendiendo C (al menos 4 horas al día) y resolviendo algunos problemas de dificultad fácil y media en Leetcode antes de pasar 4 meses aprendiendo otro lenguaje de alto nivel, sería un mejor programador que yo. lo soy ahora. Hay tanta tecnología ahora y 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 inquietudes, pero este es el paso más básico para escribir un código completo? Sé que escribir "entrada" y "salida" no está nada bien, pero ¿recuerdas el punto uno? Necesitamos encontrar un trabajo digno que nos permita ganar dinero lo antes posible. Aprender el lenguaje C puede resultar lento al principio. Pero cuando aprendes el siguiente idioma, terminas resolviendo el mismo problema que usando C, pero usando innumerables API.
14) Consejo 2: Aprende a gestionar tu tiempo. Es tentador sentarse frente a la computadora todo el día para aprender a programar y navegar por varios sitios web, pero todo esto es una pérdida de tiempo. Si administra bien su tiempo, puede ahorrar semanas o incluso meses en su tiempo de preparación.
15) Consejo 3: Descansa, socializa, enamórate, diviértete y cuídate, todo esto es súper importante. Sentarse solo, leer blogs y mirar Visual Studio todo el día no es bueno para su salud mental y lo hará sentir desafinado con los demás. Estudia mucho y aprende a tener autocontrol, pero tenlo también en otros aspectos de tu vida. Porque una vez que se rompa este equilibrio, los problemas surgirán en otros lugares.
Eso es todo. Si es demasiado largo, no te preocupes. Espero que alguien encuentre útil este artículo, esta es solo mi opinión personal y es posible que muchas personas no estén de acuerdo.