¿Se puede desarrollar sin conexión a Internet?

Parece una broma de mal gusto, pero conozco a más de un desarrollador que ejerce su labor en auténticos “zulos, opacos, soportando una conectividad pésima o demasiado restringida.

Sin duda esto es un hándicap, un dolor de cabeza y un incordio, del cual cada uno de ellos se queja amargamente.

Pero… ¿y si no tuviéramos ningún tipo de conexión a Internet, viéndonos abocados a descubrir en nuestras propias carnes lo dependiente que somos de la comunicación constante con el ciberespacio, y lo que significa un apagón completo que nos encierre en un sitio similar a como se trabajaba a principios de la novena década del siglo XX?

Empecemos por lo más básico

No es difícil poder acercarse a una gran superficie y adquirir una caja física con un Windows 10. Pones poco más de un centenar de euros encima del mostrador y te llevas el sistema operativo bajo del brazo.

En el caso de un Apple la cosa se complica ya que no hay tantos sitios donde poder hacerte con un Mac OSX.

En ambos casos, la forma más sencilla es pedirle a alguien con conexión que te haga un disco de arranque partiendo de una ISO que pueda descargar, y adquirir un serial que te permita hacerlo funcionar.

Y aún así continúan los problemas.

Windows requiere una activación del sistema operativo para evitar que te salgan mensajes de advertencia y te dejen de funcionar partes.

Para solventarlo puedes acceder a un engorroso y laborioso sistema vía teléfono, el cual te pone con una máquina, la cual te va indicando los diferentes pasos que necesitas completar hasta que -introduciendo el serial adquirido- te genera un código de activación que has de introducir de nuevo en el sistema para activar la copia de Windows.

Todos los componentes de software de los ordenadores actuales, requieren o exigen la conexión a internet

Apple,como tiene el control del hardware, está pensado para ser instalado desde una ISO, al igual que Linux. Son distribuciones optimizadas para ser descargadas sus imágenes, quemadas en un DVD o configuradas en un USB de arranque.

Sin embargo, todas tienen, al menos, cuatro serios inconvenientes si no estás conectado a Internet:

  • Muchas de las capacidades y software incluidos en el Sistema Operativo requieren de comunicación con los servidores del fabricante/distribuidor.
  • El ID de usuario, su identificación, ha ido ganando complejidad y criticidad con el tiempo, ya que arrastra consigo la configuración del usuario, las especificaciones del perfil o el acceso a múltiples servicios, entre otras funciones.
  • Las actualizaciones que todos tienen que aplicar a una instalación limpia son muy engorrosas de localizar para ser descargadas y poder ser instaladas offline. Y en algunos casos (como un Windows 8 pelado para actualizarlo hasta 8.1 completo) es prácticamente imposible.
  • Los frameworks (como .NET) mayoritariamente se obtienen por medio del acceso a un repositorio remoto situado en la Red.

Herramientas

Ciertamente el escenario que he descrito durante el capítulo anterior es cada vez más improbable. La mayoría de los equipos de desarrollo que se mueven a un cliente son portátiles preinstalados por los departamentos de IT que incluyen el sistema operativo actualizado y listo para hacer funcionar todas las herramientas necesarias.

Y aquí volvemos a encontrarnos con los inconvenientes de no estar conectado.

Pongamos que me quiero poner a trabajar en un proyecto web moderno – en mi ejemplo utilizo el “full stack” de Microsoft + tecnología JS relacionada + Cloud.

Pues al no tener acceso a internet tengo el problema de que ni tan siquiera puedo buscar las páginas de venta y descarga de la suite de Visual Studio 2015, que es mi piedra angular para programar.

Es más, tampoco podría hacerlo en el caso de que use un “full stack” de, por ejemplo, Angular 1.x + Node.js y toda la miríada de software añadido que se debe descargar, instalar y configurar para que todo funcione al igual que una orquesta bien afinada y compenetrada. La única opción sería, una vez más, bajármelo todo a una unidad USB (que cada vez será más grande) para poder instalarlo desde el dispositivo físico.

Pero no, tampoco. Aquí nos encontramos con que todas las herramientas de desarrollo están compuestas por una miríada de módulos, parches, actualizaciones y dependencias.

Un infierno en ciernes que obliga a saber exactamente qué versión de una librería funciona con otra y que ha llevado a desarrollar mecanismos de configuración que buscan en los repositorios adecuados, descargan e instalan las versiones adecuadas.

Y ni así.

Por ejemplo, Visual Studio tiene como requerimiento, al igual que tener memoria RAM suficiente o un mínimo de procesador, una conexión a Internet; y no deberíamos esperar que funcionen manejadores de paquetes como NPM, o Nuget sin tener acceso a la red.

También hay que sumar el incremento constante de la presencia de la Nube, como sucede si vamos a trabajar sobre aplicaciones Adobe del tipo Photoshop, ya que ahora necesitan conexión permanente tanto para su instalación como para su funcionamiento.

Y la tendencia actual es encontrar aplicaciones que viven y se utilizan solamente en Cloud, cada vez con más abundancia.

For the Internet only

La gran revolución en nuestra industria de esta última década, es la llegada masiva de las metodologías ágiles a los equipos de trabajo y empresas; y de las herramientas asociadas.

Los stack de Atlassian (Jira y sus cientos de módulos) o el de Visual Studio Team Services, son complejos conjuntos de aplicaciones que soportan todo el ciclo de vida de la construcción de aplicaciones informáticas y que, ahora, amplían su ámbito de actuación abrazando el lado de la infraestructura y la monitorización que definen a los sistemas DevOps.

Es como obligar a operar a un cirujano con manoplas y sin anestesista

Para un programador el repositorio de código es el Santo Grial que debe tener una disposición completa en cualquier momento y lugar. Por ello existen y tienen tanto éxito plataformas como GitHub, VSTS, CodeFlex o BitBucket.

Y bajando un peldaño, también son críticos los “simples” almacenes de información tales como OneDrive, ClouDrive, Drive+ o DropBox.

No solamente las compañías necesitan tener un sitio de colaboración para que los equipos puedan acceder al código o a la documentación de forma segura y deslocalizada, sino que -personalmente- tengo almacenado en mis repositorios privados gigas de libros, información y ejemplos que ganan en importancia cuanto más desesperado estoy con un problema.

Porque, para el ser humano medio, es imposible almacenar en la memoria toda la información que es necesaria y oportuna durante el desarrollo de una aplicación. Sitios como StackOverflow son, simplemente, imprescindibles, al igual que las búsquedas en Google y sus millones de resultados.

Y todo, todo ello se queda inaccesible si Internet está bloqueado o tu conexión es demasiada restringida.

Hablando, que es gerundio

La madurez de internet, el crecimiento del ancho de banda y la irrupción de la informática móvil (plenamente ubicua), ha cambiado la forma de entender las aplicaciones ofimáticas con la llegada de sistemas exclusivamente basados en Internet, como son Office 365 o Google Apps.

Hace unos pocos lustros, la comunicación se establecía principalmente por voz o por email. En la actualidad, poco descubro si digo que la mayoría utilizamos un navegador web para acceder a nuestras redes de comunicación, cada vez más complejas, más ricas y más apabullantes tanto en cantidad, calidad y amplitud.

Además de ser un consumidor, también quiero divulgar y compartir

Después de un Pomodoro, hay pocas distracciones tan útiles como echar un vistazo al Twitter, responder los emails que empiezan a correr prisa, o hablar con alguien por Skype.

Y no solamente por la necesidad como humano de relajar la concentración, cambiar de contexto y descansar del esfuerzo que constituye picar código, sino porque produce un aumento de mi productividad más que importante: necesario.

Cuando estoy en un proyecto de desarrollo, necesito poner por escrito los problemas que me voy encontrando, y cómo solucionarlos. Para compartirlo y que sirva de ayuda a otros compañeros que estén “googleando” en pos de una respuesta, pero también para recordármelo más adelante cuando me vuelva a suceder o aborde retos similares.

Conclusión

Se puede desarrollar aplicaciones informáticas sin conexión a Internet, pero es MUY incómodo y requiere una planificación previa exhaustiva. Es decir, a menos que haya de por medio un verdadero problema de seguridad, o de riesgos vitales, es muy negativo dejar a un equipo sin conectividad.

La programación es, como repito siempre, una actividad extremadamente compleja que obliga al trabajo en equipo y utiliza de forma constante la búsqueda y extracción de información desde Internet.

No tener acceso a ello es como poner a un cirujano a operar con un guante sin dedos (una manopla). Una medida de alto riesgo que no solo es inútil, si no equivocada.

Ver todos los comentarios en https://www.genbeta.com

VER 0 Comentario

Portada de Genbeta