14 pasos para depurar tu software

pasos depuración software

La capacidad de encontrar y resolver errores de forma rápida y eficaz en aplicaciones nuevas o heredadas es como programador de software una de las habilidades más valiosas que puedes llegar a desarrollar. Dado que esta habilidad permite el rápido desarrollo y mantenimiento de sistemas de ingeniería informática de alta calidad, esta destreza resulta fundamental para muchas empresas tecnológicas, y es una de las habilidades más preciadas y buscadas en cualquier profesional que se dedica al desarrollo de aplicaciones de software.

No obstante, esta habilidad rara vez se evalúa en las entrevistas y en las pruebas que se hacen a los candidatos que optan a un puesto de trabajo como programador.

Nuestro equipo de desarrollo ha depurado y resuelto muchos problemas difíciles en muchos tipos de aplicaciones y sistemas, desde los consultores y los miembros del equipo de soporte que ayudan a nuestros clientes a depurar sus aplicaciones hasta nuestro equipo de desarrollo encargado del desarrollo de la plataforma completa de programación de aplicaciones empresariales Velneo y que se enfrentan al duro trabajo de depuración de errores para garantizar que todo funcione bien.

El procedimiento óptimo para encontrar y corregir errores es esencialmente el mismo para todos los casos. Sorprendentemente, muchos desarrolladores de software no tienen una noción clara y práctica del proceso. En este post vamos a repasar 14 pasos para depurar tu software. Esperamos que te sirva de ayuda.

Paso 1: asegúrate bien de saber lo que sí está funcionando

Cuando algo no funciona como se esperaba, es fácil dar por sentado que nada está funcionando bien. Tómate un tiempo para ver qué cosas sí están funcionando bien en torno al ámbito del problema. Esto te ayudará a delimitar el problema y crear una imagen clara en tu mente de su alcance.

Paso 2: localiza con precisión lo que no está funcionando

En el proceso indicado en el paso anterior para determinar lo que sí está funcionando, se identificará un conjunto de operaciones que no funcionan. Dedica tiempo a la elaboración de esta lista. Ten claro exactamente en qué cosas concretas el sistema no funciona como se esperaba.

A pesar de que puede parecer que estos primeros pasos no tienen sentido porque el problema es “obvio”, a menudo pasar a resolver el problema sin hacer un buen análisis de situación previo puede llevar a perder tiempo y esfuerzo, y, además, a dar una solución parcial o no óptima.

Paso 3: Simplifica el problema

El error de una aplicación de software que se descubre o sale a relucir en una situación compleja puede ser difícil de reproducir, especialmente cuando hay efectos no deterministas o estadísticos. Cualquier intento de simplificar el caso de prueba a la par que se conserva la reproducción del error siempre es un tiempo bien invertido.

Por ejemplo, si el error se produce al procesar un conjunto de datos muy grande, es posible que quieras intentar reproducir el problema con datasets cada vez más pequeños. Por supuesto, este ejemplo no sería posible si el problema está relacionado con conjuntos de datos grandes. En ese caso, crear un conjunto de datos simple aunque grande podría tener más sentido.

Delimitando gradualmente la situación o el contexto en la que surge el problema, no sólo aumentas tu claridad de miras acerca de lo que hace y no funciona, sino que, de manera natural, empiezas a construir tus propias hipótesis sobre lo que podría estar causando el problema.

Los casos de prueba simples son útiles para comunicar con precisión el error a terceros, para probar rápidamente si los cambios afectan al error, y también pueden convertirse en parte de tus pruebas de anti-regresión (consulta el paso 7). Puesto que los casos de prueba simples generalmente se pueden ejecutar rápidamente, también apoyan la prueba de la hipótesis (véase el paso 5).

Paso 4: establece hipótesis

Quizás llegues a este punto después de minutos, horas, días o incluso semanas de trabajo. No importa cómo llegues hasta aquí, o cuánto tiempo te tomó, ahora tendrás datos, y habrás aprendido algo acerca de la forma en que el problema se manifiesta. Este conocimiento te permite formar hipótesis acerca de lo que podría estar causando el error. Estas son teorías acerca de qué proceso dentro (o incluso fuera) del sistema podría estar conduciendo al comportamiento problemático observado en tu aplicación de software.

Paso 5: prueba tus hipótesis usando el ‘divide y vencerás’

Toma cada una de tus hipótesis y pruébalas de una en una, indaga en tu sistema y encuentra una sub-unidad donde creas que algo puede estar yendo mal. A continuación, ejecuta tu pequeño caso de prueba y observa el comportamiento interno de software hasta antes de esa sub-unidad y después de la misma. Si encuentras un problema antes de la sub-unidad, entonces tu hipótesis probablemente sea incorrecta, y al menos ya sabes lo que tienes que hacer: investigar más atrás hacia la entrada del sistema. Si, por el contrario, la entrada a esa parte del sistema parece correcta, pero la salida parece incorrecta, entonces tienes evidencias de que tu hipótesis no va por mal camino y puedes ir delimitando el mismo, acercándote al origen del mismo.

En este punto, si no estás completamente seguro de dónde está el error, entonces aplica vuelve al paso 1 de este artículo y aplícalo solo a esa  sub-unidad que ya has delimitado como posible origen del error.

Hay programadores que aplican este punto 5 de divide y vencerás de una manera más ingenua, sin establecer hipótesis previas. Dividen el programa en dos mitades, buscan en qué mitad del sistema ocurre el error, y luego ponen el foco en la parte que no funciona. Aunque parece una buena idea, este enfoque a la hora de depurar errores en software suele ser más lento y engorroso.

En verdad, analizando cada sub-unidad -en base a la fijación de una serie de hipótesis antes de hacer nada- se ahorra mucho tiempo y esfuerzo aunque pueda parecer lo contrario. Cualquier grieta que pueda aparecer en base a hacer conjeturas lógicas te obliga a repensar y mejorar tu sistema, a encontrar errores y a prevenir bugs futuros.

Divide tu software en sub-unidades de funcionalidad para analizar los errores y siempre vencerás. Pones el foco en el input de la sub-unidad y en su salida, y te permite delimitar el ámbito del problema con mucha más precisión. Si tienes un hipótesis razonada sobre los puntos críticos donde puede romper el software, vas a la entrada de esa sub-unidad y si funciona bien, vas a la salida. Si todo funciona según lo esperado vas a la siguiente sub-unidad que según tus hipótesis puede ser errática y haces la prueba, en orden, para ir arrinconando el ámbito del bug. Esto permite hacer un zoom muy rápido en el bug.

Solo pasa al siguiente paso una vez que tengas claro cuál es el error.

Paso 6: piensa en otra clase de esta versión del bug identificado

A veces los errores son causados por errores tipográficos simples, o fallos que solo ocurren una vez, y este tipo de errores sólo se pueden identificar en aislamiento. Sin embargo, es mucho más común que los bugs que identifiques sean representativos de un tipo de problemas mucho más grandes.

Después de dedicarle el tiempo y el esfuerzo para llegar a este paso, por lo general tendrás una percepción increíblemente clara de las partes pertinentes del sistema y del problema identificado. Serás un experto de clase mundial en este tipo de bug que acabas de localizar. Por esta razón, justo es ese el momento de aprovechar todo ese conocimiento adquirido. En un mes, ya no tendrás la misma claridad de percepción con respecto a este problema específico.

Así que dedícale tiempo en ese momento para aprovechar plenamente tu inversión de esfuerzo. Piensa y documenta la clase general de error, y piensa si el sistema probablemente manifestará otras expresiones de los problemas subyacentes, independientemente de que esas expresiones concretas se hayan manifestado ya en ejecución para los usuarios o no. Es lo que se denomina la depuración de errores preventiva. Te anticipas a otros posibles problemas del sistema basadas en la misma lógica de programación que generó el error.

No es muy buena idea eliminar un tumor sin saber si ese tumor se ha reproducido en el resto del organismo, independientemente de si el paciente lo haya identificado o no.

Paso 7: genera pruebas de regresión

Incluso si no diseñas sistemas de software utilizando el desarrollo guiado en pruebas, te recomiendo que sí utilices la corrección de errores del desarrollo guiado en pruebas.

Asegúrate de escribir las pruebas de nivel de unidad y/o de nivel de sistema que ejercen la mayor cantidad posible de la clase del error. Asegúrate de que las pruebas que esperas que fallen, de hecho fallen. La razón principal por la que existe el error en primer lugar es porque no se hicieron pruebas para identificarlo. Esto significa que hubo un agujero ,una laguna, en el conjunto de pruebas. Muchos desarrolladores opinan que si algo no se prueba, es imposible que funcione  bien y seguro que va a romper. Los buenos programadores asumen por defecto que una aplicación siempre rompe o romperá en algún momento en el futuro. Y lo cierto es que la mayoría de los bugs los encuentran los clientes…

Ya que sabes que el software falla debido a un bug concreto que ya has identificado, es una oportunidad perfecta para desarrollar pruebas, y de asegurarse de que en verdad fallan. Estas oportunidades no surgen a menudo, así que sácales todo el provecho que puedas.

Cuando hacemos pruebas de regresión, estamos comprobando que el código que hemos modificado se comporta como queremos, y que el cambio no ha causado otros problemas en otros sitios del código, que funcionaban correctamente la última vez que los probamos.

Paso 8: arregla los errores

Si has sido diligente hasta este paso, solucionar ahora los errores será extremadamente fácil; es solo una mera formalidad.

Este tipo de corrección de errores se puede realizar con mucha calma y confianza. La solución está ya encauzada en un proceso de ingeniería de software de alta calidad, un proceso que nos indica y prueba la solución al bug. En contraste, muchos desarrolladores operan en el extremo opuesto, cambiando el código casi al azar con la esperanza de que así se solucionará el problema general. Ese tipo de enfoque es más probable que introduzca nuevos errores que que corrija los existentes.

Al corregir los errores, es posible que observes otros problemas. En ese caso, también retrocede al paso 6 y aplícalos a esos errores nuevos observados.

Paso 9: asegúrate de que las pruebas ahora funcionan

Todas las nuevas pruebas ahora deberían ir bien. Si algo no funciona entonces vuelve atrás en el proceso y busca de nuevo otra solución al error.

Paso 10: verifica el caso de prueba simple

A esta altura del proceso, debería ser posible ejecutar los casos de prueba simples que desarrollaste en el paso 3 arriba, y todo debería ir como la seda. Si algo no funciona entonces vuelve atrás en el proceso y busca de nuevo otra solución al error.

Paso 11: comprueba el error original

Ahora ya deberías ser capaz de realizar las acciones que originalmente dieron paso al error, y ya debería funcionar sin problemas. Si identificas un problema nuevo o persiste el mismo, vuelve atrás a un paso anterior y encauza el problema.

Paso 12: documenta la solución al error

¿Cómo has arreglado el bug? Apúntalo.

Acabas de realizar un conjunto de maniobras de programación de muy alta calidad. ¡Así se forjan las leyendas! Es posible que seas la única persona consciente de tus acciones heroicas. Anótalas para que otros puedan aprender de ti: documenta el código, documenta el plan de prueba, documenta el conjunto de pruebas, escribe en el foro de la herramienta o haz una entrada en un blog para que conste para la eternidad y para que esté disponible para otros. Tu documentación también educará y asesorará a otros. Darás un buen ejemplo de cómo usar los recursos de manera efectiva y eficiente, y también de cómo ejecutar tareas de programación desafiantes.

Paso 13: anota otras posibles clases de errores

Durante el tiempo que has estado enfocando tu atención en resolver este problema en particular, puedes haber notado otras clases potenciales de errores, y posiblemente otras clases manifiestas de errores. Redacta un informe de errores para problemas que se manifiestan en un comportamiento disfuncional de la aplicación, o sí estás seguro de que están al acecho sin ser detectados aún.

Para otras posibles clases de errores que pueden no estar presentes pero que tampoco se pueden probar actualmente, toma las medidas necesarias para dirigir el esfuerzo de prueba hacia ellos. Por ejemplo, puedes hacer  un documento de ideas para un posible plan de prueba.

Paso 14: libera la solución del bug

Libera tu solución, ya sea interna o externamente, y asegúrate de que todos sepan lo que hiciste. Resume el problema y la solución de manera resumida e incluye enlaces a la documentación que hayas creado.

depuración de errores en software

Proceso de depuración de errores en software por Duncan Riach

Nota: este post es una adaptación de este artículo.

Este artículo 14 pasos para depurar tu software es original de Velneo.

5 formas de mejorar tu lógica de programación

lógica en programación
La lógica en la programación es una clave fundamental para ser un buen desarrollador. Quizás necesites afinar tu lógica de programación, dependiendo de si vas a usar más o menos algoritmos en tu puesto de trabajo. Si eres un diseñador/desarrollador web probablemente no vas a tener que trabajar algortimos muy complejos como norma, pero si eres desarrollador front-end tal vez un poco más, y si eres un desarrollador de back-end ya mucho más. Si eres desarrollador full-stack ya ni digamos.

Aquí te presentamos una lista de 5 puntos que pueden ayudarnos a mejorar nuestra lógica de programación.

Este artículo es para todos los programadores y desarrolladores de software. Si logramos desarrollar una buena lógica podremos movernos a través de los diferentes lenguajes de programación de una manera flexible, y tendremos más independencia a la hora de elegir un lenguaje en concreto para programar aplicaciones.

1. Piensa cómo ser resolutivo

La programación se basa principalmente en resolver problemas, y una buena técnica es dividir el “gran” problema en muchos problemas “pequeños” para poder focalizarse en cada problema de manera más detallada. Una buena forma de practicar esto es trabajar con pseudocódigo.

2. Practica

El punto más importante es el siguiente: practica. Un algoritmo no es nada más que un conjunto de operaciones ordenadas y finitas que llevamos a cabo con el único propósito de encontrarle una solución a un problema. Así que intenta practicar con problemas lo más simples posibles para obtener una lógica mejor. 

3. Estructuras de datos y algoritmos

Aprender sobre estructuras te aportará un mejor enfoque para centrarte en los problemas que quieres resolver y tener un software más eficiente. Puedes jugar al Aljedrez o practicar Matemáticas en tu tiempo de ocio.

4. Aprende paradigmas de programación

Otra cosa que puede resultar de gran ayuda para mejorar la lógica como programador es el paradigma orientado a objetos (OOP). Un paradigma de programación es una especie de modelo o plano que se puede seguir para crear un proyecto propio. Puedes aprender programación funcional para aprender cómo desarrollar programas de software y solucionar problemas de una forma distinta.

5. Estudia el código de otros

En programación tenemos muchas formas de resolver problemas, y quizás otra persona ya ha resuelto un problema que tienes de forma óptima y sencilla. Ver y analizar la forma de pensar de otros es esencial a la hora de avanzar como programador. En Github se pueden ver proyectos muy buenos.

Y recuerda, es completamente normal que un momento dado no puedas resolver un problema, pero recuerda que en las comunidades de programadores puedes encontrar muchísima ayuda.

Artículos relacionados: ¿Eres desarrollador? No te pagan por escribir código8 características importantes de un buen analista programador10 consejos para mejorar destrezas de programación y ser mejor programador¿Por qué a la mayoría de los programadores solo nos gusta nuestro código?,

Este artículo 5 formas de mejorar tu lógica de programación es original de Velneo.

¿Qué se puede programar con Velneo?

Una buena forma de saberlo es yendo a la página de clientes, los casos de éxito de con la herramienta de programación. En esta sección puedes ver como todos los programadores hablan español, tienen clientes que también hablan español y que son latinos y españoles. Además podrás ver de forma detallada qué tipo de empresas son las que programan con Velneo y con qué herramientas trabajaban y de qué plataformas provienen (Visual FoxPro, Visual Basic, .Net, Java…), sus problemas y la forma en que Velneo da salida a sus necesidades.

Otra buena forma de saberlo es sentándote tres minutos a ver este vídeo: ¿Qué puedo desarrollar con Velneo?

Como se puede ver en el vídeo, la plataforma y el código fuente está al 100% en español. Velneo es mucho más de lo que te puedes imaginar...

Este artículo ¿Qué se puede programar con Velneo? es original de Velneo.

6 consejos para programar software profesional para empresas

Si has llegado hasta este artículo es porque eres un programador de software empresarial, es decir, te dedicas profesionalmente al desarrollo de software de gestión, ya sea como autónomo o trabajador independiente, como miembro de una empresa que se dedica al desarrollo y venta de sistemas empresariales, o como trabajador de un departamento de programación dentro de una empresa mediana o grande.

Cualquiera que sea tu caso, en este artículo veremos 6 consejos para programar software profesional para empresas si tu propósito es desarrollar aplicaciones exitosas para negocios y corporaciones:

#1 ¿Cuál es el mejor programa para hacer aplicaciones para empresas?

Ante la eterna pregunta de cuál es el mejor programa para hacer software para empresas, la respuesta como todo en esta vida es que depende. Hay programas que tienen una curva de aprendizaje mucha más larga que otros, hay programas que van orientados a grandes empresas de programación, hay programas que son ideales para pequeñas empresas de programación y hay otros que han sido muy buenos en el pasado y que se siguen usando a pesar de que ya están descontinuados y que no tienen soporte. En todo caso, en este post hablaremos de programas de software que sirven para crear software empresarial. ¿Cuál es el mejor programa para hacer software para empresas?

#2 Consejos técnicos para desarrollar aplicaciones empresariales

En este artículo hacemos una recopilación de consejos técnicos para desarrollar aplicaciones empresariales de la mano de Jesús Arboleya, evangelista y consultor de Velneo en el departamento de éxito de clientes. Es el autor del curso Mi primera aplicación con Velneo, que puedes hacer gratis. Todos los conceptos que se comentan a continuación están explicados en la documentación de Velneo. Ver 5 consejos técnicos para desarrollar aplicaciones empresariales

#3 ¿Cuál es el mejor programa para crear un ERP?

Hace un par de años me tropecé con un hilo en el foro de aprender a programar en el cual una persona pedía consejo de cara a desarrollar un ERP.  Literalmente lanzaba la siguiente duda:

Pido consejo para desarrollo de software ERP ¿qué lenguaje usar?

Su empresa al parecer tiene la necesidad de desarrollar un nuevo programa ERP para sustituir al que tienen en la actualidad programado en Visual FoxPro. Su objetivo es desarrollar un ERP básico y estándar que incluya los módulos más comunes: proveedores, clientes, pagos pendientes, contabilidad, inventario, etc… También comenta que su experiencia es principalmente en Visual FoxPro y sus dudas se centraban básicamente en las siguientes cuestiones y que se resumen en la pregunta general, ¿Cual es el mejor programa para crear un ERP?

aplicaciones, empresa, a medida

#4 Convence a tus clientes para implantar sus aplicaciones de empresa en el cloud

La industria del desarrollo de software empresarial lleva años inmerso en un cambio de propósito. Las empresas de desarrollo ya no solo son meros proveedores de software empresarial más o menos estándar, más o menos personalizado, sino que se exige de ellas aportar valor y ofrecer servicios que hagan a las empresas más competitivas.

En muchos casos ya no basta con tener, por ejemplo, un programa de contabilidad “paquetizado” para distribuir por un determinado sector, y luego dar soporte y vivir de ello. Ahora se exige a las empresas de desarrollo la resolución de problemas intrínsecos al negocio del cliente, y no solo dar simplemente soporte y mantenimiento a un software estándar. Lidera la estrategia de tus clientes implantando aplicaciones en Cloud.

#5 Características importantes de un buen analista-programador

Según la Wikipedia, las dificultades de comunicación entre analistas y programadores (un mero documento no basta para describir lo que se quiere hacer) dio origen a una categoría de profesional intermedia, denominada analista-programador. La concepción original del programador ha desaparecido siendo sustituida por la de un profesional mucho más formado y con unas funciones menos “mecánicas”. 8 características importantes de un buen analista-programador.

#6 Tendencias en software empresarial para los próximos años

Los últimos 25 años han supuesto un tremendo cambio en relación con el software usado por las empresas. Muy probablemente en los próximos 5 años seremos testigos de asombrosos nuevos desarrollos en aquellos programas de software orientados a dar solución a las demandas de la gestión de procesos de negocios (lo que se conoce como BPM, siglas en inglés de Business Process Management).

Estas tendencias muy probablemente giren en torno a arquitectura basada en la nube, mejoras en movilidad, análisis de datos en tiempo real, capacidades de detección de fraude mejoradas y mayor funcionalidad de nicho. Ver 5 tendencias en software empresarial para los próximos años

Este artículo 6 consejos para programar software profesional para empresas es original de Velneo.

4 razones para desarrollar una aplicación a medida para una empresa

aplicaciones, empresa, a medida

En el blog de Velneo hemos tratado en multitud de de ocasiones el dilema de si optar por hacer aplicaciones empresariales estándar o a medida. Evidentemente esta pregunta no se dirime con un sí o un no. No es tan simple la respuesta. De todos modos, desde Velneo recomendamos hacer aplicaciones a medida pero partiendo de un estándar personalizable.

Un software estándar global multi sector o incluso dentro de un mismo sector es una utopía una vez sobrepasado un determinado tamaño de empresa, normalmente la “pequeña empresa”.  Será difícil encontrar un software que pueda ser implantado en más de una empresa salvo que hagamos adaptaciones específicas que cubran las particularidades de nuestro cliente, sobre todo en cuanto tratamos de implantar áreas como producción, ventas o aprovisionamiento, sin embargo, existen módulos en los que está ampliamente extendido y asumido el uso de software estándar como son las aplicaciones financieras, contabilidad, nóminas y RRHH.

Independientemente de la respuesta a la pregunta de si estándar o a medida, en este artículo vamos a recoger 5 razones convincentes para crear una aplicación a la medida de una empresa.

4 razones para desarrollar una aplicación a medida para una empresa

Para los dueños de las empresas, a la hora de gestionar un negocio, tiene sentido tener software que pueda ayudar a optimizar sus procesos internos. Sin embargo, cuando se trata de una empresa pequeña, muchas veces no tiene sentido gastar los recursos ni en hojas de cálculo estáticas ni en la contratación de un desarrollador en plantilla para crear a solución que la empresa desea.

Afortunadamente, hay plataformas que permiten hacer aplicaciones a partir de una plantilla empresarial en la que se puede personalizar la interfaz de la aplicación de cada empresa con su logo y demás, personalizar los procesos críticos del cliente mediante la reprogramación de una plantilla editable, crear nuevos módulos a partir de otros ya existentes, y que también incorporan de serie la integración con una base de datos, una infraestructura de servidores en la nube, seguridad, que funcione en diferentes dispositivos, etc… para que los desarrolladores que están adaptando el software a las necesidades del cliente se centren exclusivamente en eso y se olviden del resto.

Aquí van 4 razones convincentes por las que una aplicación a medidaes lo que necesita la empresa de su cliente:

#1 Las soluciones estándar no se ajustan a todas las necesidades empresariales

Cada proceso de negocio es único, por lo tanto, el modelo de software estándar tradicional, ya no sirve. El cliente conoce su negocio mejor que cualquier otra persona y exactamente qué características necesita para gestionar su negocio con eficacia.

Por ejemplo, una empresa constructora puede necesitar una aplicación que permita que una parte cree informes de errores en la construcción, al mismo tiempo que se construye un flujo de trabajo para enviar notificaciones automáticas a quienquiera que sea responsable de corregir el error. De manera similar, un gran minorista con múltiples almacenes, puede crear una aplicación para administrar y realizar un seguimiento de los inventarios en todas las ubicaciones en las que se encuentren.

Con una aplicación creada a medida, tu cliente obtiene exactamente lo que su negocio necesita.

#2 En software los costes en infraestructura son un pozo sin fondo

Si tu cliente es una startup o una pequeña empresa, cada céntimo que ahorra cuenta. Por lo tanto, probablemente tu cliente esté buscando minimizar el gasto en infraestructura y en personal de TI – personal que sí resulta indispendable para mantener servidores en las empresas más grandes y que sí son capaces de pagar.

Al optar por crear una aplicación alojada en la nube y personalizada, tu cliente no sólo está ahorrando dinero en infraestructura y en la seguridad de datos, sino también en escalabilidad.

Muy a menudo, las plataformas de desarrollo que proporcionan una plantilla de software estándar personalizable de la que partir te cobran a ti como desarrollador según el con el conjunto de características que tú o tu cliente necesita, es decir, por el número de usuarios, el almacenamiento de datos, el volumen de datos que se mueven, etc… Luego tú ya le repercutes el coste a tu cliente buscando tu propio beneficio, pero es una tranquilidad para todas las partes. Por otro lado, no hay necesidad de una gran inversión inicial para empezar, ya que sólo se paga por lo que se necesita y utilizar.

# 3 Las soluciones estándar no son escalables

Las aplicaciones de base de datos personalizadas si lo hacen. Una solución a medida se adapta al tamaño de la empresa de tu cliente  y escala según las necesidades del negocio.

Lo ideal es arrancar con pequeñas funcionalidades limitadas y pocos usuarios, para luego ir progresivamente añadiendo de forma rápida mayor funcionalidad y más usuarios sin necesidad de migrar a un nuevo sistema.

La mayoría de los ciclos de desarrollo para aplicaciones a medida son realmente cortos para que pueda escalar la aplicación con facilidad a medida que crecen las empresas.

#4 Visualizar datos en aplicaciones estándar suele ser difícil

Hoy en día el proceso de toma decisiones se tiene que poder hacer de forma rápida para ser competitivos.

Un software estándar no puede presentar todos los informes críticos para cada empresa, lo que conlleva que los usuarios tengan que realizar exportaciones a excel y luego analizar la información manualmente o con suerte importándola a otra aplicación que sí presente los informes que necesitamos.

En todo caso acceder a la información clave para cada tipo de negocio usando un software paquetizado es farragoso casi siempre…

Una aplicación personalizada, y ya no digamos si está alojada en la nube, puede ofrecer varias herramientas y paquetes de informes, ayudando a las empresas a llevar un registro de los datos esenciales del negocio. Por ejemplo, pueden realizar un seguimiento del número de productos vendidos, pedidos recibidos o tickets de soporte recaudados en un período determinado.

Cuando todos estos datos se almacenan en su aplicación personalizada, se pueden organizar, analizar y presentar los datos de la manera más eficiente para cada tipo de empresa, lo que le ahorrará tener que entrar en un excel y procesar los datos manualmente.

Más allá de ahorrar más de un dolor de cabeza a tus clientes y a sus empleados, las aplicaciones empresariales a medida son una forma rentable de gestionar el funcionamiento interno de cada tipo de empresa y eso es lo que una buena empresa de desarrollo a medida debe transmitirle a sus clientes.

Este artículo 4 razones para desarrollar una aplicación a medida para una empresa es original de Velneo.

Cuando un desarrollador dice: “Eso no se puede hacer…”

La visión de las cosas del programador

Es difícil para los no programadores, entender cuán complejo puede ser el desarrollo de software. Sólo tienes que decirle al al ordenador qué hacer, ¿verdad? ¿Qué tan difícil es eso?

Bueno, es engañosamente difícil, porque el ordenador carece completamente de lo que los teóricos han descrito como un marco de conocimiento. Por ejemplo, puedo pedirle que haga algo simple, como “tráeme un bocadillo de jamón”. Puedes intuir rápidamente que yo en realidad lo que quiero decir es “vete a la cocina,” haz un bocadillo de jamón, y tráemelo “o”vete a la bocatería, pídeme un sándwich de jamón, y me lo traes” basado en el contexto en el que físicamente estamos y lo que ha sucedido las últimas veces que esa misma petición se ha realizado.

Se puede intuir, en el caso del escenario de ir a la cocina, que hay que ir a la nevera, encontrar el jamón, el queso cheddar blanco (porque sabes que me gusta, y no el americano), la mostaza Djion (porque sabes que me gusta en el bocadillo de jamón y no la mayonesa) , encontrar una barra de pan, montar todo el asunto, guardar los ingredientes de nuevo en la nevera, averiguar dónde están los platos, emplatarlo, y traerlo. Y si eres muy observador, notarás que me estoy saltando un mogollón de pasos como saber cuánta mostaza a utilizar, sacarle la envoltura plástica al queso, cuánto jamón entra en un bocadillo estándar de jamón, qué es en realidad un bocadillo, y si nos ponemos qué es el “jamón”…

Cuando te sientas a programar no te puedes saltar ni uno de esos pasos minúsculos. Si no se especifican detalladamente los pequeños pasos aparentemente microscópicos que son intuitivamente obvios para ti, como ser humano, que vives en un mundo lleno de contextos y matices, el ordenador hace lo incorrecto, o falla, o a veces las dos cosas.

Un poco de empatía a la hora de hacer peticiones

Como no programador, probablemente le estés diciendo a los programadores que están trabajando en un software cosas del estilo: “¿puedes hacer que esa ventana sea más grande?” o “dirigirte al usuario por su nombre de pila” o “deja que el usuario publique eso en su página de Facebook” o cosas vagas e indeterminadas del estilo, en un contexto de una gran variedad de cosas de las que el ordenador “no sabe” absolutamente nada.

Para ti es intuitivo, y parece muy fácil…. entonces, ¿Cuál es el problema?

El problema está en que los programadores con este tipo de tareas tienen que manejar diferentes capas de complejidad. Hoy en día, hay que dar por hecho que no han escrito todo el código con el que trabajan ellos mismos, han usado una librería (trozos de código escrito por otra persona para solucionar problemas muy comunes) proporcionada por un tercero, para hacer todo el trabajo “gordo”. Normalmente esto implica usar más de una librería, ya que hay muchos tipos de dependencias e interdependencias.

Así que cuando le dices a un desarrollador: “deja que los usuarios posteen en Facebook”, tienes que tener en cuenta que van a esccuchar tu pertición y van a pensar “eh, claro, eso se puede hacer más o menos de forma sencilla quizás, creo que tenemos su información de Facebook en una base de datos por aquí, creo que tenemos las librerías apropiadas para eso aquí, sí, se puede hacer fácilmente”, lo que conduce a hacer una estimación optimista de cuanto tiempo puede tomar.

Empiezan los problemas imprevistos

Pero cuando se ponen a hacer la tarea en cuestión, los desarrolladores caen en la cuenta de que uno o más de los supuestos que habían pensado estaban equivocados, o que para usar la librería que querían usar implica que no pueden usar la versión de una librería que están usando ahora, y tienen que usar una nueva librería distinta de la versión actual, lo que implica volver a programar todo el código que hace uso de esa librería (nada de esto tiene que ver con el trabajo que tú habías solicitado, si te fijas)  y luego ponerse con la tarea encomendada, para luego darse cuenta de que algo que pensaban que podían usar ahora se ha quedado obsoleto y ahora necesitan encontrar otra librería que luego tienen que volver a valorar para ver si es compatible con el código que tienen montado ahora…

Todo este proceso se va haciendo cada vez más complejo en el momento en que un supuesto mal asentado de base resulta ser equivocado. Al principio todos los supuestos parecen tener lógica y aparentemente están bien planteados, pero cuando te metes a programar es cuando puedes aseverar al 100% que todo va a salir según lo previsto.

La técnica del descargo de la responsabilidad

Los mejores programadores con los que he trabajado empiezan a establecer sus previsiones y estimaciones de tiempo de trabajo en torno a fórmulas de descargo de responsabilidad del tipo: “si damos por cierto X, entonces…” 0 “si algo no funciona como está documentado…” y cosas parecidas. Saben, por experiencia, que siempre hay algo escondido, al acecho, en las profundidades como un oso polar que sorprende a la foca para devorarla. Y por ello preparan al cliente que les paga las aplicaciones en consecuencia, mentalizándolo de que estas cosas suelen pasar de forma inevitable.

Los programadores menos experimentados, llenos de confianza en si mismos tanto a la hora de programar, como a la hora de pensar que saben todo lo que tiene que hacerse y dando a entender que lo tienen todo bajo control, son menos cautos y caen en el “sí, claro, eso me toma una semana”. Pues aveces sí, tienen algo de presupuesto y pueden tapar los problemas que surgen de temas inesperados, pero muchas otras veces no, y se meten en un problemón con el cliente y con la empresa para la que trabajan.

Conclusión: hay que saber traducir lo que dice un programador

Conclusión, hay que saber traducir. Si un programador dice “eso no se puede hacer”, casi siempre lo que quiere decir es “ni de broma voy a poder hacer eso dado que mi forma de percibir intuitivamente las limitaciones operativas reales con las que me tengo que desenvolver en la empresa, y es tan difícil explicarte todo esto, que me va a explotar la cabeza. Vete. Lejos.”

Si eres el jefe de proyectos y recibes muchos “eso no se puede hacer”, es hora de volver a evaluar no solo tus expectativas, sino el entorno de trabajo en el que están los programadores a tu cargo. No hay suficientes, no tienen suficientes recursos, les estás exigiendo demasiado en cosas que no les permite avanzar en tareas fundamentales -algo está fallando…

En vez de poner cara de frustración e incredulidad, enfoca el asunto con un “Vale, ¿y que podemos hacer para que esto sea posible de hacer?”. Llegarás mucho más lejos, y con un poco de suerte podrás corregir la deriva de un barco que va hacia el naufragio.

Nota: este texto es de Stan Hanks, ingeniero de software, y lo publicó originariamente en Quora.

 

 

 

Este artículo Cuando un desarrollador dice: “Eso no se puede hacer…” es original de Velneo.

¿Qué hace un desarrollador profesional de aplicaciones empresariales?

desarrollo de aplicaciones empresariales

Introducción

¿Qué significa desarrollar aplicaciones empresariales de manera profesional? ¿Una página web es una aplicación empresarial? ¿Quién desarrolla profesionalmente aplicaciones empresariales? ¿Cuáles son las aplicaciones empresariales más comunes en todas las empresas? ¿Es lo mismo que el software de gestión empresarial?
Para muchos de vosotros todas estas preguntas serán tan obvias que no necesitan respuesta. Sin embargo, a la hora de sentarse a definir el concepto y escribir sobre ello descubrimos que las respuestas no san tan fáciles como intuimos que son. ¿Qué es el desarrollo profesional de aplicaciones empresariales?

¿Cómo definir el concepto de aplicación empresarial?

Para empezar por algún sitio podemos afirmar lo siguiente: el software empresarial, o software de aplicaciones empresariales, es un software diseñado específicamente para satisfacer las necesidades de una organización en lugar de usuarios individuales.
Esta primera distinción es muy importante: ¿desarrollas aplicaciones para ayudar a la gestión de por ejemplo, una tienda, un almacén, un restaurante, un hospital o un colegio? ¿O por el contrario programas software para usuarios individuales, como por ejemplo, videojuegos, apps móviles de ocio, multimedia?

Las aplicaciones empresariales pueden usarse en la empresa privada, pero también en otro tipo de organizaciones que necesitan software de gestión de datos como, escuelas, clubes deportivos, hospitales, gobiernos, el ejército o las fuerzas del orden, por citar unas cuantas.

Las aplicaciones empresariales son típicamente herramientas orientadas al negocio y pueden ser de muchos tipos:

  • sistemas compras  y procesamiento de pagos online,
  • bases de datos con catálogos de productos interactivos,
  • sistemas automatizados de facturación,
  • sistemas de seguridad,
  • programas de administración de contenido empresarial,
  • software para la administración de servicios de TI,
  • CRMs para administración de relaciones con los clientes,
  • ERPs para la planificación de recursos empresariales,
  • sistemas de inteligencia de negocios,
  • software para administración y gestión de proyectos,
  • herramientas de colaboración empresarial, s
  • sistemas para la administración de recursos humanos,
  • sistemas inteligentes de producción y fabricación,
  • software para la integración de aplicaciones empresariales
  • y una larga lista de aplicaciones que tiende a infinito…

Como las empresas tienen departamentos y sistemas similares en común, el software empresarial a menudo está disponible como un conjunto de programas personalizables. Y es que en general, la complejidad de estas herramientas requiere capacidades especializadas y conocimientos específicos de cada sector o de cada tipo de actividad.

Por ejemplo, puedes tener una plantilla de ERP que tiene módulos comunes para diferentes empresas, pero que también permite la programar personalizaciones y cosas a medida para cubrir las necesidades específicas de un cliente.

¿Qué tipo de aplicaciones empresariales usan las empresas?

Las aplicaciones de software empresarial están diseñados específicamente para ayudar a los negocios a funcionar mejor, facilitando las tareas y optimizando los recursos, mejorando especialmente la relación productividad trabajador/tiempo. Ocupan el espacio de aquellas tareas arduas y repetitivas que antiguamente se hacían a mano y con papel.

Las aplicaciones de negocio ayudan a organizar los datos y los recursos de forma relevante, contextual y sencilla, tareas que por si mismas que no añaden valor a las empresas, pero que consumen mucho tiempo si se hacen a mano. Haciendo un buen uso de las aplicaciones empresariales, podemos centrarnos en las funciones de negocio base, las que en verdad nos diferencian de la competencia y nos hacen ganar dinero.

Por ejemplo, si mi cliente tiene una fábrica de tornillos, y sus tornillos son el negocio base, no debe perder tiempo imputando facturas a mano, ni controlando el stock a mano, ya que puede introducir un software ERP que le facilita enormemente esta tarea y le permite dedicar más tiempo en centrarse en la mejora de los procesos productivos, que es el factor diferencial de su empresa.

Los desarrolladores profesionales de software empresarial hacen dichas aplicaciones para empresas. ¿Pero qué tipo aplicaciones son? Si alguna vez te has preguntado qué es lo que la gran mayoría de las empresas tienen en su caja de herramientas de software, entonces esta lista te puede interesar:

  • Suites ofimáticas: en todas las oficinas se usa software de ofimática para cosas como procesamiento de textos, software de presentación, servicios de correo electrónico y hojas de cálculo. Para la mayoría de las empresas, utilizan un producto como Microsoft Office 365 o Google G Suite. Este tipo de aplicaciones no necesitan ser programadas para ajustarse a las necesidades de los clientes. Tienen opciones de configuración para que el usuario las pueda adaptar, pero no se personalizan via desarrollo por lo general.
  • Software de Gestión de Inventario: el seguimiento del inventario dentro de una empresa es esencial para cualquier negocio que ofrece productos físicos. Los sistemas de gestión de inventario pueden realizar un seguimiento que va desde proveedores, productos en tránsito, almacén, hasta la entrega al cliente, y permite que los productos sean rastreados fácilmente y que no desaparezcan o se pierdan sin ser contabilizados. No todas las empresas gestionan el inventario de la misma manera, y en este sentido muchas empresas necesitan a un desarrollador para programar un software de gestión de inventario personalizado, hecho a la medida de la empresa. Estas funcionalidades suelen ir integrados en un aplicación más grande de gestión, en programas como un ERP.
  • Software de Facturación: un programa de facturación es, fundamentalmente, un software de gestión de facturas de ventas y compras, así como otros documentos acreditativos de una transacción comercial. Toda actividad económica de un autónomo o empresa ha de estar documentada, tanto por motivos fiscales como contables. El documento legal y justificativo de todo intercambio de bienes y servicios es la factura. La facturación puede variar de país a país, pero los conceptos son los mismos con diferentes nombres. Puede requerir algún grado de personalización y suele ir integrado dentro de un software más grande como un ERP.
  • Software de Gestión de Nóminas: el software de nóminas es imprescindible en todas las empresas. Un buen programa de nóminas se encarga de controlar o registrar todo lo relacionado con las nóminas de los trabajadores permitiendo reducir las cargas excesivas de trabajo y disminuir errores, considerando la legislación fiscal y laboral vigente del país incluyendo los cálculos de impuestos locales y retención de los mismos. No necesita mucha personalización a nivel de programación, pero si debe poder  ser configurable por los usuarios.
  • Software para Informes: todas las empresas necesitan obtener informes de forma periódica sobre diferentes aspectos empresariales, ya sea para las reuniones semanales del equipo de trabajo, para sacar información financiera de cada ejercicio, de ventas, etc… El software para informes permite que la información se pueda obtener de forma sencilla y con la misma presentación y estructura de manera reiterada en el tiempo. Este tipo de software muchas veces depende de integraciones con otras bases de datos de donde se extrae la información y casi siempre requiere de la mano de un desarrollador profesional. Hoy en día cada el software empresarial por defecto ya incluye algún módulo para obtener informes estándar.
  • Software para la Gestión de la Productividad de los Empleados: puede ser difícil juzgar la efectividad de los empleados si no se hace un seguimiento adecuado. Una aplicación de informes enfocada en KPIs permitirá a la administración realizar comprobaciones de los empleados a lo largo de su trayectoria en la empresa para asegurarse de que están cumpliendo metas y también para tratar de identificar cuándo ciertos puestos pueden necesitar ayuda adicional o intervención en el desempeño. Este tipo de aplicaciones necesita siempre algún grado de personalización o desarrollo a medida para adaptarse perfectamente a la casuística de cada empresa y de cada puesto de trabajo.
  • Software de Cuadros de Mando: es un tipo de aplicación relativamente nuevo, a menudo con una interfaz basada en Web, y que muestra información de la empresa en son paneles muy visuales. Un cuadro de mandos reúne información de diferentes aplicaciones empresariales en un único punto de lanzamiento, para facilitar el acceso, y mostrar información clave de la empresa que ayuda en la toma de decisiones y que da señales de alarma cuando algo no funciona como es debido. Por ejemplo, un tablero de datos para ayudar a los empleados a encontrar la información de la gestión de stocks. Este tipo de software siempre requiere una adaptación a las necesidades reales de cada empresa, ya que los factores claves deben definirse para cada organización.
  • Software CRM para la Gestión Comercial: Las siglas CRM o Customer Relationship Management hacen referencia a un software que permite a las empresas rastrear cada interacción con los clientes, tanto actuales como futuros. Aunque las capacidades del software pueden varias en función del, al software en sí por lo general se le conoce como CRM. Hoy en día los CRM se están especializando en las diferentes áreas de gestión de clientes. Cada vez hay más software centrados en la venta a clientes nuevos y no tanto en la gestión de la cartera actual, que se gestiona por otros medios, por ejemplo. El trabajo de un desarrollador profesional de aplicaciones empresariales en el contexto del CRM es fundamental, ya que requiere un análisis previo de los flujos de venta de cada cliente para luego poder plasmar los procesos claves en el funcionamiento del software.
  • Software ERP para la Gestión y Planificación de Recursos: Una definición sencilla de qué es un ERP (Enterprise Resource Planning – Planificación de Recursos Empresariales) es un conjunto de sistemas de información que permite la integración de ciertas operaciones de una empresa, especialmente las que tienen que ver con la producción, la logística, el inventario, los envíos y la contabilidad. Al igual que en el punto anterior, el trabajo de un desarrollador profesional de aplicaciones empresariales en el contexto del ERP es fundamental, ya que requiere un análisis previo de los flujos de producción de cada cliente para luego poder plasmar los procesos claves en el funcionamiento del software
  • Software TPV: son parte fundamental de la venta en establecimientos físicos. El software puede ser comercial por sector (para establecimientos que venden al gran público y que suelen ser genéricos para cada tipo de negocio) o puede ser a medida, y contienen software específico para una única empresa. Suelen cumplir con todas las necesidades de los clientes ya que es un sistema a la medida. Normalmente forma parte de sistema mayor como un ERP.
  • Software de Contabilidad: el software contable registra y procesa las transacciones históricas que se generan en una empresa o actividad productiva: las funciones de compras, ventas, cuentas por cobrar, cuentas por pagar, control de inventarios, balances, producción de artículos, nóminas, etc. Suele adaptarse a las necesidades de cada cliente según la industria y el sector. Normalmente forma parte de sistema mayor como un ERP.
  • Software a Medida (no-estándar): es una aplicación vertical o aplicación de mercado vertical, es un software definido por requisitos para un único, o estrechamente definido, mercado. Esto contrasta con la aplicación horizontal. Generalmente aparece en todos los casos en donde la resolución de un problema informático no puede realizarse con una aplicación horizontal existente. Software como éste puede ser comprado cuando está disponible, o el interesado puede contratar a una empresa, consultor o programador independiente para crear desde cero o modificar un software existente y acomodarlo a sus necesidades. El software estará diseñado para un fin específico, y difícilmente pueda aplicarse en otra área sin adaptaciones previas.

¿Qué papel juega el desarrollador de aplicaciones empresariales en todo esto?

Como hemos podido comprobar hasta este punto del artículo, los desarrolladores profesionales de aplicaciones empresariales juegan un papel determinante tanto en la creación de software vertical o a medida, como en la adaptación de aplicaciones via programación. Es decir, siempre intervienen salvo en el caso de suites cerradas o en aplicaciones genéricas de código privativo que no permiten ser adaptadas.

Ahora bien, el desarrollador profesional de aplicaciones empresariales es algo diferente a un programador en sentido estricto.

El desarrollador de software suele desempeñar todas estas tareas:

  • participa en la definición del producto de software que se va a comercializar, incluyendo el análisis de los nichos de mercado al que va dirigido
  • especificaciones del software
  • el análisis de requerimientos del software
  • diseño y mejora de prototipos y de demos para validar requerimientos
  • el análisis del costo-beneficio, que incluye elegir el tipo de arquitectura y el framework que implica tener claro el presupuesto y el calendario de trabajo
  • diseño
  • programación
  • implementación
  • documentación para los usuarios del software desarrollado
  • testeo de las aplicaciones y supervisión del proceso de arranque de prueba de la aplicación
  • mantenimiento

En este sentido, los desarrolladores profesionales de software para empresas son programadores-analistas, tienen que desenvolverse bien en diferentes escenarios lejos del ordenador y con tareas no relacionadas estrictamente con la programación de código.

¿Cuál es la mejor herramienta para hacer software para empresas?

Los desarrolladores profesionales de aplicaciones empresariales necesitan disponer de plataformas de desarrollo que les permitan centrarse más en los procesos del cliente que en los procesos de programación. Las mejores herramientas para el desarrollo de software de gestión tradicionalmente han tenido mucho éxito por eso mismo, porque te permiten dedicarle más tiempo a analizar los procesos del cliente que a programar.

El desarrollo ágil de aplicaciones es otro concepto clave a la hora de hacer software para empresas. También es importante de disponer de código fuente editable del que poder partir a la hora de hacer un ERP o un TPV o una Contabilidad.

También es importante que la plataforma de desarrollo se adapte a las tendencias del mercado, que las aplicaciones hechas en esa tecnología tenga un buen rendimiento en cloud, que funcionen en diferentes dispositivos y en diferentes sistemas operativos.

Conclusión

En el campo del desarrollo de aplicaciones empresariales, un buen programa nace del trabajo que realizan los buenos desarrolladores, no de que el lenguaje o herramienta utilizada sean buenas, ya que en realidad no existen buenas o malas herramientas sino malas selecciones o usos de herramientas de forma inadecuada.

Un buen desarrollador profesional es capaz de programar un software espectacular con cualquier herramienta. Un mal programador no será capaz de desarrollar buen software con ninguna herramienta.

Lo que sí hace bueno a un desarrollador de aplicaciones empresariales es saber elegir qué herramienta es óptima para cada tipo de proyecto de software.

Este artículo ¿Qué hace un desarrollador profesional de aplicaciones empresariales? es original de Velneo.

No te pierdas el curso de actualización Velneo 2018

¿Cuánto tiempo vas a dedicarle a todas las novedades de Velneo 21 y 22?

¿Sabías que el 90% de los asistentes del curso 2017 lo valoraron como muy útil y afirmaron que repetirían?

Si nunca has asistido a uno de estos cursos tendrás que adivinar cómo aplicar los nuevos recursos de programación, perdiendo horas de trabajo.

Además incluye la certificación que te sirve para:

  • Autoevaluarte
  • Evaluar a tu equipo sin coste
  • Ser referenciado por Velneo a clientes finales


Este artículo No te pierdas el curso de actualización Velneo 2018 es original de Velneo.

Seminario de Novedades de Velneo 22

El próximo jueves, 26 de octubre, de 16:00 a 17:30 (zona horaria CEST) te invitamos a participar en un seminario online en el que te mostraremos las principales novedades de la nueva versión 22 de Velneo.

Porque nuestro compromiso es hacerte la vida más fácil como desarrollador de aplicaciones empresariales, queremos compartir contigo todo el trabajo que hemos realizado durante estos meses y qué mejor forma de hacerlo que en vivo, con todos vosotros y de la mano del equipo de Velneo.

¡No te lo pierdas, te esperamos!

Regístrate ahora: plazas limitadas

Este artículo Seminario de Novedades de Velneo 22 es original de Velneo.

Ahorra tiempo programando tu ERP asistiendo a este seminario

 

¿Qué es?

En el seminario de Velneo “Gana más dinero desarrollando software de gestión” en el que a partir de una plantilla empresarial con gestión de compras, ventas, almacenes, TPV, contabilidad…te mostraremos de qué forma podrás personalizarla y adaptarla a tus necesidades o las de tus clientes en un tiempo récord, y así, disponer de tu propio ERP.

¿Cuándo se celebra el seminario?

Se celebra este jueves, día 19 de octubre, en de 4pm a 6pm (horario UTC+2). Si tienes cualquier pregunta o duda, ponte en contacto.

¿A quién va dirigido este seminario?

¿Haces software para empresas usando Visual Basic, .NET, o FoxPro u otra plataforma para profesionales? ¿Quieres programar tu propio ERP para vender a tus clientes? Te invitamos a que conozcas Velneo vERP en este seminario gratuito.

Regístrate ahora: plazas limitadas

Este artículo Ahorra tiempo programando tu ERP asistiendo a este seminario es original de Velneo.