Una de las razones fundacionales de ISDI Coders es la de preparar a nuestros alumnos para una carrera larga en el sector del desarrollo web. Para conseguirlo, nos ceñimos al lema de la escuela: AD ASTRA PER ASPERA (a las estrellas a través de la dificultad). Decidimos diseñar un programa que llevara a nuestros estudiantes a un nivel muy sólido de Javascript. Hay muchas razones detrás de esta decisión, pero éstas son las dos principales:
-
- El salario de un programador suele ir acorde a su nivel.
-
- Aparecen y desaparecen nuevas tecnologías. Es vital poder aprender de forma autónoma. Hacerlo es más fácil con una sólida base de programación.
Para destacar en las entrevistas de trabajo, poder resolver el mayor número posible de problemas y tener las bases para poder comprender nuevas herramientas y lenguajes, necesitamos llevar a nuestros alumnos a dominar conceptos avanzados de Javascript como:
-
Closures
-
- Prototipos de una función
-
- El valor de
this
- El valor de
-
- Asincronía
Una de las herramientas docentes que utilizamos para conseguirlo es el uso de unit testing (pruebas unitarias).
En programación, una prueba unitaria es una forma de comprobar el correcto funcionamiento de una unidad de código. Además de verificar que el código hace lo que tiene que hacer, verificamos que sea correcto el nombre, los nombres y tipos de los parámetros, el tipo de lo que se devuelve, que si el estado inicial es válido entonces el estado final es válido.
Testing como herramienta para comprender Javascript
El primer día de Javascript ya empezamos a hacer testing. Hace el proceso mucho más largo y difícil, pero conseguimos que tengamos que esforzarnos en entender a fondo el código.
Habitualmente, Javascript se aprende haciendo ejercicios en los que se practican cada una de las materias. Esta es una diferencia fundamental del programa de ISDI Coders Coders. No solo queremos enseñar a nuestros alumnos a usar el código sino a comprenderlo en profundidad. Así pues, cuando aprendemos los distintos métodos de arrays, lo hacemos testeándolos todos. En este caso vemos el test de la función splice
que hizo Jaume los primeros días de la semana de Javascript:
'use strict';
describe('Array.prototype.splice', function () {
var elements; beforeEach(function () { elements = ['Jan', 'March', 'April', 'June']; });
it('should iterate and operate correctly', function() {
elements.splice(1,0,'February');
expect(elements.length).toBe(5);
expect(elements[0]).toEqual('Jan', 'Feb', 'March', 'April', 'June');
});
});
Necesitamos mantener el estandar de calidad que las empresas vienen a buscar en los alumnos de la escuela y este nivel de conocimiento es primordial.
Llegar a fondo en closures, prototipos, this y asincronía
El uso del concepto closure
hace que los alumnos entiendan mejor el concepto de scope
, es decir, desde donde son visibles las variables y llegar al concepto del contexto this
. Estos elementos son básicos para dominar la gramática de Javascript y poder construir, entender y solucionar problemas de código mucho más complejos.
El dominio de la asincronía nos permite gestionar mejorar el rendimiento de nuestra aplicación. La gestión de las promises nos abre la puerta a un nuevo nivel en la programación con Javascript. De este modo, podremos trabajar mejor con eventos que no se ejecutan de forma lineal en el tiempo cuando lleguemos a NodeJS, gestionemos archivos o peticiones a la base de datos. Los prototipos y la herencia son conceptos fundamentales que nos abren la puerta a realizar código bien modularizado y nos facilita la comprensión de los componentes que vemos más tarde en ReactJS.
Es importante entender estos aspectos antes de llegar a conceptos avanzados de patrones de diseño, ya que el scope y el contexto son una parte fundamental del Javascript moderno. Además acerca a los alumnos al mundo de desarrollo OOP (orientación a objetos), y les brinda una base para que luego ellos puedan aprender otros lenguajes avanzados, tipados como typescript, java, c#, kotlin, etc.
Si nuestro objetivo es preparar a nuestros alumnos para posiciones con Javascript, necesitamos que dominen el lenguaje y todo lo que esto implica.