apoyo en los procesos de desarrollo, migraciÓn y …
TRANSCRIPT
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
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
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.
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
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
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
TABLAS
Pág.
Tabla 1 – Cronograma de actividades primer trimestre ......................................... 17
Tabla 2 – Cronograma de actividades segundo trimestre ...................................... 18
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.
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.
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.
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]
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.
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.
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.
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.
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]
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]
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]
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).
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]
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]
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]
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
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]
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
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
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.
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.
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
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
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]
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
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
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
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.
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.
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
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
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.
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
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.
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.
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.
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].
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].