programación

  • La tecnología avanza a pasos agigantados y, de repente, lo que era lo más común deja de serlo. Te quedas fuera, desfasado. Por ello es importante estar atento a la hora de detectar las tendencias que nos llevarán al futuro del desarrollo software. No hablamos de modas o de los lenguajes que más marketing hacen. Hablamos de lo que realmente están haciendo y aprendiendo los programadores, así como las tecnologías que, aunque minoritarias a día de hoy, serán los estándares de facto del futuro.

    Basándonos en el estudio realizado por la plataforma educativa de O’Reilly, hemos analizado los resultados y conclusiones del informe. Una combinación de términos de búsquedas y temas que los desarrolladores están explorando y demandando activamente, lo que da un consistente indicador de los temas cuya tendencia ascendente en popularidad merece echar un vistazo.

    En el radar de O’Reilly se encuentran 3 tendencias claves, que más adelante analizaremos:

    • El fuerte crecimiento de temas relacionados con el cloud. Ya no se trata solamente de llevar una aplicación a la nube sino de su arquitectura y como sistemas cada vez más complejos y enormes han empujado a los microservicios, apoyándose, en la orquestación de servicios mediante Kubernetes.

    • El Blockchain que para algunos sigue sonando al hype de las criptomonedas, tiene una gran cantidad de usos donde desarrollar aplicaciones distribuidas sin depender de una autoridad central. No solo transacciones monetarias, sino contratos inteligente o verificaciones de autoridad.

    • Python, Java y JavaScript siguen dominando y parece que cada año revalidan su relevancia gracias a su ecosistema en constante evolución. También empiezan a sonar fuerte: Rust o Go como lenguajes modernos que ayuden a ser más productivos a los desarrolladores a la vez que permiten un alto rendimiento y escalabilidad.

     
     
    1366 2000
     Top de términos en la plataforma educativa de O'Reilly

     

    La siguiente arquitectura ya está aquí: Docker + Kubernetes

    No se trata solo de llevar a la nube las aplicaciones sino aislar cada aplicación en microservicios

    Pocas startups no están construidas a día de hoy basándose en microservicios, usando contenedores Docker para desplegar y escalar servicios orquestando esta arquitectura cada vez más grande usando Kubernetes. El foco queda claro que está en la escalabilidad y la descomposición de cada problema particular en un servicio especializado.

    1366 2000
     
     
     

    Debido a la flexibilidad que necesita una organización, llevamos años viendo com Amazon Web Services, Google Cloud o Microsoft Azure no paran de crecer. Los tres grandes actores del mercado se llevan gran parte de la tarta del cloud empresarial. El primero de todo, AWS sigue siendo el rey con cada vez más servicios concretos a un problema especifico, pero la migración de grandes compañías hacia la nube de Google Cloud abre camino a otro competidor importante.

    Docker no es ningún recién llegado. Forma parte fundamental de esta arquitectura que permite descomponer y modular cada servicio en la nube. Y por otro lado, se busca ayudar a la productividad del desarrollador aislando al máximo esos microservicios en su propio entorno, con solo sus propias dependencias y configuraciones que no entren en conflicto con el resto de servicios. Además que, un factor fundamental en esta arquitectura es la integración continua y el desarrollo continuo: lo que significa que nosotros podemos desarrollar nuevo código, crear una nueva build, empaquetarla y crear una imagen de Docker para ser desplegada a produción con la mínima fricción.

    Todo este gran número de microservicios, ejecutándose en algunos casos en centenares o miles de contenedores justifican un claro enfoque en herramientas que sean capaces de orquestar toda esa nube de recursos como Kubernetes. Desde que fuera liberado como proyecto open-source por Google, Kubernetes representa el ingrediente esencial para escalar productos a nivel global con total confianza y estabilidad. El estándar de factor queda claramente representado en Docker + Kubernetes.

     

    Blockchain madurando poco a poco para ser la base que revolucionará internet

    Probablemente la confusión entre Blockchain y criptomonedas sigue estando presente. Pero cabe recordar el origen del blockchain, un sistema distribuido, donde no necesitemos una entidad centralizada para realizar operaciones. La posibilidad de crear contratos inteligentes muestra el potencial tremendo de estas plataformas que no sólo revolucionará las finanzas sino también internet.

    Teniendo una gran base de datos distribuida donde toda la información está almacenada en bloques, los cuales son inmutables, es decir, nadie puede modificarla, abre un amplio abanico de posibilidades de desarrollo poco exploradas a día de hoy.

    smartcontract
    Smartcontracts usando Blockchain

     

    Entre las tecnologías relacionadas nos encontramos con Ethereum, no confundir con la criptomoneda Ether. Con ello podemos crear esos smart contract como piezas de código autocontenidas que definan acuerdos entre múltiples partes dentro del blockchain. Más concretamente, uno de los lenguajes a tener en cuenta es Solidity con un sintaxis similar a JavaScript y C con lo que podemos desplegar esas pequeñas entidades de código EVM (Ethereum Virtual Machine). Y tampoco podemos olvidarnos de Bitcoin o la influencia de blockchain como elemento de seguridad y sincronización en IoT.

    El principal foco es construir APIs que accedan al blockchain, crear algoritmos de consenso para verificar la información y mantener la red de blockchain sincronizadas. Un incipiente ecosistema por construir con algunas herramientas ya presentes que no hay que dejar escapar.

    Python, Java y JavaScript continúan su dominio apoyados en el Machine Learning

    Año tras año vemos a estos tres lenguajes en el top de cada ranking que se crea sobre tendencias y usos. Vamos a analizar la explicación no sólo viven de que históricamente tienen un amplio ecosistema y cuota de mercado ganada sino como las nueva tendencias se apoyan en estos tres lenguajes.

    Machine Learning es una de las tecnologías que más apoyo recibe de la comunidad de Python. Muchas de las librerías que se utilizan en Data Science tienen su base en Python. También la apuesta de Google por TensorFlow cuya API está basada en interfaces Python ha ayudado al interés por este lenguaje con bastante veteranía y solidez demostrada a la hora de analizar y extraer datos de grandes cantidades de información.

    tensorflow
     
    El stack técnico de Tensor Flow

     

    Tenemos también algunos ejemplos como PyTorch, una librería para computer vision y procesamiento de lenguaje natural que ha escalado relevancia junto con otra librería como scikit-learn.

    Java sigue siendo uno de los lenguajes claves en el de desarrollo de aplicaciones a gran escala, escoltado por Scala y Kotlin aprovechándose de la JVM. Así todos los avances de en soluciones Big Data siguen confiando en Java. Nos encontramos con tecnologías ampliamente utilizadas como Spark o Kafka.

    Y, por último, JavaScript sigue siendo el rey dentro del ecosistema web. Con un crecimiento menor que el resto pero que tiene en framework como Angular, React o Vue, a este último le dedicamos un post especial hablando de las principales razones para usarlo.

    Entre los otros lenguajes que se han colado en el ranking de O’Reilly están Go debido a su combinación de sintaxis fácil, gran soporte de concurrencia y una activa comunidad de desarrolladores, apoyada por Google. Aunque tampoco podemos olvidar de Rust, un lenguaje de sistemas muy cercano al rendimiento que provee C, seguro, con un eficiente uso de memoria, soporte de concurrencia nativa y una sintaxis moderna.

     

    Fuente: https://www.genbeta.com/desarrollo/3-tendencias-emergentes-que-marcaran-futuro-programacion

  • El diseño web está cargado de preguntas existenciales. Uno de los mayores ser: ¿Puedo construir un sitio web hoy que seguirá siendo relevante (tanto en estilo como en función) mañana?

    La respuesta probablemente depende de cuántos mañanas en el futuro te refieres. Pero una buena regla general es que, cuanto más tiempo pasa, menos relevante se vuelve el diseño y la funcionalidad de un sitio web. El futuro siempre trae cambios, a menudo en formas que no anticipamos.

    Probablemente sea algo bueno, ya que nos mantiene ocupados con el trabajo de rediseño . Pero si estamos refactorizando un sitio existente, eso puede ser un verdadero desafío.

    La clave para asumir ese desafío es diseñar y crear sitios web que estén atentos al futuro. A continuación hay algunos consejos para hacerlo.

    Utilice sistemas establecidos

    Los sistemas de gestión de contenido (CMS) han llegado a dominar el paisaje. Y si bien todos conocemos a los grandes jugadores como WordPress y Drupal, hay innumerables cantidades de competidores. Eso ni siquiera tiene en cuenta la gran cantidad de servicios de creación de sitios de bricolaje que existen.

    Si bien muchos de los sistemas emergentes suenan convincentes, existe una seria pregunta sobre su potencial de longevidad. En pocas palabras: pueden existir o no en unos pocos años. Esto ni siquiera es una cuestión de calidad. La realidad es que es una batalla cuesta arriba y seguramente habrá algunas bajas en el camino.

    Para sus proyectos más pequeños, esto puede no ser un factor decisivo. Pero para sitios web más grandes , la estabilidad es clave. Tener que pasar a un nuevo CMS porque su plataforma actual está languideciendo (o peor) es una tarea importante.

    Es por eso que, antes de diseñar un diseño o escribir una sola línea de código, elegir un CMS es la decisión más importante que tomará. Elegir sabiamente.

    Y, una vez que haya elegido el CMS perfecto, querrá pensar detenidamente sobre cualquier complemento que desee utilizar. Esto es especialmente importante cuando esos complementos impulsarán la funcionalidad principal, como el comercio electrónico, la administración de miembros, etc. Una vez más, el objetivo es evitar la interrupción importante de tener que cambiar más adelante.

     

    web cms

     

    Diseño y Código de Flexibilidad

    Una forma de garantizar una molestia futura es encajonarte con características inflexibles. Esto incluye tanto elementos de diseño que se crean para cualquier pieza de contenido de muestra que proporcionó un cliente como un código personalizado que no es fácilmente extensible en el futuro.

    Diseño

    Los sitios web evolucionan con el tiempo. Se agrega nuevo contenido y su formato siempre está sujeto a cambios. Sin embargo, esto puede ser muy difícil de prever. Y así, tendemos a diseñar para el aquí y el ahora.

    Aún así, esto no significa que no podamos prepararnos para esta inevitabilidad. Una manera simple de hacer esto es mediante la utilización de algunas de las nuevas y sorprendentes características de diseño en CSS. Flexbox , por ejemplo, ofrece diseños de varias columnas que pueden estirarse para coincidir con la columna más alta del grupo. Y CSS Grid se puede ajustar en diseños complejos casi infinitos con solo un poco de código.

    La navegación es otra área que parece invadir siempre su intención inicial. Podemos prepararnos para esto siguiendo las tendencias, como colocar al menos algunos artículos detrás del menú de hamburguesas. Esto permite el crecimiento y no necesariamente requiere cambios radicales en el diseño.

    Sobre todo, busque soluciones que sean creativas y prácticas. Esto lo ayudará a evitar toparse con un muro de diseño hecho a sí mismo.

    Código

    Así como el contenido necesita cambios, también lo hacen los requisitos de funcionalidad. Por lo tanto, probablemente valga la pena anticipar y aceptar que el código que escribimos hoy va a cambiar en algún momento.

    Dependiendo del idioma que esté utilizando y su nivel de experiencia, escribir código que permita futuros ajustes puede ser un verdadero desafío. A veces, solo hacer que funcione para la necesidad más inmediata requiere toda nuestra capacidad intelectual.

    Además, hay varias formas de lograr el mismo resultado. Esto, sin embargo, es algo bueno. Una vez que haya alcanzado su objetivo de funcionalidad inicial, tiene la oportunidad de echar un segundo vistazo.

    A partir de ahí, piense en formas de racionalizar lo que ha hecho y vea cuán fácil será ampliarlo más adelante. Pregúntese cómo puede hacer que su código sea lo más eficiente posible. Tomar esos pasos ahora podría evitar un desastre futuro.

    webfuturo2

     

    Busque áreas de crecimiento potencial

     

    A veces, crear sitios web para clientes es un juego de adivinanzas. A menudo, implica tratar de resolver solicitudes vagas y anticipar cómo reaccionarán ante sus ideas. Puede ser difícil llegar a la misma longitud de onda.

    Por eso es importante hacer las preguntas correctas . Esto puede ser muy útil cuando se trata de detectar áreas de un proyecto que podrían expandirse con el tiempo.

    Por ejemplo, supongamos que un cliente le dice que está buscando un sitio de comercio electrónico simple (que por cierto no existe ). Esta es un área preparada para el crecimiento.

    Los nuevos productos y características probablemente se agregarán en algún momento. Entendiendo esto, puede diseñar y construir anticipando la posibilidad. Un ejemplo podría ser implementar un carrito de compras que se pueda extender fácilmente para hacer una multitud de cosas, en lugar de uno con un enfoque limitado.

     

    webfuturo3

     

    No puedes detener el futuro, pero puedes intentar construir para él

    Si bien predecir el futuro del diseño web y las necesidades de nuestros clientes no es una ciencia exacta, sigue siendo un esfuerzo digno. Ciertamente, habrá momentos en que adivinemos mal. Pero la implementación de prácticas innovadoras en nuestro flujo de trabajo nos ayudará a acomodar la mayoría de los cambios.

    Sobre todo, se trata de tomar decisiones inteligentes en cada paso del camino. Ya sea para elegir un CMS o escribir un CSS, es importante pensar en cómo afecta la capacidad de un sitio web para adaptarse al futuro.

    Nada de lo que creamos durará para siempre en su forma actual. Pero con la preparación, podemos ayudar a garantizar que su evolución sea lo más fluida posible.

     

    Fuente: https://speckyboy.com/building-websites-future-in-mind/

  • Como la mayoría de las industrias, el diseño web ha cambiado bastante con el tiempo. En sus primeros días , la gente creaba sitios web mediante un proceso de 'hágalo usted mismo'. El código a menudo se escribía a mano en un editor de texto simple.

    Pero a medida que la industria evolucionó, también lo hizo la forma en que construimos sitios. Muchas de las partes más manuales del proceso han sido reemplazadas por herramientas que brindan mayor comodidad y funcionalidad.

    Por ejemplo, muchos diseñadores prefieren usar un framework CSS como Bootstrap , en lugar de reinventar una nueva interfaz de usuario para cada proyecto. Del mismo modo, es una práctica común instalar una copia de WooCommerce en lugar de construir un carrito de compras desde cero. Al igual que la línea de ensamblaje cambió para siempre la industria automotriz, esta gran variedad de herramientas y activos disponibles han cambiado el diseño web.

    Este poder y conveniencia vienen con muchos beneficios. Sin embargo, también nos puede poner en situaciones muy difíciles. Con eso en mente, exploremos el efecto que esto ha tenido en el diseño web moderno.


    Desarrollo rápido y características potentes

    La antigua forma de crear sitios web era, incluso en el mejor de los casos, ineficiente. Construir todo desde cero (o incluso su propia biblioteca personal de código) tomó tiempo y recursos preciosos. Los proyectos tardaron más en completarse. Además, la funcionalidad compleja estaba más allá del alcance del diseñador promedio.

    El hecho de que ahora tengamos a nuestra disposición decenas de miles de piezas de software gratuitas y de bajo costo ha nivelado el campo de juego. Significa que un profesional independiente en solitario puede competir por trabajos más grandes o que un desarrollador de poca monta puede construir algo que potencialmente podría ser utilizado por millones.

    Pero no solo los profesionales se están beneficiando. En estos días, incluso los novatos pueden superar estos obstáculos antes formidables. Para algunos, podría ser tan simple como instalar un tema atractivo de WordPress y una selección de complementos relevantes. En unas pocas horas, pueden vender sus productos y servicios en línea.

    Una gran parte del proceso de diseño y desarrollo ahora es elegir y elegir qué piezas queremos utilizar. Todo, desde simples componentes de IU hasta funcionalidades de alta gama, está al alcance de todos.

     

    Lo que renunciamos

    Ya sea una nueva biblioteca de JavaScript o un CMS de código abierto, estas herramientas aumentan la eficiencia y reducen los costos. Esto es excelente para democratizar la web, pero también nos ha llevado a un nuevo conjunto de riesgos y desafíos potenciales, que incluyen:

    Menos control

    Las herramientas que utilizamos para crear sitios web hacen que el proceso sea más fácil que nunca. Pero el costo a menudo está cediendo una medida de control.

    Esto es especialmente cierto cuando se utilizan servicios de construcción de sitios cerrados y propietarios. ¿Infeliz con el servicio? Ciertamente puedes irte, pero buena suerte llevando tu sitio web contigo. Si desea mover ese mismo aspecto y funcionalidad a otra parte, puede significar comenzar desde cero.

    Confianza en otros

    Un sitio web que depende en gran medida de herramientas y servicios de terceros (que parece ser la mayoría en estos días) está, en parte, a merced de otros. Eso significa que, por ejemplo, su plugin WordPress imprescindible tiene un problema , no hay mucho que un diseñador pueda hacer aparte de esperar una solución (y aplacar a un cliente impaciente).

    En el peor de los casos, tal vez esa corrección de errores nunca llegue. En ese punto, estás atascado con algo que no funciona y forzado a encontrar una alternativa. Si bien es posible que encuentre un reemplazo adecuado, sigue siendo una experiencia frustrante.

    Riesgos de seguridad y privacidad

    Esto también abre la puerta a posibles problemas de privacidad y seguridad, también. Ya hemos visto software previamente seguro caer en manos equivocadas y utilizado con fines no tan agradables. Y la posibilidad de más abusos siempre está ahí.

    Y aunque la gran mayoría de las personas detrás de estos productos están tratando de hacer lo correcto, el miedo a un solo mal actor está bien fundado. El problema para cualquiera que construya un sitio web es que es imposible saber en quién confiar. Incluso si cree que ha tomado las decisiones correctas, la situación es fluida y puede cambiar sin previo aviso.

     

    Bueno o malo, el juego ha cambiado

    De alguna manera, se siente como una paradoja. Lo que facilita nuestro trabajo también puede agregar múltiples capas de complejidad. Pero esa es la nueva normalidad del desarrollo web moderno.

    Muy pocos de nosotros tenemos el tiempo o las habilidades necesarias para construir todo nosotros mismos. E incluso aquellos que lo hacen podrían pensar dos veces antes de intentarlo. No solo existe el factor de reinventar la rueda, sino que los clientes tampoco pueden estar locos con la idea de una solución totalmente personalizada.

    Eso nos lleva a recolectar varias piezas de varios lugares en un esfuerzo por hacer que todas trabajen juntas. Es difícil, pero parece que las técnicas para lograr una cierta armonía están mejorando constantemente.

    Es una buena noticia, porque no parece que este enfoque fragmentario desaparezca pronto.

     

     

    Fuente:https://speckyboy.com/pros-cons-building-websites-third-party-products/