Elige tecnología clásica y aburrida

por:

Elige tecnología clásica y aburrida para tus proyectos

Uno de los problemas que solemos tener los programadores, es que nos gusta estar a la última y usar aquello que acabamos de leer que usa Google, Facebook o la startup que lo está rompiendo. Sin embargo, ¿es esto lo mejor?

Tú no eres Google

Últimamente veo muchos equipos pequeños, startups y compañías con equipos técnicos poco maduros y no muy grandes apostar por arquitecturas o tecnologías muy modernas, como los microservicios, bases de datos NoSQL, etc. En mi opinión, uno de los principales problemas de esto, es utilizar una herramienta, tecnología o metodología porque X empresa lo usa. Está claro que todos queremos hacerlo lo mejor posible y aprovechar todas las novedades, pero muchas veces se toman decisiones que son como matar moscas a cañonazos.

Donde digo Google, puedes poner cualquier otra tecnológica grande como Facebook, Microsoft, Amazon, etc.

¿Cuáles son tus problemas? ¿Cuáles son los problemas de Google?

Los problemas de Google los podemos resumir en los siguientes puntos:

  • Un tráfico ingente
  • Miles de desarrolladores a gestionar
  • Muchísimos servicios distintos
  • Necesidad de integrar todos los productos
  • Un nivel de disponibilidad de prácticamente el 100%

Sin embargo, dudo mucho que tú/tu empresa tengáis un tráfico similar al de Google, ni seáis miles de desarrolladores, ni tengaís decenas de productos. Entonces, cuál es la necesidad de cosas como:

  • Bases de datos NoSQL cuando tus datos siempre siguen un esquema
  • Microservicios cuando con un par de instancias de tu monolito soportas todo tu tráfico
  • Microservicios cuando solo tienes un producto, hecho en una tecnología y por un único equipo de desarrollo
  • Colas de eventos cuando lanzas un número muy limitado de eventos
  • Microfrontents cuando el equipo de front son pocas personas

Si quieres leer más, te recomiendo el artículo que me dio idea para realizar esta sección.

Leer más

Cómo usar Docker en Windows

por:

Cómo usar Docker en Windows

Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en Windows tiene algunas características especiales que deberás conocer.

¿Cómo funciona Docker en Windows?

Como ya comenté en la entrada general para aprender docker, Docker aprovecha una serie de características del Kernel de Linux para conseguir seguridad y aislamiento de cada contenedor. Esto no lo soporta Windows, así que en un primer momento Windows necesitaba crear una máquina virtual Linux, para ejecutar Docker en ella. Básicamente eso era lo que hacía Docker Desktop, como puedes ver en la siguiente imagen:

Docker en Windows crea una máquina virtual vía Hyper V

Sigue leyendo si queres saber otra manera de hacerlo funcionar

¿Es necesario usar Windows 10 Pro?

Como seguramente te preguntarás, ¿se puede usar Docker sin Windows 10 Pro?, esta pregunta debe ser contestada con un depende. Por una parte Hyper-V necesita de Windows 10 Pro para instalarse y como he dicho anteriormente, Docker se apoya en Hyper-V para funcionar, así que sí sería necesario. Sin embargo, hay otra manera de hacerlo funcionar usando WSL.

Leer más

Analiza el coste del uso de JavaScript

por:

Analiza el coste del uso de JavaScript

Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin embargo, su uso exagerado está haciendo que muchas webs se vuelvan lentas.

¿De dónde viene el coste de JavaScript?

Hoy en día, las páginas webs están cargadas de código JavaScript que permite añadir gran cantidad de dinamismo, eventos, acciones, validaciones y en definitiva a crear grandes diseños, fluidos y personalizados. Sin embargo, todo esto no viene de gratis, sino que tiene un coste que presenta dos patas:

  • El coste de descargar el código JavaScript
  • El coste de parsear y ejecutar el código JavaScript

En lo relativo al coste de descargar el código, es una característica que comparte con otros recursos como las imágenes o las hojas de estilo CSS.

Leer más

¿Cómo usar agile para mejorar tu gestión de proyectos?

por:

¿Cómo usar agile para mejorar tu gestión de proyectos?

En los últimos tiempos y debido a la transformación digital de las empresas, cada vez la gestión de proyectos cobra más importacia. En este artículo te quiero enseñar como la metodología agile permite mejorar tu productividad.

¿Cómo era la gestión de proyectos antes de agile?

Como sabrás, antes de agile también se gestionaban proyectos y la manera de enfocarlo solía ser mediante una metodología en cascada. Esto consiste en una serie de fases, donde al finalizar cada una de ellas se logra una parte del proyecto y luego se salta a la fase siguiente. Un ejemplo podría ser el siguiente:

  1. Toma de requisitos mediante reuniones con el cliente
  2. Análisis del proyecto
  3. Diseño de la implementación
  4. Desarrollo del diseño propuesto
  5. Pruebas

Este modelo de gestión de proyectos tienen bastantes problemas:

  • Hasta finalizar el desarrollo, es imposible validar que lo que se ha hecho cumple con los objetivos principales
  • No se puede hacer pruebas con usuarios hasta mediados del punto 4
  • Poca flexibilidad y posibilidad de realizar cambios

Por todo ello, un grupo de personas se reunió para plantear una metodología mejor que se adaptase a la forma de ser de los proyectos software.

Leer más

¿Cómo prepararte para una entrevista de trabajo?

por:

¿Cómo prepararte para una entrevista de trabajo?

Uno de los temas que son más populares hoy, son las entrevistas de trabajo en el campo de la informática. Como sabrás, el sector cada vez crece más y la necesidad de encontrar personal cualificado, hace que las compañías se lances a realizar ofertas y entrevistas a multitud de candidatos.

¿Se pueden preparar la entrevistas de trabajo?

En mi opinión, hay una parte muy difícil de preparar, que está relacionada con la parte técnica. Esto es debido, a que cada empresa suele elegir una vía en la que enfocar sus preguntas. Algunas prefieren preguntar directamente problemas que han sufrido en los últimos tiempos y cómo los solucionarías, otras van más hacia temas más teóricos y otro grupo se centra en preguntas de manual.

Para preparar esta parte de preguntas técnicas, te recomendaría hacer lo siguiente:

  • Leer blogs técnicos de tecnología variados, para conocer qué hacen los grandes jugadores (Amazon, Google…) y las novedades del sector, como la programación funcional.
  • Tener algún desarrollo que se pueda enseñar, si lo publicas en GitHub, mejor.
  • Conocer los principios de la programación orientada a objectos, SOLID, algoritmos y las estructuras de datos.

La parte que sí considero que se puede preparar más, es la relativa a la entrevista con recursos humanos. Principalmente, porque las preguntas suelen ser muy similares y se podrían englobar en:

  • Preguntas sobre ti a nivel personal, cosas que te gustan, ambiciones, cómo eres, etc.
  • Preguntas sobre tu formación.
  • Cuestiones sobre tu experiencia profesional.
  • Información relativa a por qué tienes interes en cambiarte y qué buscas con el cambio.

Leer más

Cómo comprobar la seguridad de una web

por:

Como comprobar la seguridad de una web con Flan

¿Cómo analizar la seguridad de una web?

Cada vez preocupa más los graves problemas a los que se enfrentan los negocios online por no comprobar la seguridad de una web. Esto da lugar a multitud de sitios inseguros, que son presa fácil de estafadores y otros piratas informáticos. Por ello es muy importante analizar la seguridad de una web de manera periódica, así como, un buen mantenimiento preventivo y mantener copias de seguridad.

Me gustaría hacer una mención especial a un tipo de proyectos que cada vez es más común, los proyectos WordPress, debido a que, en líneas generales, la seguridad web de WordPress deja mucho que desear, en su configuración por defecto. WordPress es el principal CMS del mercado y muchas veces se usa para webs de bajo presupuesto, que no tienen mantenimiento, lo que les hace ser un objeto directo de los ataques informáticos. Como consejo, si te preocupa la seguridad de tu web y usas WordPress te recomendaría dejar de usar servicios y desarrollos de dudosa procedencia y aprender cómo desarrollar para este CMS.

Para securizar una web, el primer paso que debes dar es comprobar sus problemas de seguridad, usando herramientas como nmap. Sin embargo, este es un proceso complejo y un poco lento, por ello hoy te quiero enseñar otra herramienta más sencilla, pero igualmente útil.

Leer más

Como crear una web: 5 Gtmetrix y la optimización

por:

 

Como crear una web la optimización y GTmetrix

 

Una vez que ya tenemos el diseño creado de nuestra web, es muy importante verificar si este diseño es óptimo o si por el contrario debe sufrir algunas modificaciones para que el rendimiento en general de la web sea mayor. Para todo ello, el administrador cuenta con una serie de herramientas, con las cuales puede “medir” lo bien diseñada que está la web.

Conceptos clave en la optimización

Para la optimización de páginas web, hay una serie de conceptos que se deben conocer tanto qué son, como el cómo afecta a mi web. Aquí detallo las más importantes:

  • Tiempo de carga de página (Page load time): este concepto es bastante sencillo, se refiere al tiempo que tarda nuestra página en cargarse por completo. Según algunas informaciones Google toma en cuenta los tiempos de carga de página para el posicionamiento y este debería siempre estar en la medida de lo posible por debajo de 5s. Es muy recomendable tiempos de carga entorno a 2s ya que el usuario suele abandonar si tarda mucho nuestra página en cargar, además desde redes móviles los tiempos de carga suelen ser mayores, con lo que se agrava el problema.
  • Tamaño de la página (Total page size): es lo que pesa nuestra página, hace un par de años, era un concepto poco importante porque nuestras conexiones eran lo suficientemente rápidas en este aspecto, hoy en día nadie quiere que al visitar x página gaste 15MB de su tarifa de datos. Así que hay que mantener esto lo más bajo posible, se recomienda que no sea muy superior a 1MB.
  • Número de peticiones (Total number of requests): es el número de peticiones que debe realizar nuestro ordenador al servidor, para cargar la página completa. Una petición se puede generar por muy diversos motivos como: cargar una imagen, cargar un archivo javascript, cargar una hoja de estilos etc. El problema es que el servidor tarda un tiempo en atender cada petición, así que por muy rápido que sea nuestro servidor, si realizamos 200 peticiones siempre tardará un mínimo de tiempo, por el tiempo de procesar la petición. Aquí se recomiendan utilizar una única hoja de estilos para toda la web, pocos archivos de javascript y combinar las distintas imágenes o cambiarlas por código CSS si son botones, para reducir las peticiones.
  • Número de peticiones a la base de datos: este dato no sale en GTmetrix, pero si nos sale a los administradores en nuestros CMS (si tenemos alguno instalado), esto nos indica cuantas consultas se tienen que hacer en la base de datos para mostrar la página. Como en el apartado anterior hay que minimizar al máximo el número de consultas.

Leer más

Cómo atraen talento 5 grandes compañías

por:

Cómo atraen talento 5 grandes compañías

Uno de los mayores problemas que tienen actualmente las compañías tecnológicas es encontrar talento tecnológico. Por ello, suelen utilizar cualquier iniciativa para colar sus ofertas de trabajo y dar difusión de las mismas. Bajo la premisa de que siempre es un buen momento para promocionar la compañía, os mostramos algunos ejemplos de cómo lo hacen.

 

Booking y la cabecera HTTP x-recruiting

Si visitamos la página de Booking, seguramente no veamos nada relativo a las ofertas de trabajo. Pero en el pié de página, hay un enlace a las ofertas. Sin embargo, para atraer a más desarrolladores, cualquier llamada HTTP a Booking devuelve algo como esto:

HTTP/1.1 200 OK
server: nginx
date: Fri, 18 Oct 2019 19:58:32 GMT
content-type: text/html; charset=UTF-8
transfer-encoding: chunked
cache-control: private
vary: Accept-Encoding, User-Agent
content-encoding: br
set-cookie: bkng=XXXX; domain=.booking.com; path=/; expires=Wed, 16-Oct-2024 19:58:32 GMT; Secure; HTTPOnly
strict-transport-security: max-age=604800
x-content-type-options: nosniff
x-recruiting: Like HTTP headers? Come write ours: https://careers.booking.com
x-xss-protection: 1; mode=block

Como podéis observar, utilizan como gancho el texto Like HTTP headers? Come write ours y el enlace a su página de ofertas de empleo.

Leer más

¿Qué opinan los desarrolladores sobre Docker?

por:

¿Qué opinan los desarrolladores sobre Docker?

Si sois asiduos lectores de este blog, el término Docker seguro que no es nuevo para vosotros. Para aquellos que no lo conozcan tenemos un tutorial de docker, que contiene definiciones de los conceptos principales y recursos para profundizar. Pero hoy os queremos mostrar otro punto de vista sobre esta tecnología y/o herramienta cada vez más popular, el de los desarrolladores que usan Docker en su día a día.

¿Cuánto se usa Docker?

Quizás sea esta una de las preguntas que más veces nos han hecho, y la verdad siempre respondemos con un depende. Como todos sabemos cada empresa es un mundo y dentro de las mismas, no todos los equipos usan lo mismo (mundos dentro de mundos). Así que se hace muy difícil dar una estimación de uso de esta tecnología, por ello vamos a analizarla atendiendo a varios factores.

En el caso de las startups al estar creando software desde cero o con muy poca antiguedad, nos atreveríamos a decir que son las que más usan Docker. En este tipo de empresa donde muchas veces son pocos los desarrolladores y mucho el trabajo por hacer, se junta el caldo de cultivo perfecto para utilizar esta herramienta. A nivel personal, de las empresas de este tipo que conozco, la mayoría sí lo usan.

Si analizamos las empresas de producto propio, diría que su uso es mucho más dispar. Muchas tienen productos muy maduros y no suelen actualizar su stack de un año para otro. Centrándome en las que conozco, diría que menos de un tercio lo están usando y creo que ese porcentaje puede ser incluso menor, rondando el 10%.

La otra tipología de empresa informática que nos queda por analizar, son las consultoras y todas aquellas empresas que realizan desarrollos para terceros. En este caso creo que el porcentaje de uso es muy bajo, porque usualmente sólo se hace lo que el cliente pide y se intentan seguir procesos los más estandarizados posibles para agilizar el trabajo.

Leer más

5 libros técnicos que deberías leer este verano

por:

5 libros técnicos que deberías leer este verano

Llega agosto, un mes que clásicamente se ha asociado a vacaciones (si nos lees desde España), por ello os propongo unas lecturas para este periodo donde tenemos más tiempo libre. En la piscina, en la playa, en casa a la hora de la siesta…, nunca es mal momento para saborear un buen libro. Aunque, como no podria ser de otra forma, tratándose de una página sobre informática, os vengo a recomendar algunos libros técnicos imprescindibles.

Pero, ¿me tengo que formar en mi tiempo libre?, ante esta pregunta que muchas veces me han planteado, te respondería que sí y no. En mi opinión, lo divido en 3 supuestos:

  1. Si la formación es necesaria para realizar tu trabajo, tendría que dartela tu empresa en tiempo de trabajo
  2. Si son conocimiento que te van a ayudar a mejorar cómo haces tu trabajo, debería dartelo tu empresa, aunque podría que parte fuera en tu tiempo libre
  3. Si las enseñanzas no están relacionadas con tu puesto, tu empresa debería apoyarte con algún medio (tiempo, materiales, cursos…) pero caería más en tu tiempo libre

 

Clean code

El primero de todos es quizás el libro más conocido de programación, Clean Code, en español, Código Limpio. Este libro, que actualmente estoy leyendo es una recopilación de consejos, buenas prácticas y técnicas para que tu código sea de mayor calidad. A mí me gusta mucho decir, que un código que funciona es como sacar un 5 en un examen, es lo mínimo para pasar la prueba. Sin embargo, entre ese 5 (que funcione) y el 10 (que sea de gran calidad), hay mucho espacio por recorrer. Este libro justamente trata de eso, cómo coger un código de 5 y llevarlo lo más cercano posible al 10. Para ello aborda cuestiones como:

  • El estilo del código (identación, nombres, formatos)
  • Gestión de errores
  • Testing
  • Diseño de objectos y clases
  • Concurrencia

Mi recomendación, es que no es un libro que sea lea bien como una novela (leyendo decenas de páginas de seguido), sino que es mejor leer un capítulo cada día o semana, e ir aplicando e interiorizando lo que propone.

Leer más