¿Alguna vez te has preguntado cómo se distribuye o como funciona un departamento de TI? o ¿cuáles suelen ser los elementos involucrados en un proceso de desarrollo de software?

Pues en este post te los contamos de una forma sencilla bajo la perspectiva de nuestra compañía. Primero, daremos a conocer los diferentes departamentos técnicos que componen el área y los elementos que los conforman. Posteriormente, las diversas tecnologías y herramientas que empleamos en el día a día, el proceso que se realiza desde el inicio de un proyecto hasta su fin y algunos de los casos de éxito que hemos tenido el gusto de llevar a cabo tratando de exponer siempre los retos que hemos tenido y tenemos que superar constantemente.

Departamento de TI

La siguiente imagen muestra los diferentes elementos que componen nuestro departamento de TI. De arriba hacia abajo, poseemos un Jefe de Tecnología (Chief Technology Officer o CTO) el cual se encarga de tomar las decisiones finales en cuanto a tecnología y vela por cada uno de los proyectos que se desarrollan. El Jefe de Desarrollo (Head Of Development) que figura como la mano derecha del CTO y se involucra mano a mano con los desarrolladores. Y luego, los diferentes departamentos, en donde cada uno, posee un referente técnico conocido como Líder de Tecnología (Tech Lead) y un conjunto de desarrolladores los cuales se dividen por su experiencia y habilidades.

Tecnologías y herramientas

Dentro de cada departamento se emplean diferentes tecnologías y herramientas las cuales tratamos de mantener actualizadas, siempre y cuando cumplan un conjunto de condiciones que aseguren su estabilidad, a continuación listamos las más relevantes:

Android

  • Entorno de desarrollo Android Studio
  • Soporte a partir Android 4.1
  • Java y XML

IOS

  • Entorno de desarrollo XCode
  • Soporte actual y anterior (en estos momentos IOS 9 y 10)
  • Objective-C y Swift

Cross-Platform

  • Ionic
  • React Native
  • Unity

Web

  • Angular
  • React
  • Bootstrap
  • MaterializeCSS
  • Foundation

Middleware

  • Laravel
  • Node.js con Express.js
  • Docker
  • Jenkins
  • AWS

Gestión

  • Git
  • Jira

Proceso de gestión de un proyecto

Todo proyecto inicia desde el departamento de ventas en donde tras la captación de un cliente se realiza una toma de requisitos de lo que se desea realizar, una evaluación técnica para conocer qué solución tecnológica sería en un principio la más adecuada, la elaboración de una propuesta y por último, la firma del contrato en caso de que el cliente acepte dicha propuesta.

El siguiente departamento involucrado es el de gestión de proyectos, el cual se encarga de realizar un análisis funcional detallado, dar de alta el proyecto en nuestras diferentes herramientas de gestión y repositorios y asignar los recursos pertinentes para su diseño y desarrollo.

El departamento de diseño se encarga de reflejar los requisitos dados y en varios casos incluso colabora a definirlos. Este dependiendo del caso suele realizar: un flujo de navegación, wireframes (de baja y alta fidelidad), un prototipo, un layout y los assets y cotas pertinentes. La colaboración entre el departamento de diseño y técnico es esencial ya que este último tomará lo realizado por el de diseño como base y guía para empezar a desarrollar. Herramientas como Marvel y Zeplin son esenciales para asegurar un correcto acoplamiento ya que permiten reflejar el trabajo realizado por diseño de una forma cercana a los desarrolladores.

El proceso de desarrollo se inicia diseñando la arquitectura del software, el modelo de datos y el modelo de seguridad, así como también el tipo de metodología a emplear. Para esto se suelen realizar diversas reuniones con el equipo asignado. En la mayoría de los casos, solemos utilizar como metodología un SCRUM adaptado, el cual ha tomado forma con el pasar del tiempo. Lo llamamos así ya que no sigue al pie de la letra todo lo definido por la metodología sino lo que mejor se adapte a la compañía o al mismo proyecto. Esto se resume en un conjunto de tareas, las cuales son distribuidas entre los desarrolladores involucrados. Para cada tarea nos aseguramos que se sigan un conjunto de estándares enmarcados por una guía de estilo. Adicionalmente, se realiza revisión de código y control de calidad constantemente.

Tras la realización de varios entregables, cuando se alcanzan todas la expectativas del cliente, se procede con la entrega final y el cierre del proyecto. Se inicia el período de mantenimiento en caso de tenerlo, se entrega una encuesta de satisfacción al cliente para obtener retroalimentación y finalmente, se realiza una reunión de retrospectiva con todo el equipo involucrado.

Casos de éxito

Unas de las aplicaciones que hemos realizado que nos gustaría resaltar son: RACC – Infotransit, Mango, Desigual, FCB Socis, Rocook, Orbita Laika y Shin Chan Kasukabe’s Challange ya que son un claro ejemplo de la diversidad con la que trabajamos. Entre ellas se contemplan temas de alta tendencia como: Realidad Aumentada, Internet de las Cosas, videojuegos, integración con aplicaciones para relojes inteligentes, entre otros.

Actualmente, la tecnología avanza con bastante rapidez y algo fundamental que pensamos que se debe tener al trabajar en esta área es no tener miedo. Mantenerse actualizado nos parece algo fundamental. Sin embargo, antes de emplear una nueva tecnología creemos que se deben realizar un conjunto de pruebas para su validación y evaluar los riesgos que pudiera acarrear.

Nuestro SlashBoy Andrés Álvarez, Software Developer, es el autor de este post.

Recommended Posts

Leave a Comment