Aviso de cookies

Estoy de acuerdo Este sitio web guarda pequeños fragmentos de información (cookies) en su dispositivo con la finalidad de ofrecer un mejor contenido y para finalidades estadísticas. Usted puede desactivar el uso de cookies modificando la configuración de su navegador. Navegar por nuestro sitio web sin cambiar la configuración del navegador hace que usted nos esté autorizando a guardar esta información en su dispositivo.

Entrevista en Diferido 02: Joseda

28 de Enero de 2019 a las 07:41| entrevista , telegram

Comenzamos la segunda entrevista del canal de Telegram @EntrevistaEnDiferido, donde se realiza una entrevista a lo largo de una semana.

El entrevistado es mi ccompañero del podcast @RadioDev  , Joseda, desarrollador web. 

Entrevista En Diferido.  Buenas Joseda,  ,la primera pregunta sería una presentación por parte del entrevistado para que los lectores puedan conocerte un poco. 

¿Te podrías presentar en unas líneas?

Joseda. Hola Jose, antes que nada, encantado de estar por aquí. Gracias por invitarme para ser uno de tus primeros invitados (ejem... conejillos de indias.

Me llamo José David, pero los amigos me llaman Joseda. Soy de Chipiona, un pueblo de la provincia de Cádiz, pero llevo unos meses afincado en Sevilla capital.

Soy programador web desde hace relativamente poco. Empecé a estudiar en la rama de las ciencias químicas, pero al no encontrar trabajo, probé a cambiar a la programación haciendo el CFGS Desarrollo de Aplicaciones Web, y encontré aquí mi verdadera vocación. Ahora mismo disfruto mucho investigando y aprendiendo sobre este mundillo que no para de evolucionar. En estos momentos estoy trabajando en remoto como Full Stack JS y estoy encantado con mi trabajo y con todo lo que estoy aprendiendo.

Fuera de este mundillo, disfruto mucho con la gastronomía, tanto yendo a probar nuevos platos como cocinándolos yo. También soy un cansino escuchante de podcasts, un mundo que me alegro muchísimo de haber descubierto, y últimamente también me he aficionado a practicar el deporte de la natación. No hay nada mejor para desconectar después de un duro día de trabajo delante del PC.

EED. Para empezar , una pocas preguntas cortas para conocer tu entorno de trabajo.

¿Ordenador y sistema operativo?
¿Lenguaje de programación?
¿Utilizas algún framework? ¿Cuál?
¿Editor de código o IDE? ¿Cuál?

Joseda.   Llevo unos 5-6 años usando Linux, en concreto Linux Mint, y estoy muy contento con esta elección. Linux me permite personalizar hasta el último detalle, tanto a nivel estético como funcional. Me he vuelto bastante productivo usando distintas herramientas que hacen que todo "fluya" más rápido.

Como lenguaje de programación últimamente uso javascript, tanto en frontend como en backend. Pero también tengo experiencia con PHP.

Los frameworks que uso en el front son React con React Native para desarrollo para smartphones y Vue para desarrollo web. Y en el backend, Express. En el backend también me he llevado bastante tiempo usando Laravel como framework PHP, pero ahora mismo lo tengo abandonado.

Si me das a elegir entre editor de codigo o IDE, te diría IDE, y si es de Jetbrains, mejor (PhpStorm, WebStorm). El problema es que consumen muchos recursos, y mi PC actual va justo para estos IDEs. Así que por lo pronto estoy con un editor con el que también estoy encantado, que es Visual Studio Code. Se puede decir que te puedes construir tu propio IDE con él a base de addons o plugins. También lo tengo bastante optimizado para mis desarrollos. Antes era más de Atom, pero desde que probé Visual Studio Code, he abandonado Atom. Siempre que alguien me pregunta la diferencia entre estos dos editores digo lo mismo: Visual Studio Code es prácticamente igual que Atom, pero todo funciona bien (en Atom siempre he tenido algunos problemas con ciertos plugins y funcionalidades)

EED. Trabajas en remoto, en el mundo de desarrollo web mucha vente trabaja de esa forma.

¿ Qué consejos  podrías dar para trabajar en remoto de forma eficiente?

Joseda. Mi recomendación principal es RUTINA. Si no tienes rutina es fácil que se descontrole todo.

También tienes que tomártelo como un trabajo presencial en todos los sentidos: hora de comienzo, hora de fin, descansos, etc. Y si vives con más gente en tu casa, dejar claro para qué te pueden interrumpir y para qué no, ya que estas interrupciones son un impedimento para tu producitvidad.

Aparte de ésto, también recomiendo desactivar notificaciones en el móvil, si usas el navegador tener un perfil de trabajo donde no tengas abiertas sesiones de redes sociales y tener una libreta o un papel al lado para apuntar cosas de las que te acuerdes en ese momento, tengan que ver o no con el trabajo. De esta forma las sacas de tu cabeza y puedes seguir concentrado en tu trabajo.

Estas cosas son las que todos suelen decir, pero es verdad que funcionan.

 

EED.  Desarrollas en JavaScript, un lenguaje que esta moda y que abarca  tanto  frontend como backend. Desde tu experiencia en el desarrollo web.

¿Qué añadirías a JavaScript?
¿Qué mejorarías de JavaScript?
¿Qué eliminarías de JavaScript?

 

Joseda.   Ufff vaya preguntitas,
No llevo tanto tiempo en el mundo de la programación como para responderlas con la exactitud que me gustaría, pero bueno, ahi va 

Añadiría tipado estático. Aprendí a programar con Java y, aunque al principio era lioso, terminas acostumbrandote. Y una vez te acostumbras al tipado estático el codigo lo ves mas limpio y se entiende mejor. Y el número de errores en el código también disminuye. También añadiría un método nativo para capitalizar cadenas de texto que no lo tiene y al final te lo tienes que fabricar tú. 

Cambiaría, mas que javascript, los navegadores. Seria un sueño Que todo funcionara igual en todos los navegadores. Hay cosas de javascript que no funcionan bien en ciertos navegadores y en otros si. Siempre es el dolor de cabeza principal de los desarrolladores web, la incopatiblidad de codigo y de diseño en los navegadores :(. Pero bueno por suerte tenemos los preprocesadores tipo Babel, que solucionan este problema en lo posible.

Y eliminar... no se me ocurre que eliminari que no este relacionado con mis respuestas anteriores... asi que dire tambien la incompatiblidad con los navegadores. No soy muy original, pero aunque llevo tiempo con javascript, no llevo tanto tiempo en el mundo de la programacion para conocer tantos aspectos, Sorry si no es una buena respuesta.

Me has hecho sudar de verdad con estas preguntas jeje, y perdon por la tardanza en contestar. Se me paso completamente. Ya no volvera a pasar en lo que queda de entrevista

 

EED. Recibes en el 2019 una oferta de trabajo de formador, que es irrechazable, para impartir un curso para futuros desarrolladores web, los alumnos tienen  un nivel básico de programación. Tienes un año para convertirlos en desarrolladores web competentes .

¿Qué temario escogerías?

Asi de pronto, y sobre la marcha te voy diciendo:

Mes 1:
HTML, CSS y git

Mes 2:
Fundamentos basicos de la programacion (variables, funciones, loops)
Iniciacion en sistemas linux para el desarrollo de software (uso del terminal sobre todo)

Mes 3:
Programacion orientada a objetos con javascript

Meses 4 y 5:
Patrones de diseño 

Mes 6:
Desarrollo de backend usando Express

Mes 7:
Desarrollo de frontend usando React

Mes 8:
Desarrollo de apps moviles con React Native

Mes 9:
Consumo de APIs de terceros para crear tu software

Meses 10, 11 y 12:
Proyecto final, que englobe casi todo lo que se ha visto y puesta en produccion del mismo

Esta es el temario que se me ocurre. Cada mes, aparte del temario, terminaria con un pequeño proyecto para afianzar lo aprendido, Y nunca cerraria lo aprendido en un tema. Los meses siguientes se seguiran reforzando los temas anteriores.

Tambien iria dando pequeñas capsulas de buenas practicas, tips de proudctividad, etc durante todo el curso. Creo que estas cosas se asimilan mejor poco a poco que si se da todo de sopeton. 

He elegido javascript, porque de entre los 3 lenguajes que mas o menos conozco (Java, PHP y Javascript), creo que tiene todo lo necesario para enseñar a programar, ya que se puede usar desde el principio tanto como lenguaje procedural como lenguaje orientado a objetos, y su ejecucion es facil. Aparte de que una vez que los alumnos aprendan un minimo pueden decantarse por programar para web, para moviles, backend, etc.

Creo que no me djeo nada. Ahi lo llevas.

 

EED. El desarrollo web requiere conocimientos en varias materias; backend,frontend o diseño. En cada una hay bastantes librerías y framework. De todo el conocimiento que has adquirido para el desarrollo web a lo largo del tiempo, si pudiera volver al pasado.

¿Qué librería o framework, no hubieras aprendido?

Joseda.  

Como dije en una pregunta anterior llevo relativamente poco tiempo en esto y apenas me ha dado tiempo de aprender frameworks.

Los que llevo aprendidos por ahora son:

PHP:
Codeigniter
Laravel

Javascript:
jQuery
Vue
React
Express

Son pocos como ves, pero es verdad que cada uno me ha enseñado a mejorar como desarrollador de una manera u otra. Asi que no te podria decir cual no hubiese aprendido.

Pero si lo que quieres saber es cual no recomiendo aprender "ahora" es jQuery (aunque no me desagrada del todo, pero puestos a escoger uno...). No es que sea malo, sino que para proyectos mas o menos grandes hay mejores soluciones como Vue, React o Angular. Y algunas de las soluciones que aporta las aportan ya las ultimas versiones de javascript. Y las demas o no son ya tan necesarias o las suplen las funcionalides de las otras librerias que he mencionado.

 

EED.   Anteriormente has indicado que  desarrollas con React Native para el frontend.

¿Qué ventajas aporta React respecto a otras alternativas con la que hayas trabajado?

 

Joseda.  Aparte de React, trabajo tambien con Vue y con jQuery (cuando ya viene integrado). Asi que te comparo un poco con estos dos:

Comparado con jQuery, React tiene dos grandes ventajas. La primera es la modularidad, por llamarlo de alguna manera. Puedes crear componentes funcionales y esteticos, y estos componentes puedes introducirlos a su vez en otros componentes. Esto ayuda mucho a la reutilizacion de codigo y cuando un proyecto crece es mas facil hacerlo con "buenas practicas" para que al final no tengas un monstruo del codigo. Y la segunda ventaja es la reactividad. Tanto React como Vue usan un patron de diseño llamado MVVM (Model-View-View-Model),  en el que los distintos componentes del codigo HTML (Views) los enlazas a variables o modelos de javascript (Models). Si cambias algo de la vista, tambien cambia el modelo al que esta enlazado, y si cambias el modelo tambien cambia la vista. Al principio choca un poco, pero cuando le coges el tranquillo la reactividad es una maravilla!

Y comparado con Vue. React tiene una caracteristica, que bien puede ser una ventaja o un inconveniente, segun se mire. Por decirlo mal y rapido: Vue tiene mas magia y React es mas artesano. En vue se trabaja mas rapido, pero tienes que hacerlo "a su manera". Muchas cosas que pruebes no funcionaran. Pero unna vez las aprendas, le cogeras gusto. Antes de eso habra ciertas cosas que te lleven por la calle de la amargura jeje. En React es un poco al contrario. Tienes que picar mas codigo, pero casi seguro te funcionara todo a la primera. No defiendo ni una cosa ni la otra. Las dos opciones tiene sus cosas buenas y sus cosas malas.

 

EED.  Creo que utilizas ciertas herramientas para mejorar tu productividad en el trabajo.

¿Cuáles son esas herramientas y para que sirven?

Joseda.   Aqui tengo para dar y regalar jajaja.

Siempre digo las mismas, pero es que son las que me funcionan, aqui las dejo por si acaso alguno no me conocia, pero aviso que son de linux, y si acaso, alguna para mac. no creo que esten para windows porque estas herramientas son mas bien de terminal:

Guake: emulador de terminal desplegable. Lo interesante de esto es que pulsando una combinacion de teclas, por defecto F12, se muestra la terminal, y si vuelves a pulsarla, se oculta. Lo recalco, se oculta, pero no se cierra. Lo bueno de que sea asi es que siempre tienes abierta tu sesion de terminal, y es independiente del sistema de ventanas. Asi que no tendras otra ventana mas por ahi con la terminal. Tambien tiene pestañas, lo cual es muy util si quieres usar varias sesiones de terminal en la misma.

Tmux: es una aplicacion de terminal  (CLI, Command Line Interface) que te permite dividir tu sesion de terminal en pestañas virtuales (aqui llamadas ventans), y cada pestaña puedes multiplexarla en distintas terminales, llamadas paneles. Funciona todo con atajos de teclado, Lo que me gusta tambien es que puedes abrir distintas sesiones de terminales, ejecutar tus "cosas" en cada una, y despues ir cambiando de una sesion a otra.

Tmuxinator: Es un sistema de templates para Tmux. estos templates son ficheros de configuracion en los que estableces una sesion de tmux con sus ventantas y paneles y... ¡en cada uno puedes ejecutar un comando distinto! Lo uso para cuando voy a empezar a trabajar en un proyecto, ejecuto la plantilla de ese proyecto, y tmuxinator se encarga de crear la sesion de tmux donde ejecuto los servicios, visualizo los ficheros de logs, una terminal limpia para ejecutar otras ordenes cuando me hagan falta... cada cosa en un panel de tmux. Quien no lo haya probado, se lo recomiendo!

zsh+oh-my-zsh: zsh es un interprete de terminal (como bash), que da ciertas ventajas, como que cuando obtiene sugerencias puedes navegar por ellas o tienes un historial de comandos mas usable. Y oh-my-zsh es un framework para zsh. Puedes añadirles temas y plugins. Los temas son diseños para la terminal. Cambian los colores y el prompt (lo que tienes al inicio de cada linea que normalmente aparece el nombre del usuario, el del equipo y el directorio donde te encuentras). Y los plugins añaden mas funcionalidades a tu terminal, como autocompletados de comandos para git, npm, etc donde al lado de cada comando sugerido ves su funcion, aliases de comandos para algun servicio, coloreado de los comandos que te indica si lo has escrito bien o no... y muchisimos mas.

Browser Sync: paquete de node que instalas de forma global, y ejecuta un servicio http que "vigila" los ficheros que le especifiques, y cuando alguno de ellos cambia, te recarga el navegador, para que no tengas que hacerlo tu manualmente, Si esto lo combinas con una segunda pantalla, no tienes que salir del editor de codigo para ver como van quedando ttus diseños, ya que al guardar, se te recargara el navegador y podras ver los cambios de momento.

Todo esto combinado con una segunda pantalla, teclado mecanico con configuracion inglesa (los caracteres que mas se usan en la programacion estan mas "a mano") y el uso de muchos atajos de teclado hacen que mi productividad se multiplique.

 

EED. Como desarrollador web tendrás una visión algo diferente cuando navegas por una web, bastante diferente a otro tipo de usuario. Me gustaría tu visión sobre una web bien hecha.

¿Cuáles son las características principales que debería tener  "la página web perfecta"?

Joseda.  Lo mas importante es la experiencia del usuario, bajo mi punto de vista. Si esto falla, la web fracasa. Para que la experiencia del usuario sea buena una web debe tener las siguientes caracteristcas:

Navegacion intuitiva: el usuario debe poder encontrar rapidamente lo que busca.
- Tiempos de carga reducidos: cuanto mas tiempo en cargar una web, mas probable es que el usuario se aburra de esperar y la abandone.
- Accesibilidad: la web debe ser accesible para cualquiera. No me refiero solo a gente con deficiencias altas de vision, oido, etc. He visto webs poco accesibles incluso para gente sin estos problemas, como por ejemplo un contraste de colores que no te permite distinguir el texto, que no tienen autofocus en los inputs de un formulario de manera que al pulsar la tecla tabulador pase al siguiente input, enlaces que no lo parecen... en definitiva, un poco de concordancia de lo que es cada cosa con lo que realmente parecen.
- Que sea responsive

Ahora mismo no caigo en ninguna cualidad mas para que la experiencia del usuario sea buena, pero si me acuerdo de alguna otra la añadire antes de la proxima pregunta.

Aparte de esto hay un par de cosas que aunque sean menos importantes que las que he comentado, tambien les doy importancia:

- SEO mas o menos cuidado: no digo que haya que sacar 100 puntos en cualquier analizador de seo, pero hay ciertos minimos que se deberian cumplir, como las estructuras de las urls, imagenes con atributo alt y src que concuerden con su contenido, estructura del contenido que tenga sentido, etc. Si tienes una web muy interesante pero nadie llega a ella, no sirve de nada.

- Si quieres lograr un objetivo con tu web, ya sea una venta, dar a conocer tus proyectos o hacer que se suscriban a tu membership site, es importante mostrar un "Call To Action" en algun sitio donde a tus usuarios no les pase desapercibido.

Y por lo pronto eso es todo. Para ser un desarrollador mas de backend, me he centrado mucho en el diseño, pero una web al fin y al cabo es eso. aparte de que no puedo ver el backend de una web que me encuentre para saber si es perfecta o no para mi en ese aspecto.

 

EED.  Fuera del mundo del desarrollo web.

¿Te interesa la programación en otro ámbito?  ¿Cuál o cuales?

Joseda.   Sí. Aunque el tiempo que llevo de programador solo he tocado desarrollo web y desde que empecé a trabajar en la empresa en la que estoy también he tocado desarrollo para móviles con React Native, siempre me ha interesado el mundillo de la inteligencia artificialal. En un futuro me gustaría meterme en ese ámbito, pero ahora mismo prefiero centrarme en el desarrollo web y móvil para seguir especializándome. Porque si empiezo a dar saltos de un lado a otro al final acabare como el maestro Liendre, el que de todo sabe y de nada entiende.

Hay que centrarse, ya tendré tiempo más adelante de adentrarme en esas aguas.

 

EED. Como última pregunta de la entrevista , me gustaría hacerte la pregunta mas fácil.

¿Qué te hubiera gustado que te preguntase? Evidentemente la respuesta será tuya.

 

Joseda.  Para mi es la mas complicada.
He venido a la avetnura y no se me ocurre nada jeje

Algo que me queda por contar que pueda ser interesante para los que leeis la entrevista, podria ser por que uso Linux para programar en vez de usar Windows o Mac.

En mi caso, como todo el mundo, vengo de Windows. Alguna que otra vez instale ubuntu junto con windows, pero terminaba usando solo windows y al final lo desinstalaba. Asi que para que no me volviera a pasar, decidi instalar Linux Mint como unico sistema operativo, para obligarme a utilizarlo. De eso hace ya cinco años.

Es verdad que al principio cuesta, pero una vez que te "acostumbras" a lidiar con los posibles problemas y le coges el tranquillo a la terminal, te vuelves mucho mas productivo y le sacas muchismo mas partido para desarrollar. El hecho de usar el mismo sistema operativo que alojara a tu aplicacion web en produccion hara que lo que desarrolles produza menos "sorpresas" cuando despliegues. Y tambien el que puedas personalizarlo todo hace que lo puedas dejar todo a tu gusto para poder trabajar mejor.

Asi que, a no ser que desarrolleis para las plataformas de Apple, en cuyo caso no tienes mas remedio que usar un Mac, recomiendo mucho probar Linux.

PD: no detesto Windows, ni mucho menos jeje. Simplemente pienso que para desarrollar se le puede sacar mucho mas partido a Linux, o incluso a Mac (que tambien tengo entendido que es muy buena opcion, pero por lo pronto se me va de precio). Windows lo veo una excelente opcion para quien necesite un software especifico que solo este para esa plataforma, o si quieres un PC para jugar.

 

EED.  El último día de la entrevista  no hay pregunta, simplemente es la despedida y promoción.

Primero me gustaría   agradecerte la participación y apoyo a este proyecto, también por el feedback que me has dado. Pero antes de la despedida , me gustaría que me recomendaras a alguíen que tú creas que le puede interesar participar como entrevistado.

También me gustaria que comentaras donde podemos seguirte y si quieres promocionar cualquier evento, proyecto ,podcast, canal... Puedes utilizar ahora este canal para ese fin.

Muchas gracias por todo.

 

Joseda.  Un placer, me lo he pasado en grande.

Creo que un buen candidato para esta entrevista puede ser Lorenzo, alias Atareao. Tiene un perfil interesante, ya que es desarrollador de varias apps de Linux, trastea con todo tipo de software de Linux y le interesa todo lo que tiene que ver con la productividad.

Y ya hablando un poco de mi:

- Me podeis encontrar en Telegram y en Twitter por @josedabm.

- Tengo un canal de telegram, Recursos para WebDevs (https://t.me/recursosparawebdevs), donde comparto herramientas para desarrolladores web que voy probando, pero que ultimamente lo tengo un poco abandonado porque no he podido centrarme en probar herramientas, y en ese canal solo me gusta agregar recursos que de verdad he probado y veo que funcionan bien. Los que esteis suscritos no os vayais porque en breve lo retomare con fuerza.

- Tambien soy un miembro del podcast RadioDev (buscadlo en vuestro podcatcher favorito), donde nosotros dos junto a Daniel Primo hablamos sobre herramientas para el desarrollo web, y de vez en cuando nos juntamos para hacer una version extendida para discutir sobre un tema concreto del mundo de la programacion (ya mismo toca)

- Ahora mismo no tengo web, ni blog, ni podcast propio, pero como primicia para ti y todos los que leeis esto, os digo que todo eso se esta "cocinando", y me comprometo aqui en publico en que lanzare mi podcast personal antes de que termine el mes de febrero. Asi que si no cumplo con mi promesa, me podeis echar la bronca, pero hare todo lo posible porque eso no pase.

Bueno, pues eso ha sido todo. Muchas gracias Jose por haber contado conmigo para esto. Ha sido toda una experiencia y me lo he pasado muy bien. Este formato de entrevista promete!! Espero que mis respuestas hayan sido interesantes y que todos los que la habeis leido le hayais sacado al menos algo de valor.

Un saludo a todos!!

 

EED. Con esta última respuesta doy por finalizada, espero que os haya resultado tan interesante como a vosotros como a mí.

La próxima entrevista será el Lunes 4 de Febrero, a un entrevistado con un perfil un poco diferente, podcaster y conocido en la comunidad de Telegram y Linux.

 

Este canal de Telegram tiene un cuenta de Twitter @EDiferido, donde pondre información sobre las entrevistas y entrevistados.

Os espero en la siguiente entrevista.

Generar PDF de Entrevista en Diferido 02: Joseda