miércoles, 25 de marzo de 2020

Consejos para principiantes de JavaScript, cómo puedo aprender a programar

Bueno. Independiente del nivel que tengas estos consejos pueden resultarte útiles. Vienen de mi reflexión acerca de lo que me hizo más fácil el camino, y también de aquéllas cosas que hubiera hecho diferentes si tuviera la oportunidad, porque no haberlo hecho me hizo cuesta arriba muchas cosas. Muchos de estos consejos son válidos tanto para JavaScript como para otros lenguajes, y unos cuantos incluso son útiles para otros ámbitos distintos a la programación.
Cuando aprendas sobre un lenguaje, aprende también sobre su cultura.
Este es uno de los consejos más valiosos que encontré y lo he puesto en práctica desde siempre. Alrededor de cada lenguaje hay muchísimo que es algo, digamos, muy propio.
Por ejemplo en JavaScript deberías de tener una idea de que es y para que sirven librerías como Jquery, Node JS, o implementaciones como AJAX. No importa si no los comprendes todavía, o si prefieres eventualmente tomar otros caminos, pero saber lo que sin, y por qué son tan importantes y mencionados cuando se habla de JavaScript si que deberías enterarte.
Hay aspectos de JavaScript que son temas calientes de siempre. Por ejemplo, dudo que de ningún otro lenguaje de programación se hable tanto sobre las diferencias de navegadores y el DOM (otra cosa de la cual debes ir curtiendote). Esto no sucede con otros lenguajes como Java, C#, Pascal, o Phyton, sino que la historia de JavaScript ha estado tan ligada a los navegadores que cada noticia con respecto al tema es relevante, o al menos, interesante para sus escríbanos.
Así te enteras también de las tendencias y los cambios. Hace muchos años por ejemplo si decidías aprender ActionScript en vez de JavaScript, era casi tan buena idea. Pero ya no, porque ActionScript a casi desaparecido de Internet junto con su reproductor Flash Player, y aunque antes se hablaba de este lenguaje como un “rival” de Javascript, ahora pocos se acuerdan. Vale, que ActionScript sigue siendo valioso en otro contexto, pero quiero que te des cuenta que las tendencias y relaciones van cambiando. Las culturas no son estáticas.
Hace relativamente poco la base de JavaScript, el estándar ECTMA se actualizo (no quiero preocuparte por los detalles ahora). Lo cual introduce unis cuántos metodos, estructuras, y cosas a la acostumbrada forma de JavaScript, y dibuja nuevos cambios, nuevas librerías, nuevos paradigmas inclusive, en el horizonte.
Hay foros, blogs, canales de video, y muchos sitios de recursos y conversación sobre JavaScript que son muy populares. Consideralos como bares y cafetines de los programadores de JavaScript. Pasa tiempo en ellos, aprende de las conversaciones y problemas ajenos,haz amigos que hablen este mismo lenguaje, descubre porque son tan importantes y apreciados. Aunque muchos de estos sitios son de diseño y programación en general, los seres humanos tendemos a formar grupos, en comunidades más pequeñas. Esto es la cultura, y deberías integrarte en ella sin importar que tú nivel sea apenas de asignar una variable y nada más.
No intentes aprender a programar en JavaScript sin haber aprendido HTML y CSS
Vale, seguro que hay mucho más de un programador que no sabe nada de HTML ni CSS, y aún así, sale adelante. Pero dudo que alguien pueda manejar JavaScript sin una base de los lenguajes fundamentales del diseño web. Esto es así porque en JavaScript lo que principalmente se manipula son precisamente elementos de estos lenguajes.
Si, es cierto que JavaScript tiene como todo lenguaje una base de manejo de datos y lógica, pero en general estos están representados en una página web, aunque pueden actuar escondidos no es su propósito. El no comprender lo fundamental de esto es crucial. Revisa si en tu aprendizaje te estás tomando de lado estos lenguajes (que no son de programación) porque si no ni avanzarás nada.
Preferible es que dejes de lado Javascript por un tiempito y te esfuerces en hacer unas cuantas páginas web estáticas desde cero. Aprender sobre etiquetas, atributos, formularios, estilos y clases css (que no tiene nada que ver con las clases de la programación orientada a objetos). Cuando seas libre de poder hacer una página web básica y correctamente, incluyendo formularios, listas, y entender las jerarquías que deben tener los elementos, podrás entender mucho mejor cómo manipularlos.
No te engañes. Sin un fundamento no puedes construir nada digno.
Aprende sobre los fundamentos de programación
Esto también debe ir a la par. Los fundamentos de programación son comunes a casi todos los lenguajes. Son la aplicación de la lógica, digamos su interpretación en cómo se traducen dentro de un lenguaje de programación. Si te molesta dejar de lado el lenguaje mientras aprendes HTML y CSS puedes considerar estudiarte un buen libro de fundamentos de programación mientras tomas esta distancia necesaria.
Además, considera esto: a pesar de todo si estás aprendiendo un lenguaje de programación. Puesto que la mayoría de estos libros utilizan el pseudo lenguaje (hay más de uno, pero usualmente es UPSAM).
La importancia que tiene esto es que estás haciendo fundamentos en cuanto estructuras lógicas. Las estructuras cómo IF-ELSE, WHILE, FOR, SWITCH, etc, no son exclusivas de JavaScript, sino que están presentes en casi todos los lenguajes (con diferencias muy sutiles). Además cada estructura tiene propósitos diferentes y algunas son mas eficientes que otras en hacer algo. Entonces comprender es a la vez hacer tu firma de pensar mucho más eficiente.
Piensa en ellas como la aritmética (suma,resta, multiplicación y división), con respecto al álgebra(ecuaciones,funciones, polinomios,matrices,etc). Simplemente, si no sabes lo básico, por muy intuitivo que te sea lo complejo,no llegarás ni a tres metros en el maratón.
No intentes aprender todo de todo, porque suene a JavaScript
Dice un dicho: “el que mucho abarca, poco aprieta”. Este es un consejo que debe ir de la mano con aquel consejo sobre aprender la cultura.
Es muy tentador, cuando lees de JavaScript y te encuentras con Jquery, Angular, Node JS, y otras librerías, y sus bondades, intentar aprender lo fundamental de ellas. Pero resiste un poco. Dispersar tu tiempo y esfuerzo en aprender muchas cosas a la vez solo llevará a que no aprendas ninguna con efectividad.
Ademas, piensa que a pesar de todas sus bondades, JavaScript no deja de ser el fundamento sobre el cual se basan. Si bien es cierto que estás librerías permiten hacer cosas mucho más fácilmente que hacerlas desde cero, no es menos cierto que como librerías que son siempre bvan a tener limitaciónes, que no son parte del lenguaje en si, sino del propósito y diseño. Siempre será necesario que tú seas capaz de definir tus propias funciones y métodos, e inclusive de prescindir de una librería porque sea más conveniente (no en vano, a la programación sin librerías en JavaScript se le trata con la misma importancia que a otras librerías importantes, como para recordarte que es solo una cuestión de estilo escoger tus métodos. Se le llama por cierto Vainilla JavaScript). Si tienes un buen fundamento del lenguaje principal, podrás no solo comprender cómo te ayudan estas librerías, sino también profundizar en ellas. Pero piensa que la librería favorita de muchos programadores es la que ellos mismos han venido construyendo con sus propios script al paso del tiempo.
Lo mismo aplica si estás intentando aprender varios lenguajes a la vez. No pasa nada con echarle un vistazo años fundamentos y notar las diferencias, pero mantener en la mente más de una sintaxis mientras estás asimilando sólo hará más lento el proceso. Java, C++, Python, Ruby, son lenguajes completos, con sus propios retos y cultura por descubrir. Cada lenguaje es como un nuevo capítulo en la vida de un diseñador o programador. No son islas, son continentes. No conocerás bien si le dedicas minutos a explorar,se necesita vivir en ellas.
Por cierto, lo mismo para los entornos de desarrollo: escoge un programa y quédate con el para escribir tu código. Aquel que te haga sentir más cómodo y te distraigas menos. No cambies a cada rato, conoce tu herramienta para que le puedas hacer provecho.
Mejora tu inglés y ten a la mano un diccionario
Se lo he escuchado a otro programador: es necesario saber inglés. Esto es cierto. Pero no te preocupes, porque no tienes que aprender otra lengua a nivel suelto y conversacional, sino a un nivel instrumental, y mejor si al menos para la lectura.
La mayoría de los lenguajes de programación son basados en el inglés. El nombre de sus funciones, métodos, objetos, suelen ser términos en inglés que sirven de guía a sus creadores (de habla generalmente inglesa). Tener un conocimiento de los términos te ayudará de manera más intuitiva a descubrir por cuenta propia de que trata algo.
Además la mayor parte de la documentación de un lenguaje también está en inglés, y es esta documentación por lo general la mejor referencia que puedes disponer para conocer un lenguaje. Muchos buenos libros están en español para lo fundamental, he inclusive mostrar lo fundamental de lo avanzando, pero suele suceder que para profundizar necesitas el inglés. Los mejores libros, las mejores discusiones, y el acercamiento a cualquier cosa nueva dentro de esto suele pasar por sitios en inglés.
Comienza por aprenderte de memoria las palabras reservadas del lenguaje (la mayoría son comunes a casi todos los lenguajes). No le huyas a las páginas de bienvenida en inglés, léete al menos lo más esencial que te muestran (en el caso de las librerías suelen indicarte sus características más relevantes), y compra un diccionario.
Comparte el proceso de aprendizaje
Es un consejo que no siempre se puede resolver. Pero si puedes encontrar otra persona que tenga el deseo de aprender JavaScript aprovecha la oportunidad. Compartir un proceso de aprendizaje potencia su asimilación. Es igual si estás aprendiendo un instrumento musical, o cocina italiana, o yoga, tener otra persona que brinde retroalimentación siempre mejorará el resultado para ambos.
Si no tienes esta suerte, aprovecha la era digital en la que vives e intégrate en alguna comunidad. Hay foros, blogs, grupos, etc, muy activos con gente que tiene las mismas inquietudes. Es cuestión de participar.
Si finalmente no tienes acceso a internet, entonces escribe, para ti principalmente, aunque se lo enseñes a otro. Cuando tienes la actitud de compartir de manera natural estarás buscando asimilar cosas nuevas. Esto es algo que todos los buenos maestros conocen. No retienes. Abres el caudal para que el agua pase sobre ti.
Dibuja un mapa de tu aprendizaje
Si ya te has enterado de como es el entorno, haste un plan. Podría parecerse a esto (que básicamente es el mío, pero no les diré en qué paso voy ni cuanto he avanzado en otros ámbitos, mi camino ha sido diferente, advierto, debes diseñarlo conforme a tu experiencia y objetivos):
• Aprender HTML y CSS como tiene que ser.
• Aprender el uso de al menos una librería CSS para entender cómo me ayudan las librerías.
• Aprender lo fundamental de Javascript (sintaxis, objetos, funciones, métodos). Y profundizar en las librerías CSS.
• Aprender aspectos avanzados de JavaScript (estructuras complejas, métodos alternativos, novedades, uso de lo fundamental en librerías como jQuery y Vue JS). Establecer un conocimiento sólido de aspectos fundamentales en el diseño web, como el DOM, las bases de datos, manipulación de los servidores, etc.
• Aprender a profundizar tanto en librerías (jQuery, Node JS principalmente), como en el mismo lenguaje, al tiempo que aprendo a integrar lo fundamental de PHP y AJAX.
• Considerar estudiar un lenguaje de propósito general (Java, Python preferiblemente). Profundizar en PHP. Profundizar en JavaScript (sus novedades principalmente, pero también en librerías diferentes como React, Prototype, ect).
Cómo ves, son pasos completos y anchos, muy flexibles como para no frustrarse pero también y más importante, me sirven para establecer prioridades que es de lo que se trata este consejo. Por mi parte, como ya dispongo de una buena base de HTML y CSS (incluyendo librerías que he venido explorando), tiene sentido que escoja un camino que me permite ser primero un mejor frontend (programación de cara al cliente) y deje para un buen rato el aprendizaje backend (programación en el lado del servidor, como PHP y las bases de datos). Muchos escogen vías contrarias, normalmente porque PHP fue mejor establecido en ellos como lenguaje materno(el primero con el que tuvieron soltura o vienen de un lenguaje de propósito general). Por eso insisto que debe ser basado personalmente en ti. Pero debes hacerlo, para tener un enfoque.
Comprende lo que es el DOM
Si, este es un consejo técnico válido si estás metido ya en JavaScript aunque sea a los tobillos. El DOM(Document Objet Model) es, por explicarte de una manera gráfica el modelo de lo que es una página web para un navegador. Es muy importante porque JavaScript básicamente lo manipula.
Si en un buen libro de fundamentos de programación, te has topado con un “árbol de decisiones”, entonces te lo podrías imaginar mejor. Solo que el DOM se trata de un árbol de jerarquías en sus elementos, de forma que puedes moverte a través de ellos señalando sus partes e invocando desde una expresión algún método o atributo que forma parte de ese elemento en si (si a estas alturas has leído en algún lado que un objeto tiene propiedades y métodos espero que comprendas).
Yo hasta hace bastante poco comprendí, gracias al libro You Don't Know JS (recomendado), que esta era una parte de JavaScript que en realidad no es JavaScript, ya que son objetos propios del navegador….
Console.log (“Hola Mundo”);
Alert (“Hola Mundo”);
document.write (“Hola Mundo”);
No ejercicios básicos de todos los manuales fundamentales, comenzaron a verse distintos. También comprendí que ese simple punto en medio es lo que hace que puedas ir buscando a través de los nodos de los objetos, tanto sus propiedades como sus métodos, de forma que .log () pertenece al objeto console, y .write () al objeto document, y no son “funciones nativas” del lenguaje, como te hacen pensar todos los manuales de principiantes.
Distinguir esto para mí fue un paso importante porque pasé de querer memorizar expresiones, a concentrarme en conocer que métodos y propiedades tienen los objetos en si mismos.
Ten buenas costumbres de programación
Te ayudará principalmente a ti mismo. Si no sabes a qué me refiero, te explico por encima algunas:
• Dale espacios a tu código que te ayuden a ser legible su contenido. Aprovecha que JavaScript no tiene problemas con esos espacios ni saltos de línea. Fíjate de los ejemplos q salen en los libros.
• Recuerda cerrar con ; cada sentencia que escribas. Aunque no es obligatorio, al menos para las sentencias de una línea, te ayudará a ti mismo a distinguir donde terminan, y te mostrará el menos errores cuando ejecutes.
• Siempre que habrás llaves {} o paréntesis () cierra bde inmediato, dale espacios y escribe tu código. También te ahorras largos minutos de buscar un signo ausente.
• Bautiza tus variables con nombres significativos. No es lo mismo llamar “XCV” a una variable que llamarle “nombre”. Lo mismo para las funciones y metodos, es habitual bautizarla con verbos para recordar que hacen cosas. Las constantes suelen llamarse siempre bde un modo diferente a las variables, algunos las bautizan en mayúsculas completas, otros anteponen un signo de subrayado (cuestión de gustos, la intención es igual). También es bueno acostumbrar el uso de “camel case”, q ni es otra cosa que colocar en mayúsculas la inicial de cada palabra cuando el nombre tiene más de una, comenzando por la segunda (porEjemploEstaFrase).

  • • Comenta tu código. Te ayudará a recordar detalles importantes y en última instancia a que otros también puedan entender.

 Consejos sencillos que te harán mejor la vida a largo plazo.

Mago de JavaScript

Vale, no soy un experto en Javascript, valga decirlo en primer lugar antes de decir cualquier otra cosa. Ni siquiera soy programador, analista de sistemas, ingeniero informático, o cualquiera de estas profesiones para las cuales programar es pan diario. Confieso además que me costó más de 20 años de aprendizaje fragmentado de manera autodidacta comprender lo poco que ahora comprendo, pero gracias a Dios hoy me siento con la humilde y relativa seguridad de poder afirmar que conozco el lenguaje, para poder integrarlo en mis diseños.
Admito además que soy consciente de haber apenas arañado la superficie del lenguaje y que mi esfuerzo tiene por delante además el reto de ir más allá, en las direcciones de este mundo digital que es necesario recorrer. Comprender JavaScript y dejar de lado AJAX, Jquery, Node.js, y otras implementaciónes como éstas sería como seguir avanzando en el lenguaje materno solo con la cartilla del ABC de la escuela. Soy consciente de todo ello.
Entonces, de dónde sacó las agallas para escribir de algo que apenas conozco todavía superficialmente? Pues, de la misma necesidad y ganas de aprender. Que combinado con la necesidad y ganas de enseñar y compartir, se da la mano. No en vano siempre he afirmado que la mejor forma de aprendizaje es la misma enseñanza, quien intenta arrojar luz sobre un tema debe dar el 110% en su esfuerzo por comprender el mismo. De aquí que iniciar este blog sea para mí un método y una herramienta. Y quizás para quien lee mis artículos y los encuentre útiles sea lo mismo. Soy consciente al mismo tiempo de que hay quien sabe más, y hay quien sabe menos que yo. Tomando esto, comienzo.
Hace años, cuando en una de estas me esforzaba por comprender los rudimentos de la programación me dio por buscar consejos y me encontré con uno que guardé en mi corazón hasta ahora. Parafraseando quizás un poco lo que decía textualmente lo citaré así: “cuándo te esfuerces por aprender un lenguaje, aprende también sobre su cultura”. Hermoso consejo.
La mayor parte de los lenguajes de programación tienen una buena cantidad de años a su espalda, y a lo largo de toda su carrera ellos mismos han ido evolucionando, no solo en la sintaxis, sus funciones y métodos, sino hasta en la cultura de sus “escribanos”. Por otro lado la cantidad enorme de librerías que se han ido acumulando para cada una es verdaderamente sorprendente. Además surgen también los “dialectos” de un lenguaje, que sin ser declaradamente explícitos en sus nombres tienen en realidad sus raíces muy metidas en un lenguaje concreto. Por otro lado, librerías que por su utilidad se hacen imprescindibles para su implementación.
JavaScript no escapa de nada de esto, y es un mar donde podrías nadar por décadas sin haber culminado de recorrer sus playas de todas clases. Sirva pues la función de este blog para poder nadar en las olas de mi aprendizaje y de la cultura JS, que sin duda es bastante.
Por qué Mago de JavavaScript? Pues, porque soy autodidacta, y me voy abriendo camino con mis propios métodos a través de un lenguaje que se le resiste a muchos como un secreto arcano. Los programadores, al igual que un mago van creando una realidad a punta de palabras, números, y no sin el esfuerzo de entender un término, y de meter la nariz en docenas de libros. Así me veo, tanto en programación cómo en otros lugares.
Compartiré aquí mis ejercicios, mis descubrimientos, mis libros, mis reflexiones, mis consejos, mis recomendaciones, mis recompensas, y cómo no, también mis equivocaciones. Por lo que espero poder ir conociendo además a otros “escribas” de este mundo de la programación, y particularmente de JS de todos los niveles. Tal vez encuentres que mis artículos no tienen una gran profundidad técnica… bueno, no es tampoco mi intención. Si ves que tiene un enfoque muy personal es porque ese es mi enfoque.
Este blog, Mago de JavavaScript, es mi cuaderno. Un cuaderno abierto.
Poder devolver a éste mar que es JavaScript mi aportación de granito de arena… y quién sabe, ahorrarle camino a alguien.
Bienvenidos a todos.