Esta es una pregunta que yo mismo me estuve haciendo hace un tiempo, y de cuando en cuando venía a mi mente. Al salir de la universidad por aquel 2012 la respuesta a esta pregunta era más que obvia: lo es todo! y es que yo pensaba que este tipo de aplicaciones acaparaba casi todo el mundo de la programación, inocente yo 😅 pero conforme fue pasando el tiempo uno va viendo que el desarrollo de software es mucho más que eso, hablar ahora de los tipos y clases de programación que existen no viene al caso, pero será motivo de otra entrada en el blog.
Aunque esta introducción te haga pensar que pienso que el desarrollo de software de escritorio está desfasado, no es así, sólo que debes tener en cuenta lo siguiente: Como desarrollador de software hay dos verdades fundamentales: todo arreglo comienza con índice cero y la segunda es que siempre necesitarás estar aprendiendo cosas nuevas, investigando y mantenerte al día, no te digo que aprendas todos los días algo nuevo, pero si hacer una revisión en introspectiva sobre las tecnologías que posees al menos cada 3 meses, y no es un número al azar que se me ocurrió, sino que viene derivado del hecho que es una buena práctica ponerse objetivos trimestrales (Objective Key Results u OKR).
La imagen de este post es la de un servidor empresarial, y no es casualidad, las aplicaciones de escritorio te abrirán las puertas a un mundo grande sobretodo en el sector corporativo, donde la demanda de aplicaciones de escritorio aún es muy grande, o el mantenimiento de sistemas legacy.
Sin embargo, aunque la programación de escritorio está muy vigente, debes tener en cuenta estos aspectos, sino pronto entrarás en una peligrosa burbuja, una zona de confort de la cual te resultará difícil salir, créeme, me ha pasado, así que aquí voy.
Define tus tecnologías y stacks inteligentemente
Si te quieres dedicar a esta especialización del desarrollo de software no te puedes andar perdiendo el tiempo en tecnologías antiguas o de un nicho muy marcado y reducido, o peor aún yendo de lenguaje en lenguaje, por ejemplo no sería muy sensato elegir programar en Power Builder, y no tengo nada personal con ese lenguaje 😁, sólo que el mercado es muy reducido y pronto estarás más pendiente de parches y actualizaciones esperando que los nuevos sistemas operativos sean compatibles con tu compilación, además no tendrías una comunidad tan grande donde obtener información, lo mismo se podría aplicar a lenguajes como Fortran, Cobol o Pascal. Unas buenas opciones de lenguajes que podrías utilizar son C# o Java ya que al aprenderlos podrías pasarte con un poco de esfuerzo al mundo backend.
Hablando de Cobol, hay un escenario en donde sí te convendría aprender dicho lenguaje, y es si te quieres dedicar a dar mantenimiento al software legacy de la banca que en gran medida aún utiliza el sistema AS/400 de IBM y cobol nada como pez en el agua allí. En este entorno sí que ganarás mucho dinero, prácticamente tu pondrías tu tarifa y te la pagarán en la medida que seas bueno, pero es como una jugada arriesgada que podrías hacer si piensas que es lo tuyo y no te importa trabajar con una tecnología antigua y no precisamente emocionante, pero sí muy rentable, si logras obtener un cupo en una empresa muy grande.
Sé pragmático y proactivo, no sólo reactivo
Ya que haz decidido apostar por el desarrollo de software de escritorio o desktop como también se le conoce, entonces porqué no aprovechar las tecnologías que te permitirán un rápido viraje hacia otras tecnologías más demandantes por el mercado en el caso que a futuro quieras hacerlo.
Por ejemplo, si vas a hacer aplicaciones de escritorio con C#, yo de cajón te recomendaría utilizar .Net Core ya que es multiplataforma, y además los controles son casi en su totalidad semejantes a los de .Net de toda la vida, con eso tendrías un sistema de escritorio que puede correr en cualquier sistema operativo y te olvidas de estar amarrado toda la vida a Microsoft. Nunca pero nunca te cases sólo con una tecnología, por más buena que esta sea (en este caso sería nunca te cases sólo con un sistema operativo).
Otra recomendación muy buena es que utilices la plataforma de desarrollo como Electron.js para desarrollar aplicaciones de escritorio usando tecnologías web como HTML, CSS y Javascript, lo cual te permitiría un rapidísimo viraje hacia web o móvil si así lo deseas, y créeme, lo vas a desear 😄.
Y la última recomendación en este aspecto, es el desarrollo de las Desktop Progressive Web Apps (PWA) que son aplicaciones web que pueden ser instaladas en un móvil y pasar a ser apps, o instaladas en un sistema operativo y llegar a ser aplicaciones de escritorio, puedes ver más información aquí.
Cuestión de arquitecturas
Finalmente además de los consejos aquí vertidos estimado lector, es muy importante que tomes la decisión que tomes respecto de la tecnología o stack a utilizar, debes seleccionar una arquitectura escalable, esto quiere decir que pueda crecer o transformase según la necesidad y te permita a futuro poder convertir tu aplicación de escritorio a web o móvil o inclusive para smart TV's, cómo se hace ésto tu dirás? Pues haciendo tu software con arquitecturas como Service-Oriented Architecture (SOA) o Multi-tier (multi capas), de esta forma lograrás desacoplar la fuente de datos (mediante un API), de la lógica de negocios y de la vista al usuario que hoy es desktop pero mañana móvil.
Sin duda hay mucho mercado para el desarrollo de escritorio 🤠 y es uno de mis favoritos después del mundo web así que dale con confianza, que no te asuste la infinidad de anuncios donde se requiere sólo desarrollo web, pero eso sí, deberías pensar en aprender web. Ten presente que toda empresa requiere de nuevos sistemas de escritorio o de dar mantenimiento a los existentes, y eso sin contar las integraciones a distintos ERP's que puedes hacer también.
Sólo recuerda como dije antes, no te cases sólo con una tecnología y nunca cierres la puerta a algo, el mundo web y móvil también te esperan capo y más ahora que las empresas y corporaciones están realizando la muy difundida transformación digital, en donde conviven varias tecnologías y se interconectan, así que trabajo hay y bastante. Sobre este tema tan interesante puedes leer más en esta entrada del blog DoApps, muy recomendado por cierto.
Ah y si no te sientes cómodo en desktop, lo cual es totalmente válido también, y haz intentado pero aún así sientes que no es lo tuyo, migra lo antes posible, no pierdas tiempo y tienes para elegir en este estupendo mundo del desarrollo, ánimos crack.
Si esta entrada te ha aportado valor estimado dev, entonces compártela y difunde el conocimiento 😉
Realmente muchas gracias por el contenido de este blog, recientemente igual tuve la misma pregunta sobre si valía la pena invertir más tiempo en aprender sobre aplicaciones de escritorio, ya que en esta área me siento muy cómodo, pero con la información que acabo de leer me he quedado más tranquilo, muchas gracias, saludos 😀
Gracias a ti Ubaldo, es genial saber que este post te ha servido. Recuerda, si va a hacer desktop enfócalo a modo de backend de forma que te permita virar a otras especialidades rápidamente, esto quiere decir aprende a hacer buenas arquitecturas y tus sistemas de escritorios nuevos no los hagas monolíticos, jamás. Y siempre que quieras el mundo web estará a tu alcance, más con el trabajo remoto. Bienvenido al blog y comparte los posts en tus redes, Saludos! 💪
Vengo de la recomendación que me hiciste en tu comentario ««Consumir un API REST desde un Front-End de escritorio WinForms»», y estoy de acuerdo contigo yo vengo de programar cobol en una base de datos de red, de ahí migre a dbase, clipper, finalmente pase a una base de datos sql llamada ingres con ide de desarrollo de pantallas de caracter (ya sabes estás limitado a 24 renglones x 80 columnas), empece a aprender por mi cuenta windows forms con visual studio 2015 conectandome a esa base de datos pero con interfaces de usuario mas agradables, antes odiaba todo lo que olía a Microsoft pero con c# se sacaron un diez, y como te comentaba estoy aprendiendo web y espero lograr llegar a ser un crack como vos. saludos y exitos por siempre
Muchas gracias y te felicito por la ruta de aprendizaje constante que tienes, ya sabes que en este blog siempre eres bienvenido, y comparte con tus contactos este contenido, ten el mejor de los éxitos crack!