Tabulaciones o espacios: la eterna batalla

6EFGK9V

En el nuevo capitulo de la serie Silicon Valley, sacan el tema de la diferencia entre usar tabulaciones o espacios, y es que este es un tema que se ha discutido siempre mucho entre desarrolladores. He sacado una captura de pantalla de sublime text 3 en el que podéis ver  mas claramente de que estoy hablando.

Captura

En el código podemos ver que mientras una tabulación ocupa un solo caracter, el equivalente en espacios utiliza cuatro en su lugar.

Por lo tanto si nos ponemos en plan técnico sabiendo que un caracter ocupa un Byte (8 Bits),  que es lo que ocuparía una tabulación, el tamaño en bits del mismo espaciado creado a base de espacios sería el resultado de multiplicarlo por 4, lo que serían 4 Bytes y por lo tanto 32 Bits, o lo que es lo mismo, que usando espacios ocuparía  3 veces mas.

Conclusión…

Tecnicismos a parte, ¿creéis que que a día de hoy esto importa? con procesadores multinucleo y un montón de ram, no se yo si a día de hoy este tema importa tanto como hace muchos años cuando la ram era tan escasa que habia que escatimar a más no poder.

Yo soy de los que utilizan tabulaciones, si te parece comenta que te parece esto a ti, que sabes sobre esto, ya que hay muchas opiniones y argumentos distintos sobre el tema (unos dicen que una vez pasado por el compilador ya no importa, otros que hay incompatibilidades a bajo nivel cuando se usan ambos, en fin..), y ya de paso nos cuentas de que lado estas tú.

 

 

Anuncios

La importancia de aprender

ale2.jpg

A causa de lo liado que estoy últimamente, con la escritura de un libro, desarrollando un juego para Android ,leyendo libros y haciendo cursos para adentrarme en nuevas tecnologías, el blog está teniendo menos entradas de lo normal, aún así en medio de todo esto me parece la ocasión ideal para hablar sobre este tema.

Por que los desarrolladores tenemos que estar en continuo “desarrollo”

Valga la redundancia, pero es que es completamente así, como si de un buen framework de código abierto y en continuo desarrollo se tratara, así tenemos que estar nosotros, continuamente renovándonos, y desarrollándonos como profesionales pero sobre todo sin ningún miedo a nuevas tecnologías.

Como esta la cosa…

Últimamente hay un gran “revuelo” de cambios en las tecnologías que solemos utilizar, el desarrollo en Android avanza sin cesar, el magnifico Firebase intentando hacer de backend definitivo para muchos desarrolladores (sobre todo móviles), los frameworks de Javascript cambiando continuamente, lo que funcionaba hace algunos meses posiblemente ya no y hay que actualizarlo a los nuevos métodos.

Con todo esto veo también que en el desarrollo parece que vamos cada día mas hacia la pereza y la comodidad, por ejemplo con Angular, que ya nos regala incluso AJAX, por mencionar algo, o como dije antes con Firebase que es que ya te provee hasta de un completo backend para tu aplicación (antes estuvo Parse, pero vamos a lo que vamos).

Y es que con toda esta “marea” lo mas fácil que puede pasarnos es caer en la desactualización, para mí, uno de los peores enemigos del desarrollador, yo creo que es el mejor momento para esforzarse y comenzar a devorar libros, cursos, tutoriales, y probar nuevas tecnologías, ya que de este modo lo que haremos será aprovechar todas estas comodidades que se nos están ofreciendo.

Como creo que no hay que reaccionar

Últimamente hablando con algún desarrollador sobre todo esto he llegado a ver que mucha gente tiene miedo de ponerse a estudiar e invertir tiempo en nuevos frameworks o lenguajes por el tema de que solo sean una moda pasajera, y nada mas lejos de la realidad, pero como muchos ya sabemos en esto el que llega primero gana, y lo que tenemos que hacer muchas veces pues es justamente eso, estar a la moda, y desgraciadamente eso requiere el continuo esfuerzo del estudio.

Hasta tal punto es esto que he llegado a oír algo como “no voy a salirme de java ya que eso siempre va a estar ahí, y lo otro simplemente son modas que pasan“, y que seguridad que aporta esto, pero desgraciadamente hoy la cosa no funciona así, durante años ha habido el típico perfil del tío que programa en Css, Html, algo de Javascript, y Php para el lado del servidor, y desde luego Sql para la base de datos, y desde luego no voy a ser yo quien diga que esto no es efectivo, ya que desde luego lo es, (obviamente ya estaríamos hablando de Html5 y Css3), pero a día de hoy tenemos muchas mas opciones hablando de desarrollo web por ejemplo, tenemos el stack MEAN (MongoDB-Express-Angular-NodeJS), o incluso variantes mas completas que he visto por ahí que la verdad hacen maravillas con ellas.

Aclarando la cosa un poco

NO quiero decir en ningún momento que tal o cual tecnología sea mejor que otra, de ninguna manera, simplemente doy mi punto de vista sobre el tema, el panorama actual y el por que yo creo que ahora menos que nunca debemos dejar de estudiar nuevas cosas y mantenernos en la zona de confort con lo que ya sabemos y dominamos, tampoco me meto en ningún momento con la especialización, y aunque es bueno saber también un poco de aquí y de allí, si que a día de hoy es necesario especializarse, pero si nos damos cuenta aunque nos especialicemos por ejemplo en Android, vamos a tener que acabar en algun momento desarrollando un Api Rest para consumirlo desde alguna app, un backend por ejemplo, pues ya estaríamos necesitando utilizar unas cuantas tecnologías para ello, y ya que lo hacemos, por que no hacerlo estando a la última.

Como formarnos

Pues bien, aunque últimamente esta muy de moda y yo diría ya que se ha”impuesto”, el tema de la educación online, con plataformas que todos conocemos, yo siempre recomendaré que se lean libros, ¿por que? pues por que en este tipo de cursos digamos que se enseña lo esencial, muchas cosas, pero no se llega a profundizar como lo harás con un buen libro, y buscar un buen libro de una nueva tecnología es sinónimo de libro en ingles,  yo tengo la suerte que no me molesta leer un libro en ingles la verdad, pero se que si hay gente a la que le cuesta, pero la cosa es así, por que si esperamos a que alguien de habla hispana, lea esos libros, los entienda y digiera, y al final acabe por decidirse a escribir un libro, posiblemente llegues tarde, así que a darle bien fuerte al ingles.

Servidor web hecho con NodeJS

nodejs_logo.jpg

Hoy os quiero compartir un servidor web que acabo de subir a mi cuenta de GitHub,  se trata de un Servidor web asíncrono, hecho con NodeJS y Javascript, con sistema de registro de log en un archivo de texto y configurado para servir paginas en formato HTML5.

El proyecto es fruto de un curso que he estado haciendo recientemente para acercarme un poco a lo de programar con Javascript del lado del servidor, solo tendríais que modificar los archivos html y/o añadir lo que queráis, esto ya a gusto del consumidor, ya que es una configuración fácilmente escalable, y con solo modificar algunas lineas de código haréis con esto lo que queráis.

Lo que puedo sacar de esto es que no puedo decir otra cosa de NodeJS más que…  “¡es una maravilla!”, además con la comodidad de estar programando en Javascript (aunque no soy un gran fanático del mismo, todo hay que decirlo, mas que nada por que es tan literalmente “liberal”,  que si te despistas un poco, el código y su organización, pueden acabar pareciéndose a una juerga universitaria o una comuna hippie).

A todas las ventajas mencionadas anteriormente, sumarle que por ejemplo para crear el backend de una app móvil (obviando el tema de Firebase o el antiguo Parse, que por cierto dejó de funcionar), es una maravilla no tener que estar aprendiendo Python o Ruby y su framework Ruby on rails por ejemplo, simplemente para hacer eso.

Tenéis el proyecto preparado en mi cuenta de GitHub aquí:

https://github.com/czazuaga/Servidor_Web_NodeJS

Arquitectura del Software: patrones de diseño

patrones.png

Patrones de diseño: que son y para que sirven

¿Que son?

según la wikipedia:

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Bien, dicho esto, podemos deducir que un patrón de diseño sera un cierto tipo de patron a seguir el cual nos servirá como la base a la solución de un problema, y que bien nos vendrá, pues ciertamente es a lo que nos dedicamos en el día a día, a resolver problemas.

En muchas ocasiones habrás oído la expresión “reinventar la rueda”, pues bien en este caso, no puede venir mas a cuenta, y es que cuando planteamos el diseño de la arquitectura de un software, a veces encontramos problemas de estructuración muy comunes, y si alguien ya encontró la solución, y ademas esta probadisimo que funcionó a lo largo del tiempo y vida del software y para colmo podemos acceder a la información de como implementarla en nuestro caso, pues seria contraproducente no aprovecharla. Ademas de esto nos servirá para “entendernos” con otros programadores al poder usar un lenguaje común a referirnos a ciertas estructuras entre clases.

Mas ventajas…

Además, seguir estos patrones al estructurar un software, nos va a garantizar, la estabilidad del software a nivel de estructuración, escabilidad y sobre todo mantenibilidad a lo largo de la vida del mismo. Lo que por ejemplo en el caso de una empresa ahorrará a la larga grandes cantidades de dinero y tiempo.

¡¡Mas detalles por favor!!

Principalmente los patrones de diseño se dividen en tres categorías y nos ayudaremos de ellas a la hora de seleccionar el que mas nos convenga en nuestro caso partiendo de saber que es lo que queremos hacer:

  • Patrones creacionales (diseñados para facilitar la creación de objetos):
  • Patrones de estructuración (nos facilitaran la estructuración entre clases)
  • Patrones de comportamiento (para estructuración de datos y los objetos, y distribuir el procesamiento y los algoritmos entre sí )

¿Y como seleccionamos e implementamos uno de ellos?

Pues bien llegado el caso, lo primero que deberíamos hacer seria, intentar investigarlos un poco e intentar comprender como funcionan, hay muchos libros e información sobre el tema, que ya os recomendare algun libro que yo tengo en otra sección.

  • Paso 1: primero decidir si realmente nuestro software necesitaría seguir un patrón o no, y es que si va a ser algo muy sencillo, pues tampoco es muy necesario.
  • Paso 2: seleccionar cual de las tres categorías podría estar mas acorde con la solución a nuestro problema.
  • Paso 3: leer la descripción de cada patrón de la categoría.
  • Paso 4: una vez tengamos es mas “cualificado para la tarea” lo estudiaremos y analizaremos bien, a nivel de diagramas Uml y de ejemplos de diferentes implementaciones.
  •  Paso 5: y aquí viene el reto, lograr adaptar la implementación del patrón a nuestro propio caso y necesidad.

 

¿Conoces Stackoverflow?

oURrw

Stackoverflow, el salvavidas de los desarrolladores

No se el tiempo que llevaras en este maravilloso mundo de la programación y el desarrollo de software, a veces tedioso, a veces horriblemente frustrante, pero a la larga, gratificante. Todo el que ha pasado del hola mundo sabrá que a veces podemos encontrarnos con alguna cosa que queremos hacer y al no saber o no no encontrar la manera, nos podemos pegar dándole vueltas a la solución de nuestro problema horas, días, o incluso semanas.

No me estoy refiriendo a errores en el código, ya que eso solo nos los podrá solucionar la experiencia, y cada vez tardaremos menos en encontrarlos, si no que me refiero a que a veces intentamos reinventar la rueda cuando otro ya la invento hace tiempo, y posiblemente ya dedico bastante tiempo a encontrar una solución al mismo problema que ahora tengas tu.

Bien, dicho esto os quiero compartir hoy sobre el sitio del que todo el mundo habla, el gran arma de los desarrolladores, y no es otro que Stackoverflow. En el que a dia de hoy hay mas de 4.7 millones de programadores creando una lluvia constante e incesante de preguntas y respuestas sobre multitud de lenguajes de programación, frameworks y tecnologías. Ademas cuenta con un sistema de puntuación basado en las mejores respuestas y la participación de los usuarios.

Y aquí el tip:

La próxima vez que te atasques con algo y parezca que no encuentras la solución por ti mismo, prueba a poner en el buscador de Google, el error que tengas al intentarlo o lo que intentas hacer (obviamente en ingles, como todo en esto), y seguidamente la palabra Stackoverflow.  Hecho esto te garantizo un 99% de posibilidades de que encuentres, o bien la solución o bien la base de la que partir hasta ella.

podéis encontrar el website aquí.

Visitar Stackoverflow

 

 

Como aprender a programar

 

aprender

Como aprender a programar

Tal vez estés comenzando en esto de la programación, o incluso lleves varios meses o hasta años haciendo cursos y viendo tutoriales por internet y sientas que no le acabas de coger el tranquillo a esto.

Y bueno ahí va el tip que me gustaría compartir hoy, normalmente cuando se empieza con esto, lo primero que se hace es comenzar por ver tutoriales de algo que nos guste para intentar aprender a hacer cosas, tal vez comprar algún libro sobre algún lenguaje de programación o simplemente empezar a hacer algún curso. Todo lo de antes es necesario y esta bien, pero todo eso te va a servir como caja de de herramientas para programar de verdad.

Mi recomendación

Si quieres aprender a programar de verdad, el método infalible es que empieces a hacer tus propios proyectos, desde cero, así y solo así (semi parafraseando al señor Steve Jobs), aprenderás a aprender.

Algunos tips:

  • Piensa un proyecto que te interesaría desarrollar (juegos, apps, web etc..).
  • Escoge siempre uno muy pequeño, de lo contrario probablemente lo abandones.
  • Piensa en la idea inicial de tu proyecto e intenta llevarla a cabo lo mas fiel posible a la idea inicial.
  • Cuando te atranques con algo o no sepas como hacer tal cosa, sírvete del amigo google o sitios como el magnifico StackOverflow para salir del bache.
  • No copies y pegues código por que sí, esfuérzate por entenderlo todo bien antes de seguir, de lo contrario no aprenderás mucho.
  • Cuando acabes el proyecto o simplemente te acerques al final que esperabas, te darás cuenta de que tienes muchísimo mas dominio del lenguaje, tecnología, api o librerías usados por el camino.  

Bien amigos, ese era el tip que os quería compartir hoy, seguramente a algunos les sirva de mucho y a otros que posiblemente ya conozcan esto (por experiencia propia que es como se aprende jeje), pues nunca esta de más leer una segunda opinión.

Saludos amigos.