apoyo en los procesos de desarrollo, migraciÓn y …

45
APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y SOPORTE DE APLICACIONES DESARROLLADAS EN LA EMPRESA ELEMENTAL LAB S.A.S ALVARO JUAN PABLO AGUIERRE SIERRA UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES PEREIRA, RISARALDA, COLOMBIA JUNIO, 2021

Upload: others

Post on 09-Jul-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y SOPORTE DE

APLICACIONES DESARROLLADAS EN LA EMPRESA ELEMENTAL LAB

S.A.S

ALVARO JUAN PABLO AGUIERRE SIERRA

UNIVERSIDAD CATÓLICA DE PEREIRA

FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES

PEREIRA, RISARALDA, COLOMBIA

JUNIO, 2021

Page 2: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y SOPORTE DE

APLICACIONES DESARROLLADAS EN LA EMPRESA ELEMENTAL LAB

S.A.S

ALVARO JUAN PABLO AGUIRRE SIERRA

Informe final de la práctica profesional para optar por el título de Ingeniero de Sistemas y Telecomunicaciones.

Monitor de práctica profesional e informe final:

(Ing.) Carlos Mario Medina Otálvaro

(PhD.) Line Yasmin Becerra Sánchez

UNIVERSIDAD CATÓLICA DE PEREIRA

FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES

PEREIRA

JUNIO, 2021

Page 3: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

AGRADECIMIENTOS

Agradezco inicialmente a Dios por ser el ente que ilumina mi camino día a día con cada situación que se postra en mi camino, sin su ayuda estoy convencido que llegar a este momento de mi vida no hubiese sido posible.

Al señor Alvaro Aguirre Moncada quien es mi padre y ejemplo para seguir y la señora Norma Constanza Sierra, quien es mi madre y aquella con la cual siempre podré contar, ellos, mis progenitores; con su apoyo emocional, económico y orientador fortalecieron mis momentos de precariedad tanto en lo personal como en lo académico. Que Dios y la vida recompense todo el esfuerzo arduo realizado por ellos para yo alcanzar mi sueño de ser profesional.

A mi compañera de batallas y grandes óbices Diana Valentina García Velázquez, son inmensas las formas que tengo de agradecerle por todo su apoyo incondicional. Ella ha hecho que todo aquello por lo que he luchado tenga un sentido más profundo y me ha iluminado para no desistir en los momentos de tormentas.

A nivel profesional y académico agradezco a mi monitor de prácticas profesionales al Ingeniero Carlos Mario Medina y a la directora del programa de ingeniería en sistemas y telecomunicaciones la Doctora Line Yasmin Becerra Sánchez por sus grandes aportes en los momentos que se presentaron obstáculos, fungieron un rol importante para lograr las metas y objetivos plasmados a lo largo de todo este proceso.

Finalmente quisiera agradecer a la Universidad Católica de Pereira por brindarme las bases necesarias académicas y personales para enfrentarme al mundo laboral como profesional, con docentes comprometidos a la enseñanza y a sus estudiantes, los cuales cuentan con grandes conocimientos en sus campos. Además, de brindarme la gran oportunidad de reforzar, adquirir y comprobar aquellas bases forjadas en el ámbito de prácticas profesionales.

Page 4: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

CONTENIDO

Pág.

1 INTRODUCCIÓN .............................................................................................. 1

2 DESCRIPCIÓN DEL ESCENARIO DE PRÁCTICA .......................................... 2

2.1 MISIÓN.............................................................................................................. 2

2.2 VISIÓN .............................................................................................................. 3

2.3 ORGANIGRAMA ............................................................................................... 3

3 DESCRIPCIÓN ÁREAS DE INTERVENCIÓN .................................................. 4

3.1 ACTUALIZACIÓN Y MEJORA DE PROYECTOS INTERNOS ACTIVOS ......... 4

3.1.1 Producto interno xShop ........................................................................ 4

3.1.2 Producto interno xPage ........................................................................ 5

3.2 DESARROLLO DE NUEVOS PROYECTOS .................................................... 5

3.3 NECESIDADES ACTUALES DE LA EMPRESA ............................................... 5

4 JUSTIFICACIÓN ............................................................................................... 6

5 OBJETIVOS ...................................................................................................... 7

5.1 OBJETIVO GENERAL....................................................................................... 7

5.2 OBJETIVOS ESPECÍFICOS ............................................................................. 7

6 MARCO TEÓRICO ............................................................................................ 8

6.1 HERRAMIENTAS Y METODOLOGIAS IMPLEMENTADAS ............................. 8

6.2 LENGUAJES, FRAMEWORKS Y LIBRERIAS IMPLEMENTADAS ................ 14

7 Descripción de las actividades realizadas en la práctica ................................. 17

7.1 PLANIFICACION DE LA PRACTICA .............................................................. 17

7.2 ACTIVIDAD DE CAPACITACIÓN ................................................................... 19

7.3 MIGRACIÓN DE DEPENDENCIAS (XSHOP): ................................................ 20

7.4 IMPLEMENTACIÓN DE DISEÑO DE NUEVO PROYECTO AVAL

INMOBILIARIA (XPAGE) ....................................................................................... 22

7.5 NUEVOS MÓDULOS THE ACCOMPLISHED BRAIN .................................... 24

7.5.1 Módulo de registro de usuarios .......................................................... 24

7.5.2 Módulo de membresías ...................................................................... 26

7.5.3 Módulo de facturación ........................................................................ 27

8 DESARROLLO DE LA PRÁCTICA ................................................................. 28

Page 5: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

8.1 CONTEXTUALIZACIÓN DEL DESARROLLO DE LA PRÁCTICA .................. 28

8.2 APLICACIÓN DE METODOLOGÍA DE DESARROLLO .................................. 28

8.2.1 Scrum ................................................................................................. 28

8.2.2 Git y GitLab ........................................................................................ 29

9 RESULTADOS OBTENIDOS .......................................................................... 32

9.1 IMPACTO AL PRACTICANTE ........................................................................ 32

9.2 IMPACTO A ELEMENTAL LAB S.A.S ............................................................ 32

10 CONCLUSIONES ............................................................................................ 34

11 RECOMENDACIONES ................................................................................... 35

12 REFERENCIAS ............................................................................................... 36

Page 6: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

FIGURAS

Pág.

Fig 1 – Organigrama de Elemental Lab S.A.S ......................................................... 3

Fig 2 – Secciones Git ............................................................................................. 12

Fig 3 – Cursos de React y Django suministrados por la empresa ......................... 19

Fig 4 – Archivos generados por webpack 1.15.0 ................................................... 21

Fig 5 – Archivos generados por webpack 5.15.0 ................................................... 21

Fig 6 – Mockups Aval inmobiliaria .......................................................................... 22

Fig 7 – Diseño final Aval Inmobiliaria ..................................................................... 23

Fig 8 – Sign Up - Clinic Manager ........................................................................... 24

Fig 9 – Sign Up – Therapist ................................................................................... 25

Fig 10 – Login - The Accomplished Brain .............................................................. 25

Fig 11 – Módulo de membresías – sin membresía activa ...................................... 26

Fig 12 – Módulo de membresías – membresía activa ........................................... 26

Fig 13 – Ejemplo de sistema de board empleado por la empresa ......................... 30

Fig 14 – Ejemplo de merge request empleado por la empresa ............................. 31

Page 7: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

TABLAS

Pág.

Tabla 1 – Cronograma de actividades primer trimestre ......................................... 17

Tabla 2 – Cronograma de actividades segundo trimestre ...................................... 18

Page 8: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

RESUMEN

Este documento tiene como finalidad reflejar el desarrollo de las prácticas profesionales realizadas en la empresa Elemental Lab S.A.S, en la cual se emplean los conocimientos adquiridos en la carrera profesional como ingeniero en sistemas y telecomunicaciones en el área de desarrollo de software, con el objetivo de brindar apoyo en los procesos de desarrollo, migración y soporte de aplicaciones desarrolladas.

Con ello se busca expresar todo lo realizado en un ambiente profesional a nivel técnico y tecnológico desde un enfoque de desarrollo de software de principio a fin, reflejando cada una de las actividades realizadas, el impacto generado a lo largo de esta experiencia y el método empleado para el desarrollo de estas.

Finalmente se analiza el resultado obtenido de la experiencia, brindando una conclusión y recomendaciones para futuros procesos de prácticas profesionales.

SUMMARY

This document reflects the development of the professional practices that are carried

out in the company Elemental Lab SAS, in which the knowledge acquired in the

professional career as a systems and telecommunications engineer in the area of

software development is used, in order to provide support in the development

processes, migration and support of developed applications.

This seeks to capture everything done in a professional environment at a technical

and technological level from a software development approach from start to finish,

reflecting each of the activities carried out, the impact generated throughout this

experience and the method used. for the development of these.

Finally, the result obtained from the experience is analyzed, providing a conclusion

and recommendations for future professional practice processes.

Page 9: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

1

1 INTRODUCCIÓN

En el presente documento se realiza el seguimiento del trabajo aplicado a lo largo del proceso de prácticas profesionales que la Universidad Católica de Pereira brinda como posibilidad a sus futuros egresados con el fin de permitir aplicar los conocimientos y habilidades adquiridas en el transcurso de la carrera de Ingeniería en Sistemas y Telecomunicaciones, en un ambiente empresarial, como parte final de su formación académica.

Con base en lo anterior, en Pereira, Risaralda, existe una compañía llamada Elemental Lab S.A.S, la cual está enfocada en realizar procesos de desarrollo e innovación a través de la creación de nuevos productos basados en la codificación de Software. Dicha empresa se estableció como escenario para llevar a cabo el desarrollo de la práctica profesional a largo de 6 meses a partir del 21 de diciembre del año 2020.

La estructura de este documento busca abordar todos los temas correspondientes al desarrollo de la práctica en sus etapas de elaboración. En primera instancia se realiza un proceso de observación, investigación y análisis al escenario de prácticas iniciando con la “Descripción del escenario de prácticas”. Para la segunda parte, se detalla las “actividades técnicas realizadas en el entorno laboral”; lo cual hace referencia a todo el marco profesional aprendido en el entorno académico aplicado en un escenario laboral. Finalmente, la tercera parte consta de los resultados obtenidos, conclusiones y recomendaciones que se obtuvieron a través del desarrollo de la práctica profesional y el despliegue de este documento.

Page 10: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

2

2 DESCRIPCIÓN DEL ESCENARIO DE PRÁCTICA

Elemental Lab S.A.S es una compañía creada en el año de 2006 la cual está ubicada en la dirección Manzana 30 Casa 32 B. Corales, en la ciudad de Pereira, en la región del eje cafetero colombiano, enfocada en brindar soluciones mediante aplicaciones web, empleando la investigación, análisis y creatividad de sus miembros para lograr eficiencia, calidad y una continua evolución de sus productos. Es allí donde se aplicaron todos los conocimientos adquiridos en el proceso académico.

La empresa cuenta con un pequeño equipo de desarrollo conformado por dos programadores centrales, los cuales están a cargo de los aspectos técnicos de los proyectos de desarrollo de aplicaciones web, soporte al proyecto de prácticas profesionales y realizando seguimiento al proceso de nivelación y adaptación al entorno laboral.

El escenario de prácticas profesionales en la empresa está enfocado en el área de desarrollo de aplicaciones web con labores distribuidas entre Back-End y Front-End en los proyectos internos y externos de la empresa, esto con el fin de lograr un mayor dominio como profesional en ambos apartados del desarrollo de software.

En dicho escenario el diseñador industrial Carlos Mario Cortés director de proyectos de la empresa es el tutor encargado y aquel que asigna las actividades y proyectos a desarrollar.

Actualmente la modalidad de trabajo de la empresa es de carácter 100% virtual debido a la crisis presentada en el año 2020 por la pandemia de coronavirus, es por ello por lo que respetando los protocolos de bioseguridad las prácticas profesionales serán realizadas bajo esta misma modalidad.

2.1 MISIÓN

Elemental Lab S.A.S, es una empresa dedicada a servir y a entregar soluciones de

software empaquetadas y personalizadas a sus clientes a nivel nacional e

internacional; con un equipo humano comprometido, con alto sentido de

responsabilidad profesional, humana y social, con tecnologías de avanzada, calidad

y cumplimiento, que ve en la integración de nuevas tecnologías la oportunidad de

engrandecer a Colombia.

Page 11: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

3

2.2 VISIÓN

En el año 2030, Elemental Lab S.A.S tendrá espacio físico para el desarrollo de

actividades relacionadas con su misión, se espera contar con 1500 m2 con

instalaciones completamente ecológicas, con más de 100 parqueaderos de carros,

un centro de experiencias para clientes y curiosos, que permite divertirse y vivir el

uso de las aplicaciones y desarrollos de la empresa.

Es el centro de negocios, desarrollo, e investigación más grande del eje cafetero en

lo que respecta al software y negocios online, cuenta con una recepción impactante

a la vista por su tecnología y diseño, dentro del edificio hay un parque natural de

200 m2 donde se podría descansar, tomar tiempo de ocio, un picnic o solo disfrutar,

y está para todos los integrantes de Elemental; de igual manera se tiene una sección

de lombricultura y reciclaje orgánico, que son el mismo abono y tierra para los

cultivos orgánicos de las mismas semillas de los desechos, este tiene un espacio

de 100 m2.

2.3 ORGANIGRAMA

En la siguiente figura (Fig 1), se plasma la estructura interna de la empresa mediante

el uso de un organigrama.

Fig 1 – Organigrama de Elemental Lab S.A.S [1]

Page 12: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

4

3 DESCRIPCIÓN ÁREAS DE INTERVENCIÓN

Para el desarrollo de las prácticas profesionales, desde la Universidad Católica de Pereira se realizó un convenio con la empresa Elementa Lab S.A.S que tuvo como objetivo principal apoyar por medio de codificación de software el área de desarrollo. Esta área es la encargada de gestionar, administrar y controlar todo el ciclo de vida a nivel de codificación de un proyecto en desarrollo de software.

Actualmente, la empresa cuenta con varios proyectos internos activos, los cuales se encuentran en un continuo desarrollo. Para estar en la vanguardia con la competencia, se busca siempre emplear las mejores y más actualizadas tecnologías para brindar una mejor experiencia a los clientes.

La intervención realizada en las prácticas profesionales se enfoca en cubrir los siguientes aspectos descritos a continuación.

3.1 ACTUALIZACIÓN Y MEJORA DE PROYECTOS INTERNOS ACTIVOS El escenario de prácticas profesionales se enfoca en los siguientes proyectos internos de Elemental Lab, y proyectos de externos desarrollados con React, Django y PostgreSQL.

3.1.1 Producto interno xShop: Es un proyecto que permite al usuario realizar diversas labores de administración y diseño de una tienda virtual, sus características principales son:

• Permite administrar la página de inicio de su tienda, banners principales con links a otras secciones o páginas y catálogos de productos o productos destacados.

• Administración de catálogos, productos y categorías, (soporta subcategorías).

• Administrador de stock de productos.

• Consola de pedidos, descripción completa de cada compra.

• Importador de tienda por medio de un archivo Excel.

• Dos precios disponibles por producto.

• Plataforma multi idioma.

• Soporte múltiples pasarelas de pago.

• Detección automática del país para cambio de divisa.

• Carrito de compras (único método de compra).

• Filtrado y orden en productos por precio, más vendido, etc.

Page 13: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

5

3.1.2 Producto interno xPage: Es un proyecto que permite administrar y diseñar una página web para el cliente en función de sus necesidades, se entrega diseño personalizado y cuentas de correo electrónico corporativas. Sus características principales son:

• Fácil gestión de galerías fotográficas, eventos, noticias, textos, archivos, banner, blogs, páginas de contacto y estadísticas de visitas.

• Crea y administra las secciones públicas y privadas.

• Sistema amigable con cualquier dispositivo celular, tablet o computador con un diseño web responsivo.

• Sistema amigable con Google para mejorar SEO.

3.2 DESARROLLO DE NUEVOS PROYECTOS Ejerciendo el rol de desarrollador de software en la empresa, se involucra no solo en los proyectos internos activos, sino también en las nuevas entregas dedicadas a nuevos clientes. En estos escenarios, se realiza un seguimiento constante y, adicionalmente, se es parte de la presentación y entrega del proyecto en cuestión una vez finalizado.

3.3 NECESIDADES ACTUALES DE LA EMPRESA Actualmente la empresa cuenta con un equipo reducido de programadores, lo cual ha llevado a dar más enfoque en la producción de nuevos proyectos para cumplir con las entregas pactadas con los clientes. Esto ha provocado una menor atención en el producto interno de la empresa, que requiere actualización de sus dependencias y mejoras de rendimiento más fieles a los estándares de web actuales.

Mediante la investigación de las tecnologías empleadas en la empresa para los diferentes proyectos internos, se ha logrado identificar archivos con un tamaño superior al recomendado por la documentación oficial, los cuales generan un impacto negativo a la hora de realizar la carga del contenido de la página web y requieren de la ejecución de procesos de migración y segmentación para lograr solucionarlo.

Page 14: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

6

4 JUSTIFICACIÓN

La ejecución de la práctica profesional le brinda una oportunidad no solo de fortalecer y poner a prueba los conocimientos adquiridos durante el proceso de formación como profesional en la Universidad Católica de Pereira, sino también permitiéndole adquirir experiencia profesional real en un entorno laboral apto que le permite enfrentarse a desafíos y demostrar sus capacidades.

Según la Ley 2043 de 2020 [2] y la Ley 2039 de 2020 [3] aprobadas por el congreso de la república de Colombia el 27 de julio de 2020, se reconocerá como experiencia profesional válida las prácticas y/o procesos relacionados que se hayan realizado en el sector público o privado como opción para adquirir el correspondiente título, siempre y cuando su contenido se relacione directamente con el programa académico cursado.

Esto es una gran noticia para los próximos graduados, ya que, como podemos observar en [4], uno de los bastiones más frecuentes a la hora de buscar empleo en jóvenes egresados de mayor nivel académico es el hecho de que una gran cantidad de estos se dedicaron por completo a sus estudios y no cumplen con ningún tipo de experiencia laboral que puedan ofrecer a las empresas contratantes.

De igual forma, la empresa que presta su entorno laboral como campo de prácticas profesionales y la institución educativa también cuenta con algunas ventajas a destacar como se analizó en [5], entre las cuales podemos mencionar algunas: se proporciona a los empleadores referencias reales para poder medir su desempeño y así crear un importante ahorro en los costos de contratación, se mejora la relación entre la universidad y la comunidad empresarial, y además, otras asociaciones empresariales forjadas entre las universidades y los empleadores pueden servir como catalizador para la cosecha de profesionales más eficientes con un mejor desempeño.

Page 15: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

7

5 OBJETIVOS

5.1 OBJETIVO GENERAL

Apoyar los procesos de desarrollo, migración y soporte de aplicaciones

desarrolladas en la empresa Elemental Lab S.A.S.

5.2 OBJETIVOS ESPECÍFICOS

• Concluir satisfactoriamente las capacitaciones brindadas por la empresa

acerca de las herramientas y tecnologías aplicadas en la implementación de

los proyectos desarrollados.

• Apoyar los procesos de desarrollo y mantenimiento de los sistemas de información de Elemental Lab.

• Apoyar el proceso de soporte a usuarios finales de los sistemas de información de Elemental Lab S.A.S.

Page 16: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

8

6 MARCO TEÓRICO

Para la elaboración de las prácticas profesionales se emplea una serie de

metodologías y herramientas necesarias para desempeñar sus funciones

correctamente en la empresa.

6.1 HERRAMIENTAS Y METODOLOGÍAS IMPLEMENTADAS

Visual Studio Code

Visual Studio Code es un editor de código fuente ligero pero potente que se ejecuta

en su escritorio y está disponible para Windows, macOS y Linux. Viene con soporte

integrado para JavaScript, TypeScript y Node.js y tiene un rico ecosistema de

extensiones para otros lenguajes (como C ++, C #, Java, Python, PHP, Go) y

tiempos de ejecución (como .NET y Unity). [6]

Una de las principales características que hacen decantarse hacia la elección de

este editor es la amplia cantidad de extensiones con las que cuenta, que crecen

cada día al tener una comunidad muy activa y dedicada. [6]

Metodología ágil:

Cuando se reduce a lo básico, el modelo ágil tiene relación con agilizar el flujo de

trabajo y crear un equipo ágil capaz de manejar los requisitos siempre cambiantes.

Ser capaz de adaptarse, cambiar y crecer, se da prioridad a pruebas rigurosas,

aprobaciones y planificación, lo que puede obstaculizar la eficacia del proceso de

desarrollo. [7]

Los objetivos del modelo ágil incluyen

• Mejorar la satisfacción del cliente.

• Ser adaptable y abierto al cambio.

• Cooperación en equipos de desarrollo.

• Creación eficiente de software de trabajo.

• Racionalización del proceso de desarrollo.

• Lanzamiento de productos y actualizaciones más rápido. [7]

Page 17: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

9

Scrum

La empresa emplea una de las metodologías ágiles más populares en el desarrollo de proyectos, la metodología Scrum. Según [8], Scrum es el nombre con el que se denomina a los marcos de desarrollo ágiles caracterizados por:

• Adoptar una idea total de la realización del producto, en lugar de la planificación y ejecución completa del producto.

• Enfocarse más en las zonas de solapamiento, en lugar de realizar una tras otra en un ciclo de cascada.

Los principios de la metodología scrum son:

• Concentración.

• Priorización.

• Autoorganización.

• Ritmo.

“Con la metodología Scrum el cliente se entusiasma y se compromete con el

proyecto dado que lo ve crecer parte por parte. Asimismo, le permite en cualquier

momento realinear el software con los objetivos de negocio de la empresa, ya que

puede introducir cambios funcionales o de prioridad en el inicio de cada nueva

iteración sin ningún problema.” [8],

Esta forma de trabajo promueve la motivación y compromiso del equipo que forma

parte del proyecto, por lo que los profesionales encuentran un ámbito propicio para

desarrollar sus capacidades.

Los principales beneficios encontrados al aplicar esta metodología son:

• El cliente puede empezar a utilizar los resultados más importantes del proyecto antes de que esté finalizado por completo.

• El cliente establece sus expectativas indicando el valor que le aporta cada requisito

• Reducción de riesgos

• Predicciones de tiempos

• Mayor productividad [8]

Page 18: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

10

Webpack

Webpack se define como un empaquetador de módulos (un bundler en la jerga

habitual) pero que hace muchísimas cosas más:

• Gestión de dependencias

• Ejecución de tareas

• Conversión de formatos

• Servidor de desarrollo

• Carga y uso de módulos de todo tipo (AMD, CommonJS o ES2015)

Y esto último es lo que hace que destaque en especial. Es una herramienta

extremadamente útil cuando desarrollas aplicaciones web diseñadas con filosofía

modular, es decir, separando el código en módulos que luego se utilizan como

dependencias en otros módulos. Una de las cosas que hace realmente bien

Webpack es la gestión de esos módulos y de sus dependencias, pero también

puede usarse para cuestiones como concatenación de código, minimización y

ofuscación, verificación de buenas prácticas (linting), carga bajo demanda de

módulos, etc...

Una de las muchas cosas interesantes de Webpack es que no solo el código

JavaScript se considera un módulo. Las hojas de estilo, las páginas HTML e incluso

las imágenes se pueden utilizar también como tales, lo cual da un extra de potencia

muy interesante.

Webpack se puede considerar como un Task Runner muy especializado en el

procesamiento de unos archivos de entrada para convertirlos en otros archivos de

salida, para lo cual utiliza unos componentes que se denominan loaders. [9]

Babel

“Babel es una herramienta que nos permite transformar nuestro código JS de última

generación (o con funcionalidades extras) a un código de Javascript que cualquier

navegador o versión de Node.js pueda entender.

Babel funciona mediante plugins para que le indiquemos que cosas queremos que

transforme, por ejemplo, con el plugin babel-plugin-transform-es2015-arrow-

functions podemos decirle que transforme las arrow functions de ECMAScript 2015

a funciones normales, con babel-plugin-transform-react-jsx podemos hacer que

entienda código de JSX y lo convierta a código JS normal.” [10]

Page 19: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

11

Stylus

“Stylus es un pre-procesador de CSS que nace de la necesidad de optimizar

nuestras hojas de estilo. Gracias a sus características y funcionalidades, podemos

eliminar las limitaciones que trae consigo CSS y olvidarnos de esas tareas

repetitivas, complejas y frustrantes a las que estábamos acostumbrados.

Las principales características de stylus son:

• Ofrece todas las capacidades de un pre-procesador estándar

• Paréntesis, llaves, comas, puntos y comas son opcionales

• Uso de variables

• Mixins y una librería llamada nib que hace más poderosa esta función

• Uso de funciones

• Funciones aritméticas

• Selectores anidados

• Compresión de CSS

• JavaScript API [11]

Git

Git es un sistema de control de versiones distribuido de código abierto y gratuito

diseñado para manejar desde proyectos pequeños a muy grandes, con velocidad y

eficiencia. Es por ello por lo que poco a poco se fue convirtiendo en una herramienta

imprescindible para desarrollar código en equipos de trabajo.

Tal y como se puede encontrar en [12], Git almacena y maneja la información de

forma muy diferente a otros sistemas, esto gracias a las características particulares

que posee.

• “Copias instantáneas, no diferencias: Conceptualmente, la mayoría de los otros sistemas almacenan la información. Git no maneja ni almacena sus datos de esta forma. Git maneja sus datos como un conjunto de copias instantáneas de un sistema de archivos miniatura. Cada vez que confirmas un cambio, o guardas el estado de tu proyecto en Git, él básicamente toma una foto del aspecto de todos tus archivos en ese momento y guarda una referencia a esa copia instantánea.

• Casi todas las operaciones son locales: La mayoría de las operaciones en Git sólo necesitan archivos y recursos locales para funcionar. Por lo general no se necesita información de ningún otro computador de tu red.” [12]

Git tiene tres estados principales en los que se pueden encontrar tus archivos:

confirmado (committed), modificado (modified), y preparado (staged).

Page 20: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

12

• “Confirmado: Significa que los datos están almacenados de manera segura en tu base de datos local.

• Modificado: Significa que has modificado el archivo, pero todavía no lo has confirmado a tu base de datos.

• Preparado: Significa que has marcado un archivo modificado en su versión actual para que vaya en tu próxima confirmación.” [12]

Esto nos lleva a las tres secciones principales de un proyecto de Git: El directorio

de Git (Git directory), el directorio de trabajo (working directory), y el área de

preparación (staging area). En la figura (Fig 2) se puede apreciar las secciones

empleadas en Git

Fig 2 – Secciones Git [12]

• “El directorio de Git: Es donde se almacenan los metadatos y la base de datos de objetos para tu proyecto. Es la parte más importante de Git, y es lo que se copia cuando clonas un repositorio desde otra computadora.

• El directorio de trabajo: Es una copia de una versión del proyecto. Estos archivos se sacan de la base de datos comprimida en el directorio de Git, y se colocan en disco para que los pueda usar o modificar.

• El área de preparación: Es un archivo, generalmente contenido en tu directorio de Git, que almacena información acerca de lo que va a ir en tu próxima confirmación. “[12]

Page 21: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

13

El uso de ramas en un proyecto es un elemento muy destacable en el uso de Git,

permitiendo tomar la rama principal de desarrollo (master) y a partir de ahí se

continuar trabajando sin seguir la rama principal de desarrollo.

La forma en la que Git maneja las ramificaciones es increíblemente rápida, haciendo

así de las operaciones de ramificación algo casi instantáneo.

GitLab

Una vez realizado el acercamiento Git, se utilizará GitLab (sistema de alojamiento

de repositorios de Git) para el manejo de las versiones de los proyectos

desarrollados. Existen muchos sistemas similares a este, sin embargo, GiLab

suministra una serie de herramientas muy interesantes a los equipos de desarrollo

que la emplean.

Para abordar las características de GitLab, se realizará un recorrido por algunas de

sus funcionalidades.

• “Merge Request: Permiten controlar todas las solicitudes de combinación o

unión de código de distintas ramas. Es muy importante que los merges se

resuelvan mediante la interfaz gráfica, ya que ofrece muchas posibilidades

interesantes, como automatización de tests, la posibilidad de revisión de los

cambios por parte de componentes del equipo, implementar diversas

políticas de control sobre el código del proyecto, etc.

• Issues: Permite crear, visualizar y controlar los flujos de trabajo para la

resolución de los issues (errores), permitiendo definir las personas que deben

resolverla, el tiempo estimado y el usado, la fecha límite, el peso de las

tareas, etc.

En GitLab han publicado otra interesante innovación que es un tablero de

issues (Issue Boards), que permite visualizar las tareas, de una manera

similar a los boards de Trello. El gestor es capaz de definir los tableros y las

etiquetas, así como, actualizar el estado de las tareas, permitiendo visualizar

su evolución por medio de los tableros.

• CI/CD: Es una herramienta sencilla y muy útil para los procesos de

integración continua (CI) y despliegue continuo (CD). Existen muchas

herramientas que se pueden integrar para automatizar los procesos y llegar

a crear flujos de trabajo completamente automatizados.” [13]

Page 22: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

14

6.2 LENGUAJES, FRAMEWORKS Y LIBRERÍAS IMPLEMENTADAS

Finalmente se realizará un acercamiento a los lenguajes de programación,

frameworks y librerías empleadas a lo largo del desarrollo de la práctica académica.

Los presentados a continuación, son aquellos que la empresa emplea para el

desarrollo de todas sus aplicaciones web.

JavaScript

“JavaScript (JS) es un lenguaje de programación ligero, interpretado, o compilado

con funciones de primera clase. Si bien es más conocido como un lenguaje de

scripting (secuencias de comandos) para páginas web, y es usado en muchos

entornos fuera del navegador, tal como Node.js, Apache CouchDB y Adobe Acrobat.

JavaScript es un lenguaje de programación basada en prototipos, multiparadigma,

de un solo hilo, dinámico, con soporte para programación orientada a objetos,

imperativa y declarativa.” [14]

Python

“Python es un lenguaje de programación interpretado, multiparadigma y

multiplataforma usado, principalmente, en Big Data, AI (Inteligencia Artificial), Data

Science, frameworks de pruebas y desarrollo web. Esto lo convierte en un lenguaje

de propósito general de gran nivel debido a su extensa biblioteca, cuya colección

ofrece una amplia gama de instalaciones.

El lenguaje de programación Python se gestó durante las vacaciones de Navidad

de 1989, cuando el desarrollador holandés Guido van Rossum decidió escribir un

intérprete para el nuevo lenguaje de scripting que venía trabajando.

El lenguaje Python se caracteriza por ser simple, rápido y tener una curva de

aprendizaje amigable y corta. Está desarrollado bajo una licencia de código abierto,

por lo que es de libre uso y distribución.” [15]

Page 23: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

15

React

React es una herramienta desarrollada por Facebook, muy utilizada por su

versatilidad y la cual cuenta con gran confianza por parte de la comunidad.

Según [16], React es una librería JavaScript focalizada en el desarrollo de interfaces

de usuario. Así se define la propia librería y evidentemente, esa es su principal área

de trabajo. Sin embargo, lo cierto es que en React encontramos un excelente aliado

para hacer todo tipo de aplicaciones web, SPA (Single Page Application) o incluso

aplicaciones para móviles. Para ello, alrededor de React existe un completo

ecosistema de módulos, herramientas y componentes capaces de ayudar al

desarrollador a cubrir objetivos avanzados con relativamente poco esfuerzo.

Por tanto, React representa una base sólida sobre la cual se puede construir casi

cualquier cosa con JavaScript. Además, facilita mucho el desarrollo, ya que nos

ofrece muchas cosas ya listas, en las que no necesitamos invertir tiempo de trabajo.

Su objetivo es desarrollar aplicaciones web de una manera más ordenada y con

menos código que si usas JavaScript puro o librerías como jQuery centradas en la

manipulación del DOM (Document Object Model). Permite que las vistas se asocien

con los datos, de modo que, si cambian los datos, también cambian las vistas.

“En comparación con librerías sencillas como jQuery, React aporta una serie de

posibilidades muy importantes. Al tener las vistas asociadas a los datos, no

necesitamos escribir código para manipular la página cuando los datos cambian.

Esta parte en librerías sencillas es muy laboriosa de conseguir y es algo que React

hace automáticamente. “[16]

Django

Django es uno de los frameworks en los cuales más experiencia ha acumulado la

empresa a lo largo del tiempo, ya que en su etapa inicial era empleado para el

desarrollo total de los proyectos, actualmente se emplea para el desarrollo en

backend de los mismos.

Según [17] Django es un framework web diseñado para realizar aplicaciones de

cualquier complejidad en unos tiempos muy razonables.

Está escrito en Python y tiene una comunidad muy amplia, que está en continuo

crecimiento.

En programación hace referencia a una serie de herramientas con las que puedes

construir algo más fácil y rápido con algún lenguaje de programación. Nos ayuda

Page 24: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

16

mucho pues tiene una serie de comandos que permiten crear módulos (o

miniaplicaciones) para dividir nuestro código y que este sea mantenible en el tiempo.

• “Administrador: Django cuenta con un administrador que viene activo por defecto donde se pueden con un par de líneas de código mostrar los modelos de las bases de datos y poder crear, editar, ver y eliminar registros.

• Formularios: Crear formularios en Django es muy sencillo y se pueden crear de dos formas, un formulario definiendo uno a uno los campos o usar un modelo de la base de datos. Django crea el formulario por nosotros.

• Rutas: El manejo de rutas hace que crear urls complejas sea sencillo de implementar. Django usa el poder de las expresiones regulares de Python para hacer este trabajo.

• Autenticación: Django provee un sistema de autenticación que permite que no nos preocupemos por crear un flujo de login y registro.

• Permisos: En Django se tiene control de los permisos a tal punto de decir que usuario puede o no crear, editar, ver y eliminar registros de un modelo especifico.

• Bases de Datos: Django cuenta con un ORM (Object Relational Mapper) que nos permite preocuparnos en la lógica de nuestra aplicación dejando al ORM la responsabilidad de la comunicación con la base de datos. Es compatible con los principales motores de bases de datos como PostgreSQL, MySQL, Oracle, SQLServer entre otros.

• Extensible: Django puede ser extendido fácilmente instalando paquetes adicionales para crear aplicaciones, una tienda, un blog o un API Restful. Se encuentran agrupados y ordenados en Django Packages.

• Comunidad: Django tiene una gran comunidad que encuentras siempre en los foros de ayuda y listas de correos.

• Documentación: Django tiene una documentación muy completa que te enseña con ejemplos de código como implementar cada una de sus características. “[17]

Page 25: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

17

7 DESCRIPCIÓN DE LAS ACTIVIDADES REALIZADAS EN LA PRÁCTICA

A lo largo del proceso de prácticas profesionales se realizan distintos tipos de

actividades en diversas áreas, capacitación, migración, desarrollo y diseño, las

cuales serán descritas a continuación

7.1 PLANIFICACIÓN DE LA PRÁCTICA

Con el fin de lograr un adecuado seguimiento de las actividades elaboradas, se

realiza un cronograma ligado a los proyectos y actividades desempeñadas en el

proceso de prácticas profesionales, dividido en dos trimestres. La tabla (Tabla 1),

refleja el período de inserción y la primera actividad realizada. La tabla (Tabla 2)

está centrada en su desempeño como desarrollador a lo largo de la práctica.

ACTIVIDADES

DICIEMBRE ENERO FEBRERO MARZO

Sem. 3 - Sem. 4 Sem.1- Sem. 2

Sem. 3-Sem. 4

Sem. 1-Sem. 2

Sem. 3- Sem. 4

Sem. 1-Sem. 2

Sem. 3-Sem. 4

CA

PA

CIT

AC

IÓN

Curso Django y Django rest framework

Curso React Js + Redux + ES6

Capacitación de metodologías de la

empresa

MIG

RA

CIÓ

N

Consultar documentación oficial para la migración

Migración Webpack 1.13.2 a Webpack 5.15.0

Realizar pruebas y entrega

Consultar documentación oficial para la migración

Migración Preact 6.3.0 a React 17.0.1

Realizar pruebas y merge request

Actualizar dependencias actualmente no

compatibles con la nueva versión de React

Tabla 1 – Cronograma de actividades primer trimestre

Page 26: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

18

ACTIVIDADES

ABRIL MAYO JUNIO

Sem. 1 - Sem. 2

Sem. 3 -Sem.4

Sem. 1 - Sem.2

Sem. 3 - Sem.4

Sem.1 - Sem. 2

TH

E A

CC

OM

PLIS

HE

D B

RA

IN

Análisis de los mockups suministrados por el director del proyecto

Implementación de diseño del módulo de registro de

usuario

Implementación funcional del módulo de registro de

usuario

Realización de pruebas y merge request

Implementación de diseño del módulo de membresías

Implementación funcional del módulo de membresías

Realización de pruebas y merge request

Implementación de diseño del módulo de facturación

Implementación funcional del módulo de facturación

Realización de pruebas y merge request

Tabla 2 – Cronograma de actividades segundo trimestre

Page 27: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

19

7.2 ACTIVIDAD DE CAPACITACIÓN

La primera etapa del proceso de capacitación se lleva a cabo por medio de dos

cursos virtuales en Udemy suministrados por la empresa, para la fortalecer o

adquirir conocimientos necesarios para brindar soporte y realizar procesos de

codificación en los frameworks y lenguajes de programación de Django y React

respectivamente (Fig 3).

Además del curso, se brinda un proceso de acompañamiento por parte de un

ingeniero de la empresa, para reducir la curva de aprendizaje en su proceso de

nivelación y apropiación de las tecnologías y metodologías empleadas por la

empresa.

Fig 3 – Cursos de React y Django suministrados por la empresa [18]

¿Por qué se realizó?

Un punto fundamental en el proceso de integración de un nuevo miembro de un

equipo de desarrollo es generar un proceso de adaptación efectivo y eficiente, en el

cual se permita obtener un mayor domino de las herramientas necesarias para

cumplir su labor y un entendimiento del modo de trabajo implementado por la

empresa.

Resultados

Los cursos fueron completados de manera satisfactoria y gracias al

acompañamiento brindado por la empresa, fue posible una integración en las

labores diarias de la compañía, tanto en las tareas relacionadas al desarrollo, como

la gestión de tiempos, reuniones laborales y metodologías empleadas por la

empresa.

Page 28: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

20

7.3 MIGRACIÓN DE DEPENDENCIAS (XSHOP):

Una vez finalizada la etapa de capacitación se da inicio a uno de los procesos de

mejora del producto interno de la empresa, el cual busca actualizar la versión de la

dependencia de Webpack (empaquetador de módulos) 1.13.2 a su versión más

actualizada Webpack 5.15.0 y la migración de Preact (Alternativa ligera y

simplificada de React) 6.3.0 a una dependencia más completa como es React

17.0.1. Esta actividad se realiza en uno de los proyectos principales xShop.

¿Por qué se realizó?

Parte de la filosofía de la empresa es crear productos que brinden a los clientes un

producto seguro, eficiente y en continuo crecimiento. Debido a ello, se tomó la

decisión de invertir tiempo de desarrollo en el producto interno.

En el caso de xShop las dependencias se encontraban en una versión

desactualizada, lo cual generaba resultados poco óptimos y menos amigables de

cara al cliente. En este escenario se realiza un enfoque en dos de las dependencias

del proyecto Webpack y Preact.

En el caso de Webpack, al tratarse de una versión desactualizada, emplea algunos

métodos obsoletos en el proceso de reducción y administración de recursos del

sistema. Esto afecta negativamente el rendimiento al generar archivos de gran

tamaño los cuales deben ser descargados por el cliente final, lo que provoca largos

tiempos de espera para que el cliente pueda visualizar los productos, propiciando la

búsqueda de otro servicio o fuente más cómoda.

Por otra parte, Preact, implementado en el sistema en una etapa inicial y con

algunas limitaciones. Es de fácil manejo y cuenta con una librería de un tamaño

reducido que permite una mejora en el rendimiento. Conforme el proyecto fue

creciendo y las necesidades de este variaron, se busca emplear React permitiendo

aplicar todas las ventajas del DOM virtual (Modelo de objeto de documento) y

mejorar la compatibilidad con nuevos componentes en desarrollo.

Resultados

Realizar un proceso de migración a las dependencias de un proyecto conlleva una

inversión por parte de la empresa en tiempo y desarrollo. Con el fin de lograr una

integración óptima y eficiente sin llegar a afectar las funcionalidades presentes

previamente en el proyecto se requiere un apoyo solido en la documentación oficial

de las herramientas empleadas.

Page 29: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

21

El proceso fue completado de forma satisfactoria, provocando una mejoría en el

tiempo de carga de la aplicación al reducir los archivos generados por Webpack de

5,5MB como se evidencia en la figura (Fig 4). Estos debían ser descargados por el

cliente y actualmente han quedado reducidos a 1.78MB tal como se observa en la

figura (Fig 5), debido no solo a la nueva comprensión de Webpack 5.15.0, sino a la

identificación de una mejora al realizar la integración de los puntos de entrada

global.js y product.js en un solo punto de entrada global.js

Fig 4 – Archivos generados por webpack 1.15.0

Fig 5 – Archivos generados por webpack 5.15.0

Page 30: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

22

7.4 IMPLEMENTACIÓN DE DISEÑO DE NUEVO PROYECTO AVAL INMOBILIARIA (XPAGE)

Se realizo el primer acercamiento a un proyecto en producción, con un contacto

directo con el cliente y empleando el producto interno de la compañía xPage. Para

la realización de este desarrollo el del director de proyectos suministra los diseños

del medio de un mockup acordado previamente con el cliente, el cual puede

observarse en la figura (Fig 6). Además, junto con el ingeniero Jhon Valero se

establecen los requerimientos y funcionalidades necesarias para dar inicio al

desarrollo.

Fig 6 – Mockups Aval inmobiliaria

Page 31: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

23

¿Por qué se realizó?

La empresa Aval Inmobiliaria busca implementar una aplicación web que le permita

dar a conocer sus servicios, tener un contacto más directo con sus clientes, facilitar

la búsqueda de inmuebles mediante un sistema que permita visualizar los inmuebles

más recientes y filtrar sus inmuebles por habitaciones, baños, características y

ubicación. Adicionalmente, busca obtener un sistema que permita la administración

digital de los documentos solicitados por parte de la inmobiliaria al arrendador y el

arrendatario

Resultados:

El proyecto está actualmente en producción en la dirección web

https://avalinmobiliaria.com.co/ con el diseño observable en la figura (Fig 7). Durante

el proceso de entrega, se presentaron inconvenientes debido a requerimientos

nuevos solicitados por cliente por fuera de lo pactado y los cuales fueron

establecidos por parte del director del proyecto como desarrollo adicional a futuro.

Fig 7 – Diseño final Aval Inmobiliaria [19]

Page 32: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

24

7.5 NUEVOS MÓDULOS THE ACCOMPLISHED BRAIN

The Accomplished Brain es una organización con sede en estados unidos que

emplea una aplicación móvil para brindar el acompañamiento profesional y

actividades terapéuticas para personas con problemas neurológicos. Elemental Lab

les brinda un sistema para gestionar los aspectos administrativos.

Hasta el momento el proceso de asignación, seguimiento y gestión de membresías,

la creación de clínicas, gerentes de clínicas y terapeutas de la compañía debían ser

realizados de forma directa por el módulo de administración y debido a ello el pago,

gestión y seguimiento de las membresías se realiza de forma completamente

manual. Para solucionar estos inconvenientes se lleva a cabo el desarrollo de los

modulos que se describen a continuación.

7.5.1 Módulo de registro de usuarios: Se emplea Django-allauth (Función integrada de Django para manejar la autenticación y registro de cuentas de usuarios) para brindar manejo al registro y sesión de las cuentas de usuario en el proyecto; también brindando campos dinámicos en función del tipo de usuario seleccionado.

Fig 8 – Sign Up - Clinic Manager

Page 33: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

25

Fig 9 – Sign Up – Therapist

Y su respectivo acceso desde la página de inicio de sesión de The

Accomplished Brain.

Fig 10 – Login - The Accomplished Brain

Page 34: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

26

7.5.2 Módulo de membresías: Se establece el desarrollo de un nuevo módulo dedicado al manejo de las membresías de la empresa. Estas deben ser dinámicas y el módulo debe permitir su gestión, creación y visualización.

El componente de membresías debe poder ser implementada como

iframe en una página externa de ser necesario; en caso de no tener

una sesión activa, el cliente será enviado directamente al módulo de

registro de usuario.

Fig 11 – Módulo de membresías – sin membresía activa

Fig 12 – Módulo de membresías – membresía activa

Page 35: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

27

Adicionalmente, se realizaron cambios en el sistema de creación de

membresías para adaptarse a los nuevos requerimientos presentados,

permitiendo la implementación de nuevos campos y la posibilidad de

elegir qué membresías podrán ser visualizadas por el usuario.

7.5.3 Módulo de facturación: Finalmente se da inicio al proceso de desarrollo de un nuevo módulo para realizar el proceso de administrar, visualizar y mantener una trazabilidad de las facturas generadas por cada suscripción a una membresía.

El recibo de pago debe mostrar todos los puntos necesarios para la

correcta comprensión del pago, descuento, impuesto, subtotal y valor

total. Además, se implementa la posibilidad de descargar una factura

en formato PDF empleando una librería de Django llamada

Weasyprint, la cual permite generar un diseño en formato PDF

mediante una plantilla HTML previamente desarrollada.

Page 36: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

28

8 DESARROLLO DE LA PRÁCTICA

Para abordar este apartado del documento, se plasma detalladamente todo lo relacionado a nivel técnico y tecnológico que se debe realizar en las labores cotidianas en el ambiente laboral.

8.1 CONTEXTUALIZACIÓN DEL DESARROLLO DE LA PRÁCTICA

Elemental Lab es una pequeña empresa con una amplia experiencia en el campo

del desarrollo de aplicaciones web que cuenta con proyectos muy sólidos y bien

establecidos y clientes que confían en sus productos, pero que debido a diversos

inconvenientes ocurridos en el año 2020 su equipo de trabajo se vio reducido, con

dos deserciones laborales muy recientes, las cuales les ocasionaron grandes

dificultades para lograr cumplir como se tenía previsto las entregas pactadas,

teniendo que descuidar en el proceso el producto interno para lograr esa meta.

Es por esto, que el proceso de prácticas profesionales se vio más centrado en el

producto interno.

8.2 APLICACIÓN DE METODOLOGÍA DE DESARROLLO

En el proceso de práctica profesional se realizó un enfoque exclusivo en el

escenario de desarrollo de software. En dicho escenario el diseñador industrial

Carlos Mario Cortés, el tutor de la práctica, suministraba los mockups del diseño a

implementar y el ingeniero Jhon Valero, el miembro con más experiencia en

desarrollo en la empresa, fue el encargado del acompañamiento y revisión del

código y la lógica empleados. Por lo tanto, en este punto se aborda la

implementación correspondiente a lo largo de las prácticas, dividiéndolas en las

herramientas y tecnologías empleadas.

8.2.1 Scrum: El equipo realiza reuniones de lunes a viernes a las 8:00 AM y todos los miembros de la empresa participan en la reunión. Esto con el fin de mantener total transparencia en los proyectos y brindar los puntos de vista de todas las áreas de conocimiento posibles.

Al ejercer la práctica profesional en una modalidad virtual y respetando

uno de los estándares de Scrum de mantener siempre el mismo punto

de reunión. Se designó un enlace único a todos los miembros de la

empresa mediante Google Calendar, el cual es empleado para la

realización de esta.

Page 37: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

29

El rol por desempeñar dentro de la metodología en el proceso de

prácticas profesionales es como miembro del scrum team o equipo de

desarrollo, participando de forma activa en las reuniones, indicando

los puntos destacables, inconvenientes presentados y brindando

apoyo a los compañeros en el desarrollo de sus actividades.

El primer día de cada semana se establece un spring a realizar a lo

largo de la misma, ligado a un proyecto nuevo, una actualización o un

soporte, y cada día se establecen los hitos que deben realizarse con

fin de completarlo satisfactoriamente. Estos suelen ser de un solo día,

pero pueden variar en su duración si así lo requieren.

Para facilitar el manejo de actividades y revisar los progresos se

emplea el sistema de boards brindado por GitLab

8.2.2 Git y GitLab: Git es una de las herramientas más empleadas en el día a día de la empresa, brindando la capacidad de crear y cambiar las distintas ramas del proyecto al realizar cada una de las actividades asignadas y permitir al líder del proyecto realizar una trazabilidad del trabajo realizado.

En la empresa se manejan las siguientes recomendaciones a la hora

de emplear las diversas funciones de Git:

• Los nombres de las ramas son siempre en inglés.

• Cada commit debe estar apropiadamente comentado, de igual forma debe redactarse en inglés y debe ser muy conciso.

• Los nombres de las ramas deben ser asignadas en minúscula y separando las palabras mediante guiones.

• Solo debe realizarse el commit al finalizar una tarea puntual.

Por supuesto, Git por sí solo no permite una gestión apropiada para

un equipo de desarrollo es por ello por lo que cada miembro del equipo

posee una cuenta de GitLab y forma parte del repositorio empresarial.

Esto es necesario para poder interactuar con los proyectos de la

empresa y realizar una gestión apropiada de avances, cambios y

errores presentados.

Con el fin de integrar la metodología a la herramienta de GitLab se

emplea el sistema de boards suministrado por el mismo, con el fin de

manejar los distintos hitos establecidos en las reuniones, en los cuales

se asigna el responsable, el tiempo invertido y el tiempo estimado para

dicha actividad. Para realizar un fácil seguimiento de los progresos se

Page 38: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

30

emplea el siguiente sistema de etiquetas que reflejan las etapas del

desarrollo:

• Aquí estarán ubicadas todas las actividades a realizar, mejoras

y errores presentados en un proyecto.

• Work in progress: Aquí estarán ubicadas todas las actividades

en las cuales se están trabajando actualmente

• Pending revision: Una vez finalizada la actividad será ubicada

en este punto, con el fin de realizar una revisión del trabajo

realizado.

• Making corrections: En caso de presentarse algún

inconveniente en la etapa de revisión, la actividad será ubicada

en este apartado, con el debido comentario del porqué no paso

la revisión. Una vez realizada pasará nuevamente a la etapa de

revisión.

• Closed: Finalmente cuando la actividad se encuentra finalizada

y aprobada será ubicada en este punto.

Además, GitLab cuenta con un sistema que notificará al responsable

de cada actividad una vez se realice un cambio el cual se puede

observar en la figura (Fig 13).

Fig 13 – Ejemplo de sistema de board empleado por la empresa

Con el fin de preservar el correcto funcionamiento del proyecto los

desarrolladores no cuentan con permisos para realizar cambios en la

Page 39: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

31

rama master del repositorio, teniendo así que realizar un método

conocido en GitLab como merge request para solicitar al líder de

desarrollo la revisión de los cambios realizados y su posterior inclusión

en el proyecto principal.

Este paso es realizado en la etapa de pending revision y Git Lab nos

brinda una interfaz para realizar el proceso fácilmente, la cual puede

observarse en la figura (Fig 14), en la que podemos agregar al

encargado de la revisión y la rama con la cual queremos realizar el

proceso de unión.

Fig 14 – Ejemplo de merge request empleado por la empresa

Como paso adicional de seguridad, estas inclusiones son

implementadas en primera instancia en una rama secundaria idéntica

a la rama master para la realización de pruebas por parte del líder de

desarrollo y finalmente él será el encargado de aplicar los cambios al

proyecto principal.

Page 40: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

32

9 RESULTADOS OBTENIDOS

A lo largo de la práctica profesional se presentan muchas situaciones, obstáculos y experiencias que de una u otra forma impactan al proceso de prácticas y a la empresa. A continuación, se hará un acercamiento individual al impacto y crecimiento generado a lo largo de este proceso.

9.1 IMPACTO AL PRACTICANTE

Como primera experiencia profesional real ligada al campo laboral de ingeniería en sistemas y telecomunicaciones, se logra obtener resultados realmente satisfactorios, generando valiosas experiencias en el proceso.

Pese a que al inicio del proceso se presentan falencias en los conocimientos técnicos con respecto a los miembros actuales de la empresa en algunos de los lenguajes de programación, frameworks y metodologías empleadas, poco a poco esta brecha fue disminuyendo gracias al asesoramiento y capacitaciones brindadas. Con ello se logra finalmente una total inserción en las funciones de la empresa.

Es aquí donde se logra la experiencia más destacable, ser parte real de un equipo de desarrollo de una empresa completamente constituida, la cual cuenta con contratos nacionales e internacionales, logrando aprender el funcionamiento técnico del proceso de desarrollo de software y comprender el flujo de trabajo interno de una empresa completamente dedicada al mismo, en la cual, el trabajo en equipo y el desempeño de los roles que cumple cada campo del conocimiento son indispensables para generar un producto satisfactorio.

Gracias a ello, todas las actividades presentadas en puntos anteriores fueron concretadas de forma satisfactoria.

9.2 IMPACTO A ELEMENTAL LAB S.A.S

Como se menciona en el punto anterior, las prácticas profesionales son llevadas a cabo en un periodo en el cual la empresa pasa por ciertas dificultades. Esto debido al limitado número de desarrolladores y la reciente deserción de dos de ellos, permitiendo encontrar un nuevo apoyo para sus proyectos en las prácticas profesionales.

Una vez culminado el proceso de capacitación, la empresa permite emplear tiempo y recursos, al desarrollo, mantenimiento y actualización del proyecto interno xShop, ya que este se vio afectado por el paso del tiempo, reduciendo su capacidad competitiva en el mercado actual. Este proceso fue completado de forma satisfactoria permitiendo a la empresa mejorar su producto, sin dejar de generar

Page 41: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

33

nuevas soluciones de software mediante proyectos adicionales en los cuales se desempeñaban los demás miembros de la empresa.

Para finalizar, todo el proceso dio como resultado una buena relación laboral entre la empresa y el practicante, en la cual, se expresó por parte de ambas partes excelentes impresiones de todo el proceso, culminando en una propuesta laboral al practicante por parte de Elemental Lab S.A.S para formar parte de forma oficial de su equipo de desarrollo una vez finalizado la actividad académica.

Page 42: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

34

10 CONCLUSIONES

A lo largo de las prácticas profesionales se logró realizar un primer acercamiento al mundo laboral, permitiendo experimentar de primera mano cómo es trabajar como desarrollador de software en una empresa. Los puntos más destacables de la experiencia fueron:

• Enfrentarse a la falta de conocimiento y fortalecer el continuo deseo de siempre querer aprender, de buscar un conocimiento superior en cada paso para mejorar día a día como profesional.

• Mejorar el trabajo en equipo de desarrollo más amplio, dividir responsabilidades, organizar el trabajo y realizar cambios de forma consiente sin afectar el trabajo de otros.

• Enfrentarse a la entrega de un producto en producción, interactuando de forma directa con un cliente para realizar una muestra del producto a entregar.

• Compartir objetivos de trabajo con personas experimentadas en el campo los cuales facilitaron el proceso de aprendizaje, brindando apoyo en cada momento necesario.

A lo largo de las prácticas también se pudo identificar algunas falencias en los conocimientos adquiridos a lo largo de la carrera, que de una u otra forma limitaron el desempeño en las actividades:

• Realizar proyectos de desarrollo en equipos de trabajo más grandes.

• Manejo de servidores; desde el montaje, actualización y mantenimiento de estos, hasta la implementación en producción para aplicativos webs.

Para finalizar, es importante destacar el excelente papel que cumplió la empresa Elemental Lab en todo el proceso de prácticas profesionales, brindando un ambiente sano y estimulante, el cual permite emplear sus conocimientos y ampliarlos por medio del apoyo de sus integrantes; además de realizar una integración paulatina del practicante a las actividades de la empresa con retos acorde a su nivel.

Page 43: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

35

11 RECOMENDACIONES

A lo largo del proceso de prácticas, se estableció desde el inicio, puntos a cumplir por parte del departamento de prácticas profesionales, los cuales de igual forma debo destacar su predisposición a cada inconveniente surgido y su pronta respuesta a los mismos.

A pesar de ello, se presentaron algunas dificultades al establecer contacto en algunas ocasiones con el monitor asignado de prácticas, esto debido a que la carga estudiantil fue muy alta por cada docente evitando en ocasiones coincidir horarios de sesión de forma apropiada. Teniendo que en algunas ocasiones posponer sesiones de asesoría.

Recomendaría de ser posible, asignar más docentes al proceso de acompañamiento en el proceso de prácticas profesionales. Para muchos esta es la primera experiencia laboral a la que se exponen por lo cual son muchas las dudas que surgen a lo largo del proceso, tanto académicas como en estructura del informe a presentar. Además, el no establecer el desarrollo de ciertos apartados del informe de forma oportuna puede llevar a retrocesos en el proceso de este reescribiendo secciones completas o buscando información de la cual actualmente no se dispone.

Page 44: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

36

12 REFERENCIAS

[1] Elemental Lab, «Estrategia organizacional.pdf,» Pereira, 2012.

[2] CONGRESO DE LA REPUBLICA DE COLOMBIA, «Funcion Pública,» 27

Julio 2020. [En línea]. Available:

https://www.funcionpublica.gov.co/eva/gestornormativo/norma_pdf.php?i=13

7051. [Último acceso: 24 Mayo 2021].

[3] CONGRESO DE LA REPUBLICA DE COLOMBIA, «Funcion Pública,» 27

Julio 2020. [En línea]. Available:

https://www.funcionpublica.gov.co/eva/gestornormativo/norma_pdf.php?i=13

7230. [Último acceso: 24 Mayo 2021].

[4] F. J. D. L. Hoz, «El desempleo juvenil: problema de efectos,» Revista

Latinoamericana de Ciencias Sociales, Niñez y Juventud, vol. 10, nº 1, pp.

427-439., 2012.

[5] M. P. Gajardo, «Repositorio académico de la universidad de chile,» 2016.

[En línea]. Available:

http://repositorio.uchile.cl/bitstream/handle/2250/137649/Pr%C3%A1cticas%

20profesionales%20y%20su%20valor%20en%20el%20futuro%20desempe

%C3%B1o%20laboral.pdf?sequence=1&isAllowed=y. [Último acceso: 04

Junio 2021].

[6] Visual Studio Code, «Visual Studio Code,» Microsoft, [En línea]. Available:

https://code.visualstudio.com/docs. [Último acceso: 15 Junio 2021].

[7] Universidad Politécnica de Valencia, Metodologías Ágiles en el desarrollo de

software, Alicante – España: ISIS, 12 de noviembre 2003.

[8] I. Torras, «Scrum,» 30 Abril 2015. [En línea]. Available:

https://metodologiascrum.readthedocs.io/en/latest/Scrum.html. [Último

acceso: 04 Junio 2021].

[9] J. M. Alacon, «CampusMVP,» 10 Octubre 2017. [En línea]. Available:

https://www.campusmvp.es/recursos/post/webpack-que-es-para-que-sirve-y-

sus-ventajas-e-inconvenientes.aspx. [Último acceso: 2021 Junio 2021].

[10] Platzi, «Platzi,» 2017. [En línea]. Available: https://platzi.com/blog/que-es-

babel/. [Último acceso: 17 Junio 2021].

Page 45: APOYO EN LOS PROCESOS DE DESARROLLO, MIGRACIÓN Y …

37

[11] Platzi, «Platzi,» 2016. [En línea]. Available: https://platzi.com/blog/como-

instalar-stylus/. [Último acceso: 16 junio 2021].

[12] B. S. Scott Chacón, Pro Git, Apress , 2009.

[13] J. Torrado, «desarrolloweb,» 12 10 2017. [En línea]. Available:

https://desarrolloweb.com/articulos/introduccion-gitlab.html. [Último acceso:

04 Junio 2021].

[14] MDN Web Docs, «MDN Web Docs,» 19 Junio 2021. [En línea]. Available:

https://developer.mozilla.org/es/docs/Web/JavaScript. [Último acceso: 20

Junio 2021].

[15] Crehanna, «Crehanna,» 20 Mayo 2021. [En línea]. Available:

https://www.crehana.com/co/blog/web/que-es-python/. [Último acceso: 19

Junio 2021].

[16] M. A. D. D. G. Migel Angel Alvarez, «desarrrolloweb,» 04 Abril 2019. [En

línea]. Available: https://desarrolloweb.com/manuales/manual-de-react.html.

[Último acceso: 04 Junio 2021].

[17] Platzi, «Platzi,» 2018. [En línea]. Available: https://platzi.com/blog/django-el-

framework-para-desarrollo-web/. [Último acceso: 2021 Junio 04].