Advertencia: Todo lo que leerás a continuación están basadas
en mi experiencias en el medio. Incluyo también
opiniones de segunda mano, de amigos y compañeros que trabajan en la industria
como desarrolladores web. Con el propósito
de dar un consejo mejor informado y
aplicable a un nivel internacional,
leí varios artículos al respecto tanto en lengua castellana como
inglesa.
Entrar al mundo de la informática es entrar a un mundo
exigente. Sea la rama que se elija hay
una regla que nunca cambia: todo informático debe ser capaz de aprender,
aplicar, desaprender y volver aprender.
En mi caso personal, en
mis 4 años (ya casi 5) de experiencia laboral he trabajado con: Ruby on Rails, Python,
Velneo, Spark SQL, JSON, Bootstrap, Wordpress, Joomla, JQuery, AngularJS, Joomla,
CSS AWS, Docker, Git, Grunt, Gulp, NodeJS, NoSQL, PostgreSQL, etc.
En mi vida de estudiante universitario he trabaja con: Java,
C/C++, C#, Php, mysql, ensamblador,
haskell, subneting, herramientas de sysadmin, etc.
Se ve como una enorme lista, inmensa. Para un principiante puede ser aterrador, más
si no ha pasado por una experiencia universitaria. Pero te digo, no te preocupes, realmente no es necesario que seas
“excelso” en cada uno de los lenguajes y
frameworks que nombre anteriormente.
Cuando digo que no tienes que ser excelso, es que no tienes
que ser un experto en todo del sentido de la palabra en estas herramientas. Se puede aprender una herramienta y a
medida que ganes “experticia”, mas
adelante puedes aprender otras herramientas.
De las otras herramientas solo desbes enfocarte en aprender lo suficiente para tomar sus caracteristicas y resolverlo a problemas puntuales. O saber como integrar la herramienta principal que usas con otras.
Mi primer consejo, si
eres principiante, APRENDE INGLES. No te digo que te vuelvas angloparlante
pero si debes poder leer en ingles
perfectamente, además, de aprender
el lenguaje técnico de la informática
en ese idioma.
La razón es muy sencilla, los mejores tutoriales, cursos,
foros y documentación se encuentran en el idioma anglosajón. En español hay buenos cursos y foros pero
no tan vastos como en el mundo inglés.
Dicho esto vale acotar: en internet hay centenares de cursos gratuitos (busca en YouTube) que te
pueden ayudar aprender desde cero.
La pregunta que me inspiro a escribir este post fue la
siguiente:
“¿Cómo hago para aprender
hacer páginas web?, ¿Por dónde empiezo?”.
Hasta el momento he hablado de forma general. Voy a lo más específico, al desarrollo web (Web
developer), la cual es el área de experticia en la informática dedicada al
mundo de la web. En esta rama es donde
se “hacen” páginas web.
En primer lugar podría mencionar como fue mi (los pasos que segui) camino para
aprender desarrollo web:
1- ) HTML
2- ) CSS
3- ) JavaScript (Este lenguaje hay que aprenderlo muy bien,
es la piedra fundamental del desarrollo web actual y futuro).
3- ) Php y Mysql.
Los lenguajes que nombre anteriormente son fundamentales para aprender a desarrollar páginas web y
sistemas web. Pero en
realidad estos lenguajes no se usan “directamente”, se utilizan frameworks tales como: Wordpress,
Ruby on Rails, Yii, AngularJS, Joomla, etc.
¿Cuál es la diferencia entre los lenguajes y los framework?
Simplificando mucho, con un lenguaje de programación el desarrollador tiene que programar todo. Mientras,
un framework ya tiene
predefinida un conjunto de
funciones y herramientas que solo necesitan ser "configuradas" o llamadas.
Un ejemplo, si en un framework tardas una hora desarrollado
una tarea. Muy probablemente, usando un lenguaje desde cero te tardes cuatro
horas, quizás más.
Claro la diferencia entre trabajar con un framework y sin uno, va más allá del tiempo, hay demasiados
puntos a destacar. Algo que requiere su propio post. De
las mismas manera, muchos framework son open source, solo necesitas una
computadora e internet para aprenderlo.
Hasta el momento he hablado más de la faceta “académica” del
desarrollo web.
Ahora hablando de unas formas más profesional, más con lo
que se trabaja hoy en día, se tendría que hablar de áreas de competencia
más que lenguajes en específico. Trabajar como profesional en esta rama debes trabajar
con desarrollo del lado del servidor (Backend)
y desarrollo del lado del cliente (Frontend). Inclusive especializarte solo en una lado.
Además, debes saber muy bien el trabajar con líneas de
comandos, control de versiones, protocolo HTTP e interactuar con APIs de
distintas plataformas.
Ahondemos:
Backend
Es todo lo relacionado
con lo interno de las páginas web. Manejo y acceso a los datos, toca todo el manejo
interno de una página web.
Desarrollo de lado del servidor: esto no es más que desarrollar programas/interfaces en un servidor web para generar respuestas dinámicas a los clientes. Esto es lo que permite que puedas entrar vía web o móvil a Facebook. Siguiendo con el ejemplo, esto permite que lo ve un usuario A en Facebook sea diferente cuando se conecta comparado cuando el usuario B se conecta.
En el siguiente
enlace hay una lista de lenguajes para el lado del servidor (Server-side) , nombran un buen número para aprender. En mi caso, Ruby on Rails es uno de los lenguajes más fáciles de aprender y
desarrollar proyectos profesionales.
Base de datos: toda aplicación web que sea dinámica utiliza
base de datos para almacenar los datos de usuarios. Entender cómo manejar una base de datos es
fundamental para el desarrollo web (y otras áreas también). Hay una gran variedad de base de datos, que
comparten muchas características entre sí.
Ruby on Rails trabaja con SQL lite o postgreSQL.
Front End
Es todo con lo que el usuario ve e interactúa. La parte externa de una página o sistema web.
HTML/CCS: estos son
lenguajes de marcado, no propiamente lenguajes de programación pero son los
bloques de construcción básico para desarrollar página web. Es fundamental usarlos.
JavaScript: este lenguaje si es un lenguaje de programación en todo el sentido
de la palabra. Y hoy en día se usa para todo.
De hecho leí una vez: “cualquier aplicación que
pueda ser escrita en JavaScript, será escrita en JavaScript”. Por ellos es fundamental que en este lenguaje
si te vuelvas un experto.
Con esto, es importante aprender a usar las librerías deJavaScript. Estas librerías pueden ser
usadas para darle dinamismo visual a una página web, manejar mapas en una web (google maps), etc.
Entre estas librerías y frameworks basados
en JavaScript están JQuery y AngularJS.
Me gustaría incluir Bootstrap, librerías que ayudan a crear diseños
responsive de formar fácil.
Herramientas y plataformas
Las herramientas y tecnologías
que nombrare a continuación, son necesarias de aprender porque de una forma u
otra te verás obligado a trabajar con ellas. Y si te ves obligado es porque
realmente son útiles, facilitaran tu vida como programador.
Líneas de comando (Shell):
cómo usar líneas de comando para instalar librerías, manipular archivos,
ejecutar programas, configurar permisos de acceso es esencial
para cualquier desarrollador. Sea web o no. Hay muchas tareas que se pueden hacer de
forma extremadamente mejor usando líneas de comando.
Sistemas de control versiones: la verdad sea dicha, la mayoría de desarrollo web se hace en
equipos por ellos se usan
herramientas colaborativas, entre ellas el
control de versión, para facilitar el
trabajo en equipo. Para este caso,
Git es la herramienta por antonomasia para el control de versión. Es la mejor, es gratuita y tiene una
excelente documentación.
Github es un servicio en la nube que usa git, se ha vuelto una red social para
programadores bastante popular, es
altamente recomendable
Manejar APIs: hoy en
día es que casi obligatorio integrar páginas web con redes sociales, dígase: Facebook,
twitter, google maps, YouTube, etc.
Esta integración se hace a través de APIs, no son más que un conjunto de “protocolos”
para llamar los servicios que ofrece una plataforma para poder acceder a sus
funciones sin comprometer su estructura interna.
Si tiene que integrar cualquier servicio a tu página web, muy probablemente, usaras
APIs.
Espero que esta pequeña guía sea de ayuda.
hola. muchas gracias x esta experiencia..voy camino a lo mismo. si sabes donde encontrar mas sobre lenguaje técnico de la informática en ingles, I´d really apreciate it.
ResponderEliminarsuper gracias por consejos
ResponderEliminar