Nuevo ciclo de Desarrollo de Aplicaciones Web. Aceptamos sugerencias

educación
fp

#1

Cómo alguno de vosotros ya sabréis el próximo curso empezamos un nuevo ciclo, Desarrollo de Aplicaciones Web.
Dentro del concepto de “Abre tu aula”, nos gustaría conocer vuestra opinión: ¿Qué sería lo más conveniente que se diera en ese ciclo?
Os recuerdo que el perfil lo podéis leer al final de este tema, pero dentro del perfil nos gustaría saber que sería conveniente saber, teniendo en cuenta que estamos hablando de una FP de Grado Superior.
No os cortéis, cualquier sugerencia es buena, nos puede dar ideas a la hora de perfilar los módulos, o simplemente, nos servirá para crear talleres o charlas para la comunidad.

Perfil:

Denominación: Desarrollo de Aplicaciones Web.

Competencias

  • Configurar y explotar sistemas informáticos, adaptando la configuración lógica del sistema según las necesidades de uso y los criterios establecidos.
  • Aplicar técnicas y procedimientos relacionados con la seguridad en sistemas, servicios y aplicaciones, cumpliendo el plan de seguridad.
  • Gestionar servidores de aplicaciones adaptando su configuración en cada caso para permitir el despliegue de aplicaciones web.
  • Gestionar bases de datos, interpretando su diseño lógico y verificando integridad, consistencia, seguridad y accesibilidad de los datos.
  • Desarrollar aplicaciones web con acceso a bases de datos utilizando lenguajes, objetos de acceso y herramientas de mapeo adecuados a las especificaciones.
  • Integrar contenidos en la lógica de una aplicación web, desarrollando componentes de acceso a datos adecuados a las especificaciones.
  • Desarrollar interfaces en aplicaciones web de acuerdo con un manual de estilo, utilizando lenguajes de marcas y estándares web.
  • Desarrollar componentes multimedia para su integración en aplicaciones web, empleando herramientas específicas y siguiendo las especificaciones establecidas.
  • Integrar componentes multimedia en el interface de una aplicación web, realizando el análisis de interactividad, accesibilidad y usabilidad de la aplicación.
  • Desarrollar e integrar componentes software en el entorno del servidor web, empleando herramientas y lenguajes específicos, para cumplir las especificaciones de la aplicación.
  • Desarrollar servicios para integrar sus funciones en otras aplicaciones web, asegurando su funcionalidad.
    Integrar servicios y contenidos distribuidos en aplicaciones web, asegurando su funcionalidad.

Perfil profesional: Programador Web. Programador Multimedia. Desarrollador de aplicaciones en entornos Web.

Módulos Profesionales (Asignaturas)

Sistemas informáticos.
Bases de datos.
Programación.
Lenguajes de marcas y sistemas de gestión de información.
Entornos de desarrollo.
Desarrollo web en entorno cliente.
Desarrollo web en entorno servidor.
Despliegue de aplicaciones web.
Diseño de interfaces Web.
Proyecto de desarrollo de aplicaciones web
Empresa e iniciativa emprendedora.
Formación y orientación laboral.
En empresas, al finalizar la formación en el centro educativo, completándola y realizando actividades propias de la profesión:
Formación en Centros de Trabajo (F.C.T.).


#2

¡Ahí falta más seguridad!


#3

El problema es que la gente que conozco que ha hecho estos módulos al final se quedan con los típicos Apache, PHP, Mysql y PHP My Admin, sin ni siquiera usar algún framework por medio o alguna biblioteca para la gestión de bases de datos.

Yo creo que hay varias cosas que deberían modernizarse a al hora de desarrollar webs:

  • Bases de datos SQL y «al menos mencionar» algunas NoSQL
  • Instalación de servidores Apache o Nginx, Node, Tomcat y pjango
  • Aplicaciones webs «tradicionales» con generación de HTML de cara al servidor pero basándose en MVC.
  • API Rest + JSON
  • Sistemas de generación de CSS avanzados (LESS o SCSS)
  • Aplicaciones webs con generación de HTML de cara al cliente (Angular, Polymer, Ember, React…)
  • Trabajar con sistemas SCV, siendo git el principal candidato

En cuanto a lenguajes, si bien «lo típico» es PHP, últimamente se está tendiendo a dejar este lenguaje bastante de lado para ir a frameworks en otros lenguajes como DJango, Express, Spring…


#4

Lo suscribo totalmente.

Una manera fácil de saber que se podría dar para una temática así, es ver por ejemplo que ofrece cualquier master / especialización, etc, que puedes dar en plataformas online como Coursera, Udacity, y demás.

Ejemplo de Nanodegree de Udacity

Entended que no competís localmente, sino globalmente, y por cuatro duros o gratis puedes hacer cursos impartidos por Google, Facebook, etc. Y que además cuando miras en portales de empleo, las ofertas que se ven no traen lo del módulo, sino lo que ve en los cursos online.

¿Tiene sentido hacer 2 años de módulo viendo HTML y PHP o hacer un máster tocando Angular y Django?

Si al final el módulo se queda en 10-12 asignaturas que equivalen a 10-12 cursillos de introducción, pues siento decirlo pero hay miles de plataformas online que os sacan delantera (sin horarios, asistencia obligatoria, …). La educación reglada en España se está quedando a la cola, y no voy a entrar a discutir quien es el culpable, pero es un hecho.


#5

Como titulado de DAW que soy, creo que soy el más idóneo entre los presentes para hablar tanto sobre mi experiencia como sobre las deficiencias que he visto en este ciclo de cara al mundo profesional. Sin embargo, voy a pillar sitio mientras le comento esto a mis excompañeros para ofrecerte una visión más amplia, de cara de unos cuantos titulados.

Actualización

No hay respuesta de excompañeros, así que, punto por punto voy a dejar mi opinión.

  • Java no es el mejor lenguaje para empezar, sin embargo apuesto por el, por varios motivos: es fuertemente tipado, lo cual es MUY beneficioso para aprender a manejar correctamente los tipos de datos. Yo empecé a programar con JavaScript y Ruby, dos lenguajes de tipado débil, y creedme que si hubiese seguido así, posiblemente no sería el puto amo ahora.
  • En Sistemas Informáticos, al menos en mi centro, utilizamos un montón de material desactualizadísimo y obsoleto (documentación de la UGR de 2000, para que os hagáis una idea), pero en favor de este, pasamos casi todo el año con Linux (un paseo para mi), así que al llegar a 2º, en Despliegue de Aplicaciones, todos teníamos cierta soltura. Por lo tanto, en este punto: énfasis en administración de sistemas Linux.
  • En Bases de Datos, pasamos bastante tiempo haciendo diseños MER y pocas implementaciones. Aquí quizás sería bueno equilibrar el diseño, con “y ahora implementame esta base de datos y dale uso”. Tampoco estaría mal tocar el modelo NoSQL, aunque el paradigma empresarial actual sigue optando por SQL, hay que saber de todo. Yo lo eché en falta.
  • En Entornos de Desarrollo, considero importante dos cosas: UML y sistemas de control de versiones (especialmente Git y SVN). ¿Por qué? Porque durante la práctica final de Programación, todos recurrimos al generador de NetBeans en lugar de hacer un diseño al principio y tratar de seguirlo, y porque en 2º, mis compañeros me forzaron prácticamente a utilizar Dropbox y un sistema infernal de carpetas y copias de seguridad para gestionar nuestro proyecto, por negarse a usar Git (y creedme que lo intenté). SVN lo nombro, porque todavía muchas empresas (y gordas) lo usan, y yo tuve que metermelo en vena en una noche para no ser despedido.
  • Diseño e implementación de tests. Importante. Hay otros temas que se han estado mencionando aquí (ver posts de más abajo) que considero totalmente innecesarios de cara a que el titulado debe estar capacitado para trabajar, no para ser un programador autónomo capaz de montarte un SkyNet en dos tardes. Recordemos que el título es el principio del camino, en la informática el aprendizaje no cesa nunca y es un campo demasiado extenso y cambiante como para centrarnos siempre en las novedades presentes que tengamos que abordar corriendo, puesto que para cuando terminen de estudiar, es posible que todo el panorama haya cambiado radicalmente.
  • En cuanto a desarrollo en entorno de cliente y de servidor, en este punto llegamos con la base de que todos sabíamos programar, y que todos conocíamos HTML, JS y CSS (unos más que otros). Sin embargo, se hizo un reboot, lo cual fue muy molesto. Por favor, evitar esos reinicios, y profundizar en temas como el uso de frameworks. En DES, aprendimos PHP, PHP orientado a objetos y a manejarnos con CodeIgniter (framework de PHP muy majete), sin embargo en cuanto a DEC, lo más chungo que tocamos de JS, fue jQuery. Hubiese agradecido mucho haber aprendido además algún framework tipo Angular o Ember.js, aunque fuese como anexo del curso.

El resto de temas, ya albergan opiniones demasiado personales para expresarlas aquí.

Todo esto es fruto de:

  • Técnico Superior en Desarrollo de Aplicaciones Web, titulado.
  • Experiencia laboral (tanto en empresas como autónomo).
  • Experiencias personales fuera del ámbito laboral con otros programadores.

#6
  • Java (que no javascript) no es un buen lenguaje para empezar a programar. A demás, en Java, ¿Qué pinta Java en desarrollo web?.Propongo python que a demás con Django sirve para web.

  • Un conocimiento más fuerte en HTML y validaciones. A mí me explotó la cabeza bien fuerte cuando me enteré que para validar contraseñas tenía que tirar de expresiones regulares.

  • Levantar un sitio con certificado de lets encript sería brutal.

  • Aprender a usar un debugger chulo.


#7

Es más, debemos entrar con fuego y azufre y gran cólera contra PHP. PHP debe ser erradicado. Y quien miente JS detrás.

Además, incluiría cosas como devOps (algo tocaís) y sobretodo CI/CD. Si no haces CD, ya empiezas a ser un profesional de nivel medio-bajo, en mi opinión. Los despliegues se deben estructurar de una forma distinta, ya que contamos con las técnicas y herramientas necesarias.

Y por supuesto, cloud. Nada de VPS ni hosting de los 90, estos chavales se graduarán casi en la década del 2020. Cloud, CNCF, y todas las apps conteneizadas o desplegadas en servicios autoadministrados. De hecho, arquitectura web, ¿sabrán esos muchachos qué es serverless y cuándo usarlo y cuándo no? Cloud e infraestructura está muy dejado habitualmente creo, los chavales acaban sabiendo desplegar un Apache y poco más, y luego continúan esas malas prácticas durante un par de años. O peor, no evolucionan y se quedan en Wordpress.

Aclaramos que el primer objetivo de un proyecto web debe ser escalar de forma automática con el mínimo uso de recursos posibles. Lo demás es enseñar a hacer un blog para que niños de la ESO se entretengan en un campamento de verano, como estoy haciendo esta semana en Logroño, o una web para la ferretería de tu tío Antonio del pueblo.

Y si metéis algo sobre LSSI y LOPD… Tengo a un chico dedicado a eso para daros una charla-taller, mándame un mail con una petición y te lo cruzo con él.

Yo soy muy radical con la educación en España, cómo se estructura y su rendimiento y resultados, la he sufrido durante años. Se notará mi actitud. Y aunque en algunas cosas Udacity y Coursera no puedan sustituir al 100% la educación tradicional en la actualidad, sin duda personalmente me sería más útil con muchísima diferencia un “recién graduado” con 2 años a las espaldas aprendiendo por internet (cursos + tutoriales + proyectos) que alguien con una FP, dejando al lado las prácticas.

No te tengo que decir que cuentes conmigo para lo que se pueda ayudar, estoy seguro que contigo los muchachos estarán a buen cuidado y me alegra que salgas a la calle a ver cómo está el campo en la actualidad y cuál es la opinión de los profesionales.


#8

¿Por qué Java no es un buen lenguaje para aprender? Fuertemente tipado, orientación objetos, IDEs inteligentes que te guían sobre como hacer el código, capacidad de depuración avanzada, información detallada cuando se produce un error… No es el lenguaje más avanzado, pero dentro de los que no hacen magia (algo que no veo aconsejable a los novatos, pues deben saber que está pasando en su código) es el que más facilidad e información aporta.

Comenzar con lenguajes interpretados que en su mayoría no te informan de errores hasta que al ejecutar te explota es lo que no considero oportuno.

Y en web tienes, además del citado Spring (uno de los frameworks más fuertes en desarrollo web), JSF con todas sus variantes, entre otros muchos, como Vaadin o GWT, además de Grails que si bien está pensado para Groovy, pasar de Java a Groovy es automático…


#9

Se podría hablar mucho, pero en web el uso de Java es relativamente pequeño y en ciertos ámbitos más acotados por diferentes cuestiones que restan a su interés real (JSP) en mi experiencia (ojo).

Sobre los errores en lenguajes interpretados o no, sin darte ni quitarte la razón, creo que es una cuestión más sobre gustos que una razón para inculcarlo profesionalmente, o serán mis gustos que valoran más otras cuestiones.

Ostras, TESTING, que salgan sin dejar un módulo de cualquier app sin testing (canary, integración, unit, etc., TDD de hecho).


#10

Java sigue siendo el lenguaje más usado, lo cual permite aprenderlo no sólo para web, y en web con Spring es de los más usados: https://hotframeworks.com

Spring Boot va cogiendo cada vez más fuerza de cara a hacer API Rest al contar con toda la potencia de Spring, las millones de bibliotecas java y poder combinarlo con cualquier frontend.


#11

No es por quitarte razón, ni desmerecer lo que has escrito. Cada uno tiene su opinion. Tampoco yo defiendo a java. A mi me importa un pito java y python.
Java pinta en el desarrollo web exactamente lo mismo que python. Se ejecutan en el mismo lugar. Yo no tengo ni idea de cuantas webs utilizan python y cuantas java. Es mas me da igual. Pero las cosas como son.


#12

Ohhh Miguel Angel, siento corregirte. Bueno, es más una ampliación. Lo que has dicho es 100 % cierto. Así lo leí yo y así lo aprendí (poco).
Recerente a Grails, pasate por su página y te sorprenderás de que algunas “novedades” se consolidan en la ultima versión. Una de ellas es Kotlin. Si, podemos utilizar Grails programando con Kotlin. Echa un vistazo, no me acuerdo ahora si es a través de un plugin.


#13

Mola el ranking. Aunque hay puntuaciones que no entiendo… Las de ASP.


#14

Seguridad, seguridad y seguridad.

Evitar inyecciones sql, elegir un buen cifrado de contraseñas, permisos de archivo en el lado del servidor, https con letsencrypt, google hacking, …


#15

Muchas gracias, veo que se puede contar con todos para que deis opiniones.
Será más difícil convencer a mis compañeros pero vamos a intentarlo. De momento voy a matizar algunas cosas. En Programación en 1º empezamos por Java porque hay que recordar que hay que llegar a un compromiso, ya que los módulos (asignaturas) de 1º son exactamente iguales en Desarrollo de Aplicaciones Web y en Desarrollo de Aplicaciones Multiplataforma, y la mayoría de los profesores piensan que es un buen lenguaje para empezar desde cero, se que puede haber opiniones diferentes pero hay que tener en cuenta el contexto en el que nos movemos. Esto extenderlo a todos los módulos de 1º.
Del resto de opiniones estoy bastante de acuerdo, me interesa mucho que nos actualicemos, no sólo nosotros, sino todos los institutos que damos DAW, opino lo mismo en los otros ciclos pero vamos poco a poco, además considero una oportunidad lo de empezar a impartirlo para intentar empezar lo mejor posible.
Tomaré nota de todas vuestras sugerencias, y por favor seguid opinando no os cortéis, me viene muy bien.
Por cierto aprovecharé para que me digáis que sería bueno dar en otros módulos, sobre todo los que daré el curso que viene ya que al dejar la dirección tengo que dar más horas, además ya no tengo excusa para intentar modernizar más la que llevo tiempo dando. Pero eso lo pondré en otro hilo para no mezclar.
Repito, gracias y seguid opinando me viene genial.


#16

Lo de Udacity es precisamente lo que tenía en mente para tomarlo como referencia, pero todavía no se muy bien como cuadrarlo con lo “oficial”, los “oficialistas” y la “burocracia”. Pero mi idea inicial iba en esa línea, aunque las otras respuestas me han dado nuevas ideas.
Ya veremos.


#17